Tiny refactoring in io.flush

This commit is contained in:
Roberto Ierusalimschy 2025-04-03 12:56:52 -03:00
parent 3f4f28010a
commit 620f49a7aa
2 changed files with 25 additions and 7 deletions

View File

@ -732,18 +732,19 @@ static int f_setvbuf (lua_State *L) {
}
static int io_flush (lua_State *L) {
FILE *f = getiofile(L, IO_OUTPUT);
static int aux_flush (lua_State *L, FILE *f) {
errno = 0;
return luaL_fileresult(L, fflush(f) == 0, NULL);
}
static int f_flush (lua_State *L) {
FILE *f = tofile(L);
errno = 0;
return luaL_fileresult(L, fflush(f) == 0, NULL);
return aux_flush(L, tofile(L));
}
static int io_flush (lua_State *L) {
return aux_flush(L, getiofile(L, IO_OUTPUT));
}

View File

@ -347,7 +347,7 @@ collectgarbage()
assert(io.write(' ' .. t .. ' '))
assert(io.write(';', 'end of file\n'))
f:flush(); io.flush()
assert(f:flush()); assert(io.flush())
f:close()
print('+')
@ -461,6 +461,23 @@ do -- testing closing file in line iteration
end
do print("testing flush")
local f = io.output("/dev/null")
assert(f:write("abcd")) -- write to buffer
assert(f:flush()) -- write to device
assert(f:write("abcd")) -- write to buffer
assert(io.flush()) -- write to device
assert(f:close())
local f = io.output("/dev/full")
assert(f:write("abcd")) -- write to buffer
assert(not f:flush()) -- cannot write to device
assert(f:write("abcd")) -- write to buffer
assert(not io.flush()) -- cannot write to device
assert(f:close())
end
-- test for multipe arguments in 'lines'
io.output(file); io.write"0123456789\n":close()
for a,b in io.lines(file, 1, 1) do