diff --git a/luachild-scm-1.rockspec b/luachild-scm-1.rockspec index 1405d6d..75a7efd 100644 --- a/luachild-scm-1.rockspec +++ b/luachild-scm-1.rockspec @@ -29,7 +29,7 @@ build = { ["luachild"] = { defines = { "USE_POSIX" }, incdirs = { "./" }, - sources = { "luachild_common.c", "luachild_lua_5_3.c", "luachild_luajit_2_1.c", "luachild_posix.c", "luachild_windows.c", } + sources = { "luachild_common.c", "luachild_lua_5_3.c", "luachild_lua_5_1.c", "luachild_luajit_2_1.c", "luachild_posix.c", "luachild_windows.c", } }, }, }, @@ -39,7 +39,7 @@ build = { ["luachild"] = { defines = { "USE_WINDOWS" }, incdirs = { "./" }, - sources = { "luachild_common.c", "luachild_lua_5_3.c", "luachild_luajit_2_1.c", "luachild_posix.c", "luachild_windows.c", } + sources = { "luachild_common.c", "luachild_lua_5_3.c", "luachild_lua_5_1.c", "luachild_luajit_2_1.c", "luachild_posix.c", "luachild_windows.c", } }, }, }, diff --git a/luachild_lua_5_1.c b/luachild_lua_5_1.c index 2f42d3b..79703a3 100644 --- a/luachild_lua_5_1.c +++ b/luachild_lua_5_1.c @@ -1,5 +1,6 @@ #include "luachild.h" #ifdef USE_LUAPUC +#if LUA_VERSION_NUM == 501 #include #include @@ -40,10 +41,16 @@ int file_handler_creator(lua_State *L, const char * file_path, int get_path_from void lua_pushcfile(lua_State *L, FILE * f){ FILE **pf = (FILE **)lua_newuserdata(L, sizeof(FILE *)); + *pf = f; luaL_getmetatable(L, LUA_FILEHANDLE); lua_setmetatable(L, -2); - *pf = f; + // create and set an env table with a __close function field + lua_createtable(L, 0, 1); + lua_pushcfunction(L, file_close); + lua_setfield(L, -2, "__close"); + lua_setfenv(L, -2); } +#endif // LUA_VERSION_NUM == 501 #endif // USE_LUAPUC diff --git a/luachild_lua_5_3.c b/luachild_lua_5_3.c index 6fdad50..7631c4c 100644 --- a/luachild_lua_5_3.c +++ b/luachild_lua_5_3.c @@ -1,5 +1,6 @@ #include "luachild.h" #ifdef USE_LUAPUC +#if LUA_VERSION_NUM >= 502 #include #include @@ -46,5 +47,6 @@ void lua_pushcfile(lua_State *L, FILE * f){ lf->closef = &file_close; } +#endif // LUA_VERSION_NUM >= 502 #endif // USE_LUAPUC