private static int g_iofile(lua_State L, int f, CharPtr mode) { if (!lua_isnoneornil(L, 1)) { CharPtr filename = lua_tostring(L, 1); if (filename != null) { FilePtr pf = newfile(L); pf.file = fopen(filename, mode); if (pf.file == null) { fileerror(L, 1, filename); } } else { tofile(L); /* check that it's a valid file file */ lua_pushvalue(L, 1); } lua_rawseti(L, LUA_ENVIRONINDEX, f); } /* return current value */ lua_rawgeti(L, LUA_ENVIRONINDEX, f); return(1); }
private static int GIOFile(LuaState L, int f, CharPtr mode) { if (!LuaIsNoneOrNil(L, 1)) { CharPtr filename = LuaToString(L, 1); if (filename != null) { FilePtr pf = NewFile(L); pf.file = fopen(filename, mode); if (pf.file == null) { FileError(L, 1, filename); } } else { ToFile(L); /* check that it's a valid file file */ LuaPushValue(L, 1); } LuaRawSetI(L, LUA_ENVIRONINDEX, f); } /* return current value */ LuaRawGetI(L, LUA_ENVIRONINDEX, f); return(1); }
private static int io_tmpfile(lua_State L) { FilePtr pf = newfile(L); pf.file = tmpfile(); return((pf.file == null) ? pushresult(L, 0, null) : 1); }
/* ** function to close regular files */ private static int io_fclose(lua_State L) { FilePtr p = topfile(L); int ok = (fclose(p.file) == 0) ? 1 : 0; p.file = null; return(pushresult(L, ok, null)); }
/* ** function to close regular files */ private static int IoFClose(LuaState L) { FilePtr p = ToFilePointer(L); int ok = (fclose(p.file) == 0) ? 1 : 0; p.file = null; return(PushResult(L, ok, null)); }
/* ** this function has a separated environment, which defines the ** correct __close for 'popen' files */ private static int io_popen(lua_State L) { CharPtr filename = luaL_checkstring(L, 1); CharPtr mode = luaL_optstring(L, 2, "r"); FilePtr pf = newfile(L); pf.file = lua_popen(L, filename, mode); return((pf.file == null) ? pushresult(L, 0, filename) : 1); }
/* ** When creating file files, always creates a `closed' file file ** before opening the actual file; so, if there is a memory error, the ** file is not left opened. */ private static FilePtr newfile(lua_State L) { FilePtr pf = (FilePtr)lua_newuserdata(L, typeof(FilePtr)); pf.file = null; /* file file is currently `closed' */ luaL_getmetatable(L, LUA_FILEHANDLE); lua_setmetatable(L, -2); return(pf); }
/* ** this function has a separated environment, which defines the ** correct __close for 'popen' files */ private static int IoPopen(LuaState L) { CharPtr filename = LuaLCheckString(L, 1); CharPtr mode = LuaLOptString(L, 2, "r"); FilePtr pf = NewFile(L); pf.file = LuaPopen(L, filename, mode); return((pf.file == null) ? PushResult(L, 0, filename) : 1); }
/* ** When creating file files, always creates a `closed' file file ** before opening the actual file; so, if there is a memory error, the ** file is not left opened. */ private static FilePtr NewFile(LuaState L) { FilePtr pf = (FilePtr)LuaNewUserData(L, typeof(FilePtr)); pf.file = null; /* file file is currently `closed' */ LuaLGetMetatable(L, LUA_FILEHANDLE); LuaSetMetatable(L, -2); return(pf); }
private static StreamProxy tofile(lua_State L) { FilePtr f = topfile(L); if (f.file == null) { luaL_error(L, "attempt to use a closed file"); } return(f.file); }
private static Stream ToFile(LuaState L) { FilePtr f = ToFilePointer(L); if (f.file == null) { LuaLError(L, "attempt to use a closed file"); } return(f.file); }
private static int io_tmpfile(lua_State L) { FilePtr pf = newfile(L); #if XBOX luaL_error(L, "io_tmpfile not supported on Xbox360"); #else pf.file = tmpfile(); #endif return((pf.file == null) ? pushresult(L, 0, null) : 1); }
private static int IoTmpFile(LuaState L) { FilePtr pf = NewFile(L); #if XBOX LuaLError(L, "io_tmpfile not supported on Xbox360"); #else pf.file = tmpfile(); #endif return((pf.file == null) ? PushResult(L, 0, null) : 1); }
/* ** function to close 'popen' files */ private static int io_pclose(lua_State L) { FilePtr p = tofilep(L); int stat = lua_pclose(L, p.file); p.file = null; if (stat == -1) /* error? */ { return(pushresult(L, 0, null)); } else { lua_pushinteger(L, stat); return(1); /* return status */ } }
private static int io_lines(lua_State L) { if (lua_isnoneornil(L, 1)) /* no arguments? */ /* will iterate over default input */ { lua_rawgeti(L, LUA_ENVIRONINDEX, IO_INPUT); return(f_lines(L)); } else { CharPtr filename = luaL_checkstring(L, 1); FilePtr pf = newfile(L); pf.file = fopen(filename, "r"); if (pf.file == null) { fileerror(L, 1, filename); } aux_lines(L, lua_gettop(L), 1); return(1); } }
private static int IoLines(LuaState L) { if (LuaIsNoneOrNil(L, 1)) /* no arguments? */ /* will iterate over default input */ { LuaRawGetI(L, LUA_ENVIRONINDEX, IOINPUT); return(FLines(L)); } else { CharPtr filename = LuaLCheckString(L, 1); FilePtr pf = NewFile(L); pf.file = fopen(filename, "r"); if (pf.file == null) { FileError(L, 1, filename); } AuxLines(L, LuaGetTop(L), 1); return(1); } }