diff options
author | Tomas Guisasola <tomas@luaforge.net> | 2004-09-17 15:40:18 +0000 |
---|---|---|
committer | Tomas Guisasola <tomas@luaforge.net> | 2004-09-17 15:40:18 +0000 |
commit | b089b1725e4ba7dfca0d7af66c817f5e77b980de (patch) | |
tree | 3c8d2b0b0e5a7fe898999df0b0a34ac748fa0d3b /lualdap/src | |
parent | Atualizacao da data do copyright. (diff) | |
download | lualdap-b089b1725e4ba7dfca0d7af66c817f5e77b980de.tar.xz lualdap-b089b1725e4ba7dfca0d7af66c817f5e77b980de.zip |
Atualizacao para a versao final da "proposta de pacotes" do Roberto.
Diffstat (limited to 'lualdap/src')
-rwxr-xr-x | lualdap/src/lualdap.c | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/lualdap/src/lualdap.c b/lualdap/src/lualdap.c index b424392..eb87bf3 100755 --- a/lualdap/src/lualdap.c +++ b/lualdap/src/lualdap.c @@ -1,7 +1,7 @@ /* ** LuaLDAP ** See Copyright Notice in license.html -** $Id: lualdap.c,v 1.28 2004-07-09 16:16:32 tomas Exp $ +** $Id: lualdap.c,v 1.29 2004-09-17 15:40:18 tomas Exp $ */ #include <stdlib.h> @@ -944,14 +944,35 @@ static int lualdap_open_simple (lua_State *L) { /* ** Create ldap table and register the open method. */ -int lualdap_libopen (lua_State *L) { +int luaopen_lualdap (lua_State *L) { + const char *name; + int lualdap; + lualdap_createmeta (L); lua_newtable (L); + lualdap = lua_gettop (L); lua_pushliteral (L, "open_simple"); lua_pushcfunction (L, lualdap_open_simple); lua_rawset (L, -3); lua_setglobal (L, LUALDAP_TABLENAME); + /* if Lua 5.0 then Set package.loaded[name] = lualdap */ + if (lua_isstring(L, 1)) + name = lua_tostring (L, 1); + else { + lua_getglobal (L, "arg"); + lua_rawgeti (L, -1, 1); + name = lua_tostring (L, -1); + lua_pop (L, 2); + } + lua_getglobal (L, "package"); + lua_pushliteral (L, "loaded"); + lua_gettable (L, -2); + lua_pushstring (L, name); + lua_pushvalue (L, lualdap); + lua_settable (L, -3); /* package.loaded[name] = lualdap */ + lua_pop (L, 2); + return 1; } |