Below I include a suggestion on how to do this sort of version agnostic.
Cheers, Henri Live example on Wandbox: https://wandbox.org/permlink/jEn9kNnPB0t5rwjP --- #include <lauxlib.h> #include <lua.h> #include <lualib.h> #include <assert.h> #include <stdio.h> static int (*lua_os_execute)(lua_State *L) = NULL; static int os_execute(lua_State *L) { // Do whatever printf("Hello Hans!\n"); // Safeguard assert(lua_os_execute != NULL); // Return wrapped return lua_os_execute(L); } LUAMOD_API int luaopen_oslibext(lua_State *L) { lua_getglobal(L, "os"); // Get the address of the original function if (lua_os_execute == NULL) { lua_getfield(L, -1, "execute"); lua_os_execute = lua_tocfunction(L, -1); lua_pop(L, 1); } // Push the new function to overwrite the old one lua_pushcfunction(L, os_execute); lua_setfield(L, -2, "execute"); return 1; } int main(void) { lua_State *L = luaL_newstate(); luaL_openlibs(L); luaopen_oslibext(L); if (luaL_dostring(L, "os.execute([[date]])") != 0) { fprintf(stderr, "%s", lua_tostring(L, -1)); lua_pop(L, 1); } lua_close(L); } On 11/21/19 8:17 PM, Henri Menke wrote:
Dear list, The following Lua script behaves differently when executed in Lua vs. LuaTeX. print(os.execute("date")) It seems that the definition of os_execute in loslibext.c was copied over from Lua 5.1 and not adapted to newer versions. $ lua5.1 test.lua 0 $ lua5.2 test.lua true exit 0 $ lua5.3 test.lua true exit 0 $ texlua test.lua 0 $ luajit test.lua 0 $ texluajit test.lua 0 As you can see from the example, this comes with the additional complication that LuaJIT has Lua 5.1 behaviour and should also retain that. Cheers, Henri
___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://context.aanhet.net archive : https://bitbucket.org/phg/context-mirror/commits/ wiki : http://contextgarden.net ___________________________________________________________________________________