Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
/* * The "loadlib" function for Lua 4.0, * inspired by rborges' work: * (find-shttpw3 "www.tecgraf.puc-rio.br/~rborges/loadlib/") * * This file must be installed as <luasrcdir>/src/lib/lloadlib.c, and * some files have to be patched to make it be included in lualib; * see: (find-es "lua" "loadlib-patch") * and: (find-angg "LUA/loadlib/loadlib.patch") * * If the Elisp hyperlinks above make no sense to you then please * access the htmlized version of this file at: * http://angg.twu.net/LUA/loadlib/lloadlib.c.html * * Written by Eduardo Ochs <http://angg.twu.net/>; version 2001feb25. * Public domain. */ #include <lualib.h> #include <lauxlib.h> #include <dlfcn.h> static int loadlib(lua_State *L) { void *libptr; lua_CFunction f; libptr=dlopen(lua_tostring(L, 1), RTLD_LAZY); if (libptr==0) luaL_argerror(L, 1, "dlopen cannot open shared library"); else { f=dlsym(libptr, lua_tostring(L, 2)); if (f==0) luaL_argerror(L, 2, "dlsym cannot find init function"); else f(L); } return 0; } LUALIB_API void lua_loadlib_open(lua_State *L) { lua_register(L, "loadlib", loadlib); }