aboutsummaryrefslogtreecommitdiffstats
path: root/lualdap/src
diff options
context:
space:
mode:
authorTomas Guisasola <tomas@luaforge.net>2004-09-17 15:40:18 +0000
committerTomas Guisasola <tomas@luaforge.net>2004-09-17 15:40:18 +0000
commitb089b1725e4ba7dfca0d7af66c817f5e77b980de (patch)
tree3c8d2b0b0e5a7fe898999df0b0a34ac748fa0d3b /lualdap/src
parentAtualizacao da data do copyright. (diff)
downloadlualdap-b089b1725e4ba7dfca0d7af66c817f5e77b980de.tar.xz
lualdap-b089b1725e4ba7dfca0d7af66c817f5e77b980de.zip
Atualizacao para a versao final da "proposta de pacotes" do Roberto.
Diffstat (limited to 'lualdap/src')
-rwxr-xr-xlualdap/src/lualdap.c25
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;
}