Example #1
0
LUALIB_API int luaopen_io (lua_State *L) {
  createmeta(L);
  /* create (private) environment (with fields IO_INPUT, IO_OUTPUT, __close) */
  lua_createtable(L, 2, 1);
  lua_replace(L, LUA_ENVIRONINDEX);
  /* open library */
  luaL_register(L, LUA_IOLIBNAME, iolib);
  /* create (and set) default files */
  createstdfile(L, stdin, IO_INPUT, "stdin");
  createstdfile(L, stdout, IO_OUTPUT, "stdout");
  createstdfile(L, stderr, 0, "stderr");
#if USE_POPEN
  /* create environment for 'popen' */
  lua_getfield(L, -1, "popen");
  lua_createtable(L, 0, 1);
  lua_pushcfunction(L, io_pclose);
  lua_setfield(L, -2, "__close");
  lua_setfenv(L, -2);
  lua_pop(L, 1);  /* pop 'popen' */
#endif
  /* set default close function */
  lua_pushcfunction(L, io_fclose);
  lua_setfield(L, LUA_ENVIRONINDEX, "__close");
  return 1;
}
Example #2
0
LUALIB_API int luaopen_io (lua_State *L) {
    createmeta(L);
#if LUA_OPTIMIZE_MEMORY != 2
    /* create (private) environment (with fields IO_INPUT, IO_OUTPUT, __close) */
    newfenv(L, io_fclose);
    lua_replace(L, LUA_ENVIRONINDEX);
    /* open library */
    luaL_register(L, LUA_IOLIBNAME, iolib);
    newfenv(L, io_noclose);  /* close function for default files */
#else
    luaL_register_light(L, LUA_IOLIBNAME, iolib);
    lua_pushvalue(L, -1);
    lua_setmetatable(L, -2);
#endif
    /* create (and set) default files */
    createstdfile(L, stdin, IO_INPUT, "stdin");
    createstdfile(L, stdout, IO_OUTPUT, "stdout");
    createstdfile(L, stderr, IO_STDERR, "stderr");
#if LUA_OPTIMIZE_MEMORY != 2
    lua_pop(L, 1);  /* pop environment for default files */
    lua_getfield(L, -1, "popen");
    newfenv(L, io_pclose);  /* create environment for 'popen' */
    lua_setfenv(L, -2);  /* set fenv for 'popen' */
    lua_pop(L, 1);  /* pop 'popen' */
#endif
    return 1;
}
Example #3
0
LUAMOD_API int luaopen_io(lua_State *L) {
	luaL_newlib(L, iolib);  /* new module */
	createmeta(L);
	/* create (and set) default files */
	createstdfile(L, stdin, IO_INPUT, "stdin");
	createstdfile(L, stdout, IO_OUTPUT, "stdout");
	createstdfile(L, stderr, NULL, "stderr");
	return 1;
}
Example #4
0
int open_iolibext (lua_State *L) {
#ifdef LuajitTeX
  return luaopen_io(L);
#else
  luaL_newlib(L, iolib);  /* new module */
  createmeta(L);
  /* create (and set) default files */
  createstdfile(L, stdin, IO_INPUT, "stdin");
  createstdfile(L, stdout, IO_OUTPUT, "stdout");
  createstdfile(L, stderr, NULL, "stderr");
  return 1;
#endif
}
Example #5
0
LUALIB_API int luaopen_uio(lua_State *L)
{
    createmeta(L);
    /* create (private) environment (with fields IO_INPUT, IO_OUTPUT, __close) */
    newfenv(L, io_fclose);
    lua_replace(L, LUA_ENVIRONINDEX);
    /* open library */
    luaL_register(L, LUA_IOLIBNAME, iolib);
    /* create (and set) default files */
    newfenv(L, io_noclose);  /* close function for default files */
    createstdfile(L, stdin, IO_INPUT, "stdin");
    createstdfile(L, stdout, IO_OUTPUT, "stdout");
    createstdfile(L, stderr, 0, "stderr");
    lua_pop(L, 1);  /* pop environment for default files */
    lua_getfield(L, -1, "popen");
    newfenv(L, io_pclose);  /* create environment for 'popen' */
    lua_setfenv(L, -2);  /* set fenv for 'popen' */
    lua_pop(L, 1);  /* pop 'popen' */
    return 1;
}
Example #6
0
LUAMOD_API int luaopen_io (lua_State *L) {
#if !LUA_USE_ROTABLE
  luaL_newlib(L, iolib);  /* new module */
  createmeta(L);
  /* create (and set) default files */
  createstdfile(L, stdin, IO_INPUT, "stdin");
  createstdfile(L, stdout, IO_OUTPUT, "stdout");
  createstdfile(L, stderr, NULL, "stderr");
#else
  luaL_newlib(L, io_load_funcs);  /* new module */
  lua_pushvalue(L, -1);
  lua_setmetatable(L, -2); 

  luaL_newmetatable(L, LUA_FILEHANDLE);  /* create metatable for file handles */
  lua_pushvalue(L, -1);  /* push metatable */
  lua_setfield(L, -2, "__index");  /* metatable.__index = metatable */
  luaL_setfuncs(L, flib_load_funcs, 0);  /* add file methods to new metatable */
  lua_pop(L, 1);  /* pop new metatable */

  /* create (and set) default files */
  createstdfile(L, stdin, IO_INPUT, "stdin");
  createstdfile(L, stdout, IO_OUTPUT, "stdout");
  createstdfile(L, stderr, NULL, "stderr");
#endif

  return 1;
}