end
end
+--- Turn line and block buffering off. See setbuf(3) for details. setunbuffered
+-- has no error conditions. If an invalid file object is passed, it calls
+-- e2lib.abort() terminating the process.
+-- @param file File object
+function eio.setunbuffered(file)
+ local errstring, rc, re
+
+ rc, re = is_eio_object(file)
+ if not rc then
+ e2lib.abort(re)
+ end
+
+ rc, errstring = leio.setunbuffered(file.handle)
+ if not rc then
+ e2lib.abort(err.new("%s", errstring))
+ end
+end
+
--- Duplicate a file descriptor. See dup(2) for details.
-- @param oldfd File descriptor to duplicate.
-- @param newfd Duplicated file descritor. If the file descriptor was open
return 1;
}
+static int
+eio_setunbuffered(lua_State *lua)
+{
+ FILE *f;
+
+ f = lua_touserdata(lua, 1);
+ if (!f) {
+ lua_pushboolean(lua, 0);
+ lua_pushstring(lua, "eio_setunbuffered: one or more arguments "
+ "of wrong type/missing");
+ return 2;
+ }
+
+ setbuf(f, NULL);
+ lua_pushboolean(lua, 1);
+ return 1;
+}
+
static int
eio_dup2(lua_State *lua)
{
{ "fwrite", eio_fwrite },
{ "pipe", eio_pipe },
{ "setlinebuf", eio_setlinebuf },
+ { "setunbuffered", eio_setunbuffered },
{ NULL, NULL }
};