-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrelocate-5.3.patch
67 lines (63 loc) · 2.42 KB
/
relocate-5.3.patch
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
diff -ruN 5.3.4.orig/src/loadlib.c 5.3.4/src/loadlib.c
--- 5.3.4.orig/src/loadlib.c 2017-01-12 09:14:26.000000000 -0800
+++ 5.3.4/src/loadlib.c 2017-02-02 17:27:58.213822634 -0800
@@ -295,13 +295,27 @@
if (path == NULL) /* no environment variable? */
path = getenv(envname); /* try unversioned name */
if (path == NULL || noenv(L)) /* no environment variable? */
+#ifndef _WIN32
+ {
+ lua_getglobal(L, "_LUA_ROOT");
+ luaL_gsub(L, dft, LUA_ROOT, luaL_checkstring(L, -1) );
+ lua_remove(L, -2); // remove LUA_ROOT
+ }
+#else
lua_pushstring(L, dft); /* use default */
+#endif
else {
/* replace ";;" by ";AUXMARK;" and then AUXMARK by default path */
path = luaL_gsub(L, path, LUA_PATH_SEP LUA_PATH_SEP,
LUA_PATH_SEP AUXMARK LUA_PATH_SEP);
- luaL_gsub(L, path, AUXMARK, dft);
- lua_remove(L, -2); /* remove result from 1st 'gsub' */
+ path = luaL_gsub(L, path, AUXMARK, dft);
+#ifndef _WIN32
+ lua_getglobal(L, "LUA_ROOT");
+ luaL_gsub(L, path, LUA_ROOT, luaL_checkstring(L, -1) );
+ lua_remove(L, -2); // remove LUA_ROOT
+ lua_remove(L, -2); // remove AUXMARK->def path
+#endif
+ lua_remove(L, -2); // remove ;; -> AUXMARK path
}
setprogdir(L);
lua_setfield(L, -3, fieldname); /* package[fieldname] = path value */
diff -ruN 5.3.4.orig/src/lua.c 5.3.4/src/lua.c
--- 5.3.4.orig/src/lua.c 2017-01-12 09:14:26.000000000 -0800
+++ 5.3.4/src/lua.c 2017-02-02 17:30:48.910499604 -0800
@@ -13,6 +13,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <libgen.h> //dirname()
#include "lua.h"
@@ -568,6 +569,10 @@
lua_pushboolean(L, 1); /* signal for libraries to ignore env. vars. */
lua_setfield(L, LUA_REGISTRYINDEX, "LUA_NOENV");
}
+#ifndef _WIN32
+ lua_pushfstring(L, "%s/", dirname(dirname(argv[0])));
+ lua_setglobal(L, "_LUA_ROOT");
+#endif
luaL_openlibs(L); /* open standard libraries */
createargtable(L, argv, argc, script); /* create table 'arg' */
if (!(args & has_E)) { /* no option '-E'? */
diff -ruN 5.3.4.orig/src/luaconf.h 5.3.4/src/luaconf.h
--- 5.3.4.orig/src/luaconf.h 2016-12-22 05:08:50.000000000 -0800
+++ 5.3.4/src/luaconf.h 2017-02-02 17:31:33.090502270 -0800
@@ -200,7 +200,7 @@
#else /* }{ */
-#define LUA_ROOT "/usr/local/"
+#define LUA_ROOT ".../"
#define LUA_LDIR LUA_ROOT "share/lua/" LUA_VDIR "/"
#define LUA_CDIR LUA_ROOT "lib/lua/" LUA_VDIR "/"
#define LUA_PATH_DEFAULT \