mirror of https://github.com/Hilbis/Hilbish
feat: cat implementation now uses chunk reading (#290)
parent
16b39fe157
commit
aa376f9b14
|
@ -1,5 +1,12 @@
|
||||||
# 🎀 Changelog
|
# 🎀 Changelog
|
||||||
|
|
||||||
|
## Unreleased
|
||||||
|
### Fixed
|
||||||
|
- `cat` command no longer prints extra newline at end of each file
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- `cat` command now reads files in chunks, allowing for reading large files
|
||||||
|
|
||||||
## [2.2.2] - 2024-04-16
|
## [2.2.2] - 2024-04-16
|
||||||
### Fixed
|
### Fixed
|
||||||
- Line refresh fixes (less flicker)
|
- Line refresh fixes (less flicker)
|
||||||
|
|
|
@ -9,6 +9,8 @@ commander.register('cat', function(args, sinks)
|
||||||
usage: cat [file]...]]
|
usage: cat [file]...]]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local chunkSize = 2^13 -- 8K buffer size
|
||||||
|
|
||||||
for _, fName in ipairs(args) do
|
for _, fName in ipairs(args) do
|
||||||
local f = io.open(fName)
|
local f = io.open(fName)
|
||||||
if f == nil then
|
if f == nil then
|
||||||
|
@ -17,7 +19,11 @@ usage: cat [file]...]]
|
||||||
goto continue
|
goto continue
|
||||||
end
|
end
|
||||||
|
|
||||||
sinks.out:writeln(f:read '*a')
|
while true do
|
||||||
|
local block = f:read(chunkSize)
|
||||||
|
if not block then break end
|
||||||
|
sinks.out:write(block)
|
||||||
|
end
|
||||||
::continue::
|
::continue::
|
||||||
end
|
end
|
||||||
io.flush()
|
io.flush()
|
||||||
|
|
Loading…
Reference in New Issue