summaryrefslogtreecommitdiff
path: root/src/lib_package.c
diff options
context:
space:
mode:
authorMike Pall <mike>2012-07-16 22:47:01 +0200
committerMike Pall <mike>2012-07-16 22:47:01 +0200
commit63bb052bbef88821cc7b24a68a680dc821bc0fb2 (patch)
tree39fd0a1369e8448383d69231b31272f6e76d2c6b /src/lib_package.c
parentbf2d4acf005e301ee593d9b73402967a339aa220 (diff)
downloadluajit2-63bb052bbef88821cc7b24a68a680dc821bc0fb2.tar.gz
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.c12
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)
#define AUXMARK "\1"
static void setpath(lua_State *L, const char *fieldname, const char *envname,
- const char *def)
+ const char *def, int noenv)
{
#if LJ_TARGET_CONSOLE
const char *path = NULL;
@@ -525,7 +525,7 @@ static void setpath(lua_State *L, const char *fieldname, const char *envname,
#else
const char *path = getenv(envname);
#endif
- if (path == NULL) {
+ if (path == NULL || noenv) {
lua_pushstring(L, def);
} else {
path = luaL_gsub(L, path, LUA_PATHSEP LUA_PATHSEP,
@@ -562,6 +562,7 @@ static const lua_CFunction package_loaders[] =
LUALIB_API int luaopen_package(lua_State *L)
{
int i;
+ int noenv;
luaL_newmetatable(L, "_LOADLIB");
lj_lib_pushcf(L, lj_cf_package_unloadlib, 1);
lua_setfield(L, -2, "__gc");
@@ -574,8 +575,11 @@ LUALIB_API int luaopen_package(lua_State *L)
lua_rawseti(L, -2, i+1);
}
lua_setfield(L, -2, "loaders");
- setpath(L, "path", LUA_PATH, LUA_PATH_DEFAULT);
- setpath(L, "cpath", LUA_CPATH, LUA_CPATH_DEFAULT);
+ lua_getfield(L, LUA_REGISTRYINDEX, "LUA_NOENV");
+ noenv = lua_toboolean(L, -1);
+ lua_pop(L, 1);
+ setpath(L, "path", LUA_PATH, LUA_PATH_DEFAULT, noenv);
+ setpath(L, "cpath", LUA_CPATH, LUA_CPATH_DEFAULT, noenv);
lua_pushliteral(L, LUA_PATH_CONFIG);
lua_setfield(L, -2, "config");
luaL_findtable(L, LUA_REGISTRYINDEX, "_LOADED", 16);