about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2023-12-18 09:17:41 +0100
committerptitSeb <sebastien.chev@gmail.com>2023-12-18 09:17:41 +0100
commit6a2f4fb30da1040d1a01c7bd0476234193caf989 (patch)
tree9f6ccd220de59bfeee9d4919c70a76d01f1c9908 /src
parent49b9b70c298622485121d2c61cb2ed40b78a6f7f (diff)
downloadbox64-6a2f4fb30da1040d1a01c7bd0476234193caf989.tar.gz
box64-6a2f4fb30da1040d1a01c7bd0476234193caf989.zip
[STEAM] Improved pressure-vessel emulation
Diffstat (limited to 'src')
-rw-r--r--src/steam.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/steam.c b/src/steam.c
index b221b54f..a5af7377 100644
--- a/src/steam.c
+++ b/src/steam.c
@@ -79,19 +79,27 @@ void pressure_vessel(int argc, const char** argv, int nextarg, const char* prog)
         strcat(sniper, "/files");  // this is the sniper root
         // do LD_LIBRARY_PATH
         {
+            const char* usrsbinldconfig = "/usr/sbin/ldconfig";
+            const char* sbinldconfig = "/sbin/ldconfig";
+            const char* ldconfig = "ldconfig";
+            const char* ldcmd = ldconfig;
+            if(FileExist(usrsbinldconfig, IS_FILE))
+                ldcmd = usrsbinldconfig;
+            else if(FileExist(sbinldconfig, IS_FILE))
+                ldcmd = sbinldconfig;
             char tmp[MAX_PATH*4] = {0};
             // prepare folders, using ldconfig
-            snprintf(tmp, sizeof(tmp), "ldconfig -i -n %s/lib/x86_64-linux-gnu", sniper);
+            snprintf(tmp, sizeof(tmp), "%s -i -n %s/lib/x86_64-linux-gnu", ldcmd, sniper);
             if(system(tmp)<0) printf_log(LOG_INFO, "%s failed\n", tmp);
-            snprintf(tmp, sizeof(tmp), "ldconfig -i -n %s/lib/i386-linux-gnu", sniper);
+            snprintf(tmp, sizeof(tmp), "%s -i -n %s/lib/i386-linux-gnu", ldcmd, sniper);
             if(system(tmp)<0) printf_log(LOG_INFO, "%s failed\n", tmp);
-            snprintf(tmp, sizeof(tmp), "ldconfig -i -n %s/lib", sniper);
+            snprintf(tmp, sizeof(tmp), "%s -i -n %s/lib", ldcmd, sniper);
             if(system(tmp)<0) printf_log(LOG_INFO, "%s failed\n", tmp);
-            snprintf(tmp, sizeof(tmp), "ldconfig -i -n %s/lib64", sniper);
+            snprintf(tmp, sizeof(tmp), "%s -i -n %s/lib64", ldcmd, sniper);
             if(system(tmp)<0) printf_log(LOG_INFO, "%s failed\n", tmp);
             // setup LD_LIBRARY_PATH
             const char* ld = getenv("LD_LIBRARY_PATH");
-            snprintf(tmp, sizeof(tmp), "%s/lib/x86_64-linux-gnu:%s/lib/i386-linux-gnu:%s/lib:%s/lib64:%s", sniper, sniper, sniper, ld?ld:"");
+            snprintf(tmp, sizeof(tmp), "%s/lib/x86_64-linux-gnu:%s/lib/i386-linux-gnu:%s/lib:%s/lib64:%s", sniper, sniper, sniper, sniper, ld?ld:"");
             setenv("LD_LIBRARY_PATH", tmp, 1);
             printf_log(LOG_DEBUG, "setenv(%s, %s, 1)\n", "LD_LIBRARY_PATH", tmp);
         }