Showing the changes to src/loadlib.c (1 of 5 files). Show all
Unified · Split
| @@ -1,5 +1,5 @@ | ||
| 1 | 1 | /* |
| 2 | −** $Id: loadlib.c,v 1.107 2011/11/30 12:58:57 roberto Exp $ | |
| 2 | +** $Id: loadlib.c,v 1.108 2011/12/12 16:34:03 roberto Exp $ | |
| 3 | 3 | ** Dynamic library loader for Lua |
| 4 | 4 | ** See Copyright Notice in lua.h |
| 5 | 5 | ** |
| @@ -615,12 +615,25 @@ static int ll_seeall (lua_State *L) { · 609 unmodified lines | ||
| 615 | 615 | /* auxiliary mark (for internal use) */ |
| 616 | 616 | #define AUXMARK "\1" |
| 617 | 617 | |
| 618 | + | |
| 619 | +/* | |
| 620 | +** return registry.LUA_NOENV as a boolean | |
| 621 | +*/ | |
| 622 | +static int noenv (lua_State *L) { | |
| 623 | + int b; | |
| 624 | + lua_getfield(L, LUA_REGISTRYINDEX, "LUA_NOENV"); | |
| 625 | + b = lua_toboolean(L, -1); | |
| 626 | + lua_pop(L, 1); /* remove value */ | |
| 627 | + return b; | |
| 628 | +} | |
| 629 | + | |
| 630 | + | |
| 618 | 631 | static void setpath (lua_State *L, const char *fieldname, const char *envname1, |
| 619 | 632 | const char *envname2, const char *def) { |
| 620 | 633 | const char *path = getenv(envname1); |
| 621 | 634 | if (path == NULL) /* no environment variable? */ |
| 622 | 635 | path = getenv(envname2); /* try alternative name */ |
| 623 | − if (path == NULL) /* no environment variable? */ | |
| 636 | + if (path == NULL || noenv(L)) /* no environment variable? */ | |
| 624 | 637 | lua_pushstring(L, def); /* use default */ |
| 625 | 638 | else { |
| 626 | 639 | /* replace ";;" by ";AUXMARK;" and then AUXMARK by default path */ |