--- a/AppRun.c +++ b/AppRun.c @@ -38,7 +38,7 @@ exit( 1 ); \ } while (0); -#define NEW_LD_LIBRARY_PATH "LD_LIBRARY_PATH=./lib/:./lib/i386-linux-gnu/:./lib/x86_64-linux-gnu/:./lib32/:./lib64/:../lib/:../lib/i386-linux-gnu/:../lib/x86_64-linux-gnu/:../lib32/:../lib64/:%s" +#define NEW_LD_LIBRARY_PATH "LD_LIBRARY_PATH=%s./lib/:./lib/i386-linux-gnu/:./lib/x86_64-linux-gnu/:./lib32/:./lib64/:../lib/:../lib/i386-linux-gnu/:../lib/x86_64-linux-gnu/:../lib32/:../lib64/:%s" #define NEW_PATH "PATH=./bin/:./sbin/:./games/:../bin/:../sbin/:%s" #define NEW_PYTHONPATH "PYTHONPATH=./share/pyshared/:%s" #define NEW_XDG_DATA_DIRS "XDG_DATA_DIRS=./share/:%s" @@ -138,8 +138,8 @@ char *env, *new_env[7]; env = getenv("LD_LIBRARY_PATH") ?: ""; - new_env[0] = malloc( strlen(NEW_LD_LIBRARY_PATH) + strlen(env) ); - sprintf( new_env[0], NEW_LD_LIBRARY_PATH, env ); + new_env[0] = malloc( strlen(NEW_LD_LIBRARY_PATH) + strlen(optional) + strlen(env) ); + sprintf( new_env[0], NEW_LD_LIBRARY_PATH, optional, env ); // printf( " using %s\n", new_env[0] ); putenv( new_env[0] ); @@ -179,6 +179,11 @@ // printf( " using %s\n", new_env[6] ); putenv( new_env[6] ); + checkrt(); + + if (optional_ld_preload) + putenv(optional_ld_preload); + /* Run */ ret = execvp(executable, argv); @@ -187,6 +192,9 @@ die( "Error executing '%s'; return code: %d\n", executable, ret ); } + free(optional); + if (optional_ld_preload) + free(optional_ld_preload); free(new_env[6]); free(new_env[5]); free(new_env[4]);