diff --git a/AppRun.c.patch b/AppRun.c.patch index 6db0a8a..10bf595 100644 --- a/AppRun.c.patch +++ b/AppRun.c.patch @@ -1,23 +1,14 @@ --- a/AppRun.c +++ b/AppRun.c -@@ -44,6 +44,8 @@ - - #define LINE_SIZE 255 - -+char *checkrt(char *usr_in_appdir); -+ - int filter(const struct dirent *dir) { - char *p = (char*) &dir->d_name; - p = strrchr(p, '.'); -@@ -156,6 +158,7 @@ +@@ -156,6 +156,7 @@ char *old_env; const int length = 2047; char new_env[8][length+1]; -+ char *optional = checkrt(usr_in_appdir); ++ checkrt(usr_in_appdir); /* https://docs.python.org/2/using/cmdline.html#envvar-PYTHONHOME */ snprintf(new_env[0], length, "PYTHONHOME=%s/usr/", appdir); -@@ -164,7 +167,7 @@ +@@ -164,7 +165,7 @@ snprintf(new_env[1], length, "PATH=%s/usr/bin/:%s/usr/sbin/:%s/usr/games/:%s/bin/:%s/sbin/:%s", appdir, appdir, appdir, appdir, appdir, old_env); old_env = getenv("LD_LIBRARY_PATH") ?: ""; diff --git a/Makefile b/Makefile index 60cb869..4d71d35 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,5 @@ CFLAGS ?= -O2 -Wall -Wextra +CFLAGS += -include checkrt.h LDFLAGS += -s BIN = AppRun_patched diff --git a/checkrt.c b/checkrt.c index e6cffbb..7497162 100644 --- a/checkrt.c +++ b/checkrt.c @@ -44,10 +44,10 @@ #define CXXDIR "optional/libstdc++" #define GCCDIR "optional/libgcc" +char optional[1024]; -char *checkrt(char *usr_in_appdir) +void checkrt(char *usr_in_appdir) { - char path[1024]; int ret; FILE *f; char command[LINE_SIZE]; @@ -99,22 +99,14 @@ char *checkrt(char *usr_in_appdir) if (gcc_bundle_ver > gcc_sys_ver) bundle_gcc = 1; - char *tmp; - if (bundle_cxx == 1 && bundle_gcc == 0) { - sprintf(path, "%s/" CXXDIR ":", usr_in_appdir); - strcpy(tmp, path); - return tmp; + sprintf(optional, "%s/" CXXDIR ":", usr_in_appdir); } else if (bundle_cxx == 0 && bundle_gcc == 1) { - sprintf(path, "%s/" GCCDIR ":", usr_in_appdir); - strcpy(tmp, path); - return tmp; + sprintf(optional, "%s/" GCCDIR ":", usr_in_appdir); } else if (bundle_cxx == 1 && bundle_gcc == 1) { - sprintf(path, "%s/" GCCDIR ":%s/" CXXDIR ":", usr_in_appdir, usr_in_appdir); - strcpy(tmp, path); - return tmp; + sprintf(optional, "%s/" GCCDIR ":%s/" CXXDIR ":", usr_in_appdir, usr_in_appdir); + } else { + sprintf(optional, "%s", ""); } - - return ""; } diff --git a/checkrt.h b/checkrt.h new file mode 100644 index 0000000..1cc9300 --- /dev/null +++ b/checkrt.h @@ -0,0 +1,2 @@ +extern char optional[1024]; +extern void checkrt(char *usr_in_appdir);