aboutsummaryrefslogtreecommitdiff
path: root/loadlib.c
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2010-01-11 14:10:47 -0200
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2010-01-11 14:10:47 -0200
commita541ada194634c72be5d174159b86ab2aa17a5c3 (patch)
tree7ef90249f02eddd9a6abd2b8a85cce1a33856285 /loadlib.c
parent55d31383972aa29fff438973f91f88f372509281 (diff)
downloadlua-a541ada194634c72be5d174159b86ab2aa17a5c3.tar.gz
lua-a541ada194634c72be5d174159b86ab2aa17a5c3.tar.bz2
lua-a541ada194634c72be5d174159b86ab2aa17a5c3.zip
"-"-trick in C packages now accept name-v13...
Diffstat (limited to 'loadlib.c')
-rw-r--r--loadlib.c21
1 files changed, 14 insertions, 7 deletions
diff --git a/loadlib.c b/loadlib.c
index 1299bf63..d9af503a 100644
--- a/loadlib.c
+++ b/loadlib.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: loadlib.c,v 1.72 2010/01/04 16:36:39 roberto Exp roberto $ 2** $Id: loadlib.c,v 1.73 2010/01/06 14:35:17 roberto Exp roberto $
3** Dynamic library loader for Lua 3** Dynamic library loader for Lua
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5** 5**
@@ -449,13 +449,20 @@ static int loader_Lua (lua_State *L) {
449} 449}
450 450
451 451
452static int loadfunc(lua_State *L, const char *filename, const char *modname) { 452static int loadfunc (lua_State *L, const char *filename, const char *modname) {
453 const char *funcname; 453 const char *funcname;
454 const char *mark = strchr(modname, *LUA_IGMARK); 454 const char *mark;
455 if (mark) modname = mark + 1; 455 modname = luaL_gsub(L, modname, ".", LUA_OFSEP);
456 funcname = luaL_gsub(L, modname, ".", LUA_OFSEP); 456 mark = strchr(modname, *LUA_IGMARK);
457 funcname = lua_pushfstring(L, POF"%s", funcname); 457 if (mark) {
458 lua_remove(L, -2); /* remove 'gsub' result */ 458 int stat;
459 funcname = lua_pushlstring(L, modname, mark - modname);
460 funcname = lua_pushfstring(L, POF"%s", funcname);
461 stat = ll_loadfunc(L, filename, funcname);
462 if (stat != ERRFUNC) return stat;
463 modname = mark + 1; /* else go ahead and try old-style name */
464 }
465 funcname = lua_pushfstring(L, POF"%s", modname);
459 return ll_loadfunc(L, filename, funcname); 466 return ll_loadfunc(L, filename, funcname);
460} 467}
461 468