diff options
| author | Mike Pall <mike> | 2012-07-16 22:47:01 +0200 |
|---|---|---|
| committer | Mike Pall <mike> | 2012-07-16 22:47:01 +0200 |
| commit | 63bb052bbef88821cc7b24a68a680dc821bc0fb2 (patch) | |
| tree | 39fd0a1369e8448383d69231b31272f6e76d2c6b /src/lib_package.c | |
| parent | bf2d4acf005e301ee593d9b73402967a339aa220 (diff) | |
| download | luajit-63bb052bbef88821cc7b24a68a680dc821bc0fb2.tar.gz luajit-63bb052bbef88821cc7b24a68a680dc821bc0fb2.tar.bz2 luajit-63bb052bbef88821cc7b24a68a680dc821bc0fb2.zip | |
From Lua 5.2: Add -E command line option (ignore env vars).
Diffstat (limited to 'src/lib_package.c')
| -rw-r--r-- | src/lib_package.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/lib_package.c b/src/lib_package.c index 7435f6dc..c04253aa 100644 --- a/src/lib_package.c +++ b/src/lib_package.c | |||
| @@ -517,7 +517,7 @@ static int lj_cf_package_seeall(lua_State *L) | |||
| 517 | #define AUXMARK "\1" | 517 | #define AUXMARK "\1" |
| 518 | 518 | ||
| 519 | static void setpath(lua_State *L, const char *fieldname, const char *envname, | 519 | static void setpath(lua_State *L, const char *fieldname, const char *envname, |
| 520 | const char *def) | 520 | const char *def, int noenv) |
| 521 | { | 521 | { |
| 522 | #if LJ_TARGET_CONSOLE | 522 | #if LJ_TARGET_CONSOLE |
| 523 | const char *path = NULL; | 523 | const char *path = NULL; |
| @@ -525,7 +525,7 @@ static void setpath(lua_State *L, const char *fieldname, const char *envname, | |||
| 525 | #else | 525 | #else |
| 526 | const char *path = getenv(envname); | 526 | const char *path = getenv(envname); |
| 527 | #endif | 527 | #endif |
| 528 | if (path == NULL) { | 528 | if (path == NULL || noenv) { |
| 529 | lua_pushstring(L, def); | 529 | lua_pushstring(L, def); |
| 530 | } else { | 530 | } else { |
| 531 | path = luaL_gsub(L, path, LUA_PATHSEP LUA_PATHSEP, | 531 | path = luaL_gsub(L, path, LUA_PATHSEP LUA_PATHSEP, |
| @@ -562,6 +562,7 @@ static const lua_CFunction package_loaders[] = | |||
| 562 | LUALIB_API int luaopen_package(lua_State *L) | 562 | LUALIB_API int luaopen_package(lua_State *L) |
| 563 | { | 563 | { |
| 564 | int i; | 564 | int i; |
| 565 | int noenv; | ||
| 565 | luaL_newmetatable(L, "_LOADLIB"); | 566 | luaL_newmetatable(L, "_LOADLIB"); |
| 566 | lj_lib_pushcf(L, lj_cf_package_unloadlib, 1); | 567 | lj_lib_pushcf(L, lj_cf_package_unloadlib, 1); |
| 567 | lua_setfield(L, -2, "__gc"); | 568 | lua_setfield(L, -2, "__gc"); |
| @@ -574,8 +575,11 @@ LUALIB_API int luaopen_package(lua_State *L) | |||
| 574 | lua_rawseti(L, -2, i+1); | 575 | lua_rawseti(L, -2, i+1); |
| 575 | } | 576 | } |
| 576 | lua_setfield(L, -2, "loaders"); | 577 | lua_setfield(L, -2, "loaders"); |
| 577 | setpath(L, "path", LUA_PATH, LUA_PATH_DEFAULT); | 578 | lua_getfield(L, LUA_REGISTRYINDEX, "LUA_NOENV"); |
| 578 | setpath(L, "cpath", LUA_CPATH, LUA_CPATH_DEFAULT); | 579 | noenv = lua_toboolean(L, -1); |
| 580 | lua_pop(L, 1); | ||
| 581 | setpath(L, "path", LUA_PATH, LUA_PATH_DEFAULT, noenv); | ||
| 582 | setpath(L, "cpath", LUA_CPATH, LUA_CPATH_DEFAULT, noenv); | ||
| 579 | lua_pushliteral(L, LUA_PATH_CONFIG); | 583 | lua_pushliteral(L, LUA_PATH_CONFIG); |
| 580 | lua_setfield(L, -2, "config"); | 584 | lua_setfield(L, -2, "config"); |
| 581 | luaL_findtable(L, LUA_REGISTRYINDEX, "_LOADED", 16); | 585 | luaL_findtable(L, LUA_REGISTRYINDEX, "_LOADED", 16); |
