diff options
| -rw-r--r-- | engines/sword25/util/lua/loadlib.cpp | 177 | ||||
| -rw-r--r-- | engines/sword25/util/lua/loslib.cpp | 8 | ||||
| -rw-r--r-- | engines/sword25/util/lua/luaconf.h | 14 | 
3 files changed, 1 insertions, 198 deletions
| diff --git a/engines/sword25/util/lua/loadlib.cpp b/engines/sword25/util/lua/loadlib.cpp index e060611450..2549e2bdb1 100644 --- a/engines/sword25/util/lua/loadlib.cpp +++ b/engines/sword25/util/lua/loadlib.cpp @@ -47,182 +47,6 @@ static void *ll_load (lua_State *L, const char *path);  static lua_CFunction ll_sym (lua_State *L, void *lib, const char *sym); - -#if defined(LUA_DL_DLOPEN) -/* -** {======================================================================== -** This is an implementation of loadlib based on the dlfcn interface. -** The dlfcn interface is available in Linux, SunOS, Solaris, IRIX, FreeBSD, -** NetBSD, AIX 4.2, HPUX 11, and  probably most other Unix flavors, at least -** as an emulation layer on top of native functions. -** ========================================================================= -*/ - -#include <dlfcn.h> - -static void ll_unloadlib (void *lib) { -  dlclose(lib); -} - - -static void *ll_load (lua_State *L, const char *path) { -  void *lib = dlopen(path, RTLD_NOW); -  if (lib == NULL) lua_pushstring(L, dlerror()); -  return lib; -} - - -static lua_CFunction ll_sym (lua_State *L, void *lib, const char *sym) { -  lua_CFunction f = (lua_CFunction)dlsym(lib, sym); -  if (f == NULL) lua_pushstring(L, dlerror()); -  return f; -} - -/* }====================================================== */ - - - -#elif defined(LUA_DL_DLL) -/* -** {====================================================================== -** This is an implementation of loadlib for Windows using native functions. -** ======================================================================= -*/ - -#include <windows.h> - - -#undef setprogdir - -static void setprogdir (lua_State *L) { -  char buff[MAX_PATH + 1]; -  char *lb; -  DWORD nsize = sizeof(buff)/sizeof(char); -  DWORD n = GetModuleFileNameA(NULL, buff, nsize); -  if (n == 0 || n == nsize || (lb = strrchr(buff, '\\')) == NULL) -    luaL_error(L, "unable to get ModuleFileName"); -  else { -    *lb = '\0'; -    luaL_gsub(L, lua_tostring(L, -1), LUA_EXECDIR, buff); -    lua_remove(L, -2);  /* remove original string */ -  } -} - - -static void pusherror (lua_State *L) { -  int error = GetLastError(); -  char buffer[128]; -  if (FormatMessageA(FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_FROM_SYSTEM, -      NULL, error, 0, buffer, sizeof(buffer), NULL)) -    lua_pushstring(L, buffer); -  else -    lua_pushfstring(L, "system error %d\n", error); -} - -static void ll_unloadlib (void *lib) { -  FreeLibrary((HINSTANCE)lib); -} - - -static void *ll_load (lua_State *L, const char *path) { -  HINSTANCE lib = LoadLibraryA(path); -  if (lib == NULL) pusherror(L); -  return lib; -} - - -static lua_CFunction ll_sym (lua_State *L, void *lib, const char *sym) { -  lua_CFunction f = (lua_CFunction)GetProcAddress((HINSTANCE)lib, sym); -  if (f == NULL) pusherror(L); -  return f; -} - -/* }====================================================== */ - - - -#elif defined(LUA_DL_DYLD) -/* -** {====================================================================== -** Native Mac OS X / Darwin Implementation -** ======================================================================= -*/ - -#include <mach-o/dyld.h> - - -/* Mac appends a `_' before C function names */ -#undef POF -#define POF	"_" LUA_POF - - -static void pusherror (lua_State *L) { -  const char *err_str; -  const char *err_file; -  NSLinkEditErrors err; -  int err_num; -  NSLinkEditError(&err, &err_num, &err_file, &err_str); -  lua_pushstring(L, err_str); -} - - -static const char *errorfromcode (NSObjectFileImageReturnCode ret) { -  switch (ret) { -    case NSObjectFileImageInappropriateFile: -      return "file is not a bundle"; -    case NSObjectFileImageArch: -      return "library is for wrong CPU type"; -    case NSObjectFileImageFormat: -      return "bad format"; -    case NSObjectFileImageAccess: -      return "cannot access file"; -    case NSObjectFileImageFailure: -    default: -      return "unable to load library"; -  } -} - - -static void ll_unloadlib (void *lib) { -  NSUnLinkModule((NSModule)lib, NSUNLINKMODULE_OPTION_RESET_LAZY_REFERENCES); -} - - -static void *ll_load (lua_State *L, const char *path) { -  NSObjectFileImage img; -  NSObjectFileImageReturnCode ret; -  /* this would be a rare case, but prevents crashing if it happens */ -  if(!_dyld_present()) { -    lua_pushliteral(L, "dyld not present"); -    return NULL; -  } -  ret = NSCreateObjectFileImageFromFile(path, &img); -  if (ret == NSObjectFileImageSuccess) { -    NSModule mod = NSLinkModule(img, path, NSLINKMODULE_OPTION_PRIVATE | -                       NSLINKMODULE_OPTION_RETURN_ON_ERROR); -    NSDestroyObjectFileImage(img); -    if (mod == NULL) pusherror(L); -    return mod; -  } -  lua_pushstring(L, errorfromcode(ret)); -  return NULL; -} - - -static lua_CFunction ll_sym (lua_State *L, void *lib, const char *sym) { -  NSSymbol nss = NSLookupSymbolInModule((NSModule)lib, sym); -  if (nss == NULL) { -    lua_pushfstring(L, "symbol " LUA_QS " not found", sym); -    return NULL; -  } -  return (lua_CFunction)NSAddressOfSymbol(nss); -} - -/* }====================================================== */ - - - -#else  /*  ** {======================================================  ** Fallback for other systems @@ -255,7 +79,6 @@ static lua_CFunction ll_sym (lua_State *L, void *lib, const char *sym) {  }  /* }====================================================== */ -#endif diff --git a/engines/sword25/util/lua/loslib.cpp b/engines/sword25/util/lua/loslib.cpp index 70a67bccf7..035925ceb5 100644 --- a/engines/sword25/util/lua/loslib.cpp +++ b/engines/sword25/util/lua/loslib.cpp @@ -55,13 +55,7 @@ static int os_rename (lua_State *L) {  static int os_tmpname (lua_State *L) { -  char buff[LUA_TMPNAMBUFSIZE]; -  int err; -  lua_tmpnam(buff, err); -  if (err) -    return luaL_error(L, "unable to generate a unique filename"); -  lua_pushstring(L, buff); -  return 1; +  return luaL_error(L, "unable to generate a unique filename");  } diff --git a/engines/sword25/util/lua/luaconf.h b/engines/sword25/util/lua/luaconf.h index fa565c7697..669b0e7a49 100644 --- a/engines/sword25/util/lua/luaconf.h +++ b/engines/sword25/util/lua/luaconf.h @@ -665,24 +665,10 @@ union luai_Cast { double l_d; long l_l; };  @* the file streams.  ** CHANGE it if you have a way to implement it in your system.  */ -#if defined(LUA_USE_POPEN) - -#define lua_popen(L,c,m)	((void)L, fflush(NULL), popen(c,m)) -#define lua_pclose(L,file)	((void)L, (pclose(file) != -1)) - -#elif defined(LUA_WIN) - -#define lua_popen(L,c,m)	((void)L, _popen(c,m)) -#define lua_pclose(L,file)	((void)L, (_pclose(file) != -1)) - -#else -  #define lua_popen(L,c,m)	((void)((void)c, m),  \  		luaL_error(L, LUA_QL("popen") " not supported"), (FILE*)0)  #define lua_pclose(L,file)		((void)((void)L, file), 0) -#endif -  /*  @@ LUA_DL_* define which dynamic-library system Lua should use.  ** CHANGE here if Lua has problems choosing the appropriate | 
