diff options
author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2010-01-11 14:10:47 -0200 |
---|---|---|
committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2010-01-11 14:10:47 -0200 |
commit | a541ada194634c72be5d174159b86ab2aa17a5c3 (patch) | |
tree | 7ef90249f02eddd9a6abd2b8a85cce1a33856285 /loadlib.c | |
parent | 55d31383972aa29fff438973f91f88f372509281 (diff) | |
download | lua-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.c | 21 |
1 files changed, 14 insertions, 7 deletions
@@ -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 | ||
452 | static int loadfunc(lua_State *L, const char *filename, const char *modname) { | 452 | static 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 | ||