Exemple #1
0
 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);
 }
Exemple #2
0
 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);
 }
Exemple #3
0
        private static int io_tmpfile(lua_State L)
        {
            FilePtr pf = newfile(L);

            pf.file = tmpfile();
            return((pf.file == null) ? pushresult(L, 0, null) : 1);
        }
Exemple #4
0
        /*
        ** 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));
        }
Exemple #5
0
        /*
        ** 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));
        }
Exemple #6
0
        /*
        ** 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);
        }
Exemple #7
0
        /*
        ** 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);
        }
Exemple #8
0
        /*
        ** 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);
        }
Exemple #9
0
        /*
        ** 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);
        }
Exemple #10
0
        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);
        }
Exemple #11
0
        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);
        }
Exemple #12
0
        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);
        }
Exemple #13
0
        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);
        }
Exemple #14
0
        /*
        ** 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 */
            }
        }
Exemple #15
0
 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);
     }
 }
Exemple #16
0
 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);
     }
 }