about summary refs log tree commit diff stats
path: root/src/steam.c
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2022-03-27 12:33:02 +0200
committerptitSeb <sebastien.chev@gmail.com>2022-03-27 12:33:02 +0200
commitde2b3afa17112423551c757d153df8c73d2e275e (patch)
treecd50771cc0436ac8d2c783b7821143a4ef35b392 /src/steam.c
parent46ab4b5b712ff42198218cc335028c3615346f7a (diff)
downloadbox64-de2b3afa17112423551c757d153df8c73d2e275e.tar.gz
box64-de2b3afa17112423551c757d153df8c73d2e275e.zip
Added BOX64_PREFER_EMULATED handling and special case for pressure-vessel to use it
Diffstat (limited to 'src/steam.c')
-rw-r--r--src/steam.c24
1 files changed, 13 insertions, 11 deletions
diff --git a/src/steam.c b/src/steam.c
index ddbb7c6a..e944c452 100644
--- a/src/steam.c
+++ b/src/steam.c
@@ -22,7 +22,7 @@ void pressure_vessel(int argc, const char** argv, int nextarg)
                 char *p = strchr(tmp, '=');
                 *p ='\0'; ++p;
                 setenv(tmp, p, 1);
-                printf_log(/*LOG_DEBUG*/LOG_INFO, "setenv(%s, %s, 1)\n", tmp, p);
+                printf_log(LOG_DEBUG, "setenv(%s, %s, 1)\n", tmp, p);
             } else if(strstr(argv[nextarg], "--env-if-host=STEAM_RUNTIME_LIBRARY_PATH=")==argv[nextarg]) {
                 // transform RESSURE_VESSEL_APP_LD_LIBRARY_PATH to BOX86_ / BOX64_ LD_LIBRARY_PATH
                 char tmp[strlen(argv[nextarg])];
@@ -31,19 +31,19 @@ void pressure_vessel(int argc, const char** argv, int nextarg)
                 char *p = strchr(tmp, '=');
                 *p ='\0'; ++p;
                 setenv(tmp, p, 1);
-                printf_log(/*LOG_DEBUG*/LOG_INFO, "setenv(%s, %s, 1)\n", tmp, p);
+                printf_log(LOG_DEBUG, "setenv(%s, %s, 1)\n", tmp, p);
                 tmp[3] = '6';
                 tmp[4] = '4';
                 setenv(tmp, p, 1);
-                printf_log(/*LOG_DEBUG*/LOG_INFO, "setenv(%s, %s, 1)\n", tmp, p);
+                printf_log(LOG_DEBUG, "setenv(%s, %s, 1)\n", tmp, p);
             } else if(!strcmp(argv[nextarg], "--")) {
-                printf_log(/*LOG_DEBUG*/LOG_INFO, "End of pressure-vessel-wrap parameters\n");
+                printf_log(LOG_DEBUG, "End of pressure-vessel-wrap parameters\n");
             }else {
-                printf_log(/*LOG_DEBUG*/LOG_INFO, "Ignored parameter: \"%s\"\n", argv[nextarg]);
+                printf_log(LOG_DEBUG, "Ignored parameter: \"%s\"\n", argv[nextarg]);
             }
             ++nextarg;
         }
-    printf_log(/*LOG_DEBUG*/LOG_INFO, "Ready to launch \"%s\", nextarg=%d, argc=%d\n", argv[nextarg], nextarg, argc);
+    printf_log(LOG_DEBUG, "Ready to launch \"%s\", nextarg=%d, argc=%d\n", argv[nextarg], nextarg, argc);
     const char* prog = argv[nextarg];
     my_context = NewBox64Context(argc - nextarg);
     int x86 = my_context->box86path?FileIsX86ELF(argv[nextarg]):0;
@@ -52,17 +52,19 @@ void pressure_vessel(int argc, const char** argv, int nextarg)
     const char** newargv = (const char**)calloc((argc-nextarg)+1+((x86 || x64)?1:0), sizeof(char*));
     if(x86 || x64) {
         newargv[0] = x64?my_context->box64path:my_context->box86path;
-        printf_log(/*LOG_DEBUG*/LOG_INFO, "argv[%d]=\"%s\"\n", 0, newargv[0]);    
+        printf_log(LOG_DEBUG, "argv[%d]=\"%s\"\n", 0, newargv[0]);    
         for(int i=nextarg; i<argc; ++i) {
-            printf_log(/*LOG_DEBUG*/LOG_INFO, "argv[%d]=\"%s\"\n", 1+i-nextarg, argv[i]);    
+            printf_log(LOG_DEBUG, "argv[%d]=\"%s\"\n", 1+i-nextarg, argv[i]);    
             newargv[1+i-nextarg] = argv[i];
         }
     } else {
         for(int i=nextarg; i<argc; ++i) {
-            printf_log(/*LOG_DEBUG*/LOG_INFO, "argv[%d]=\"%s\"\n", i-nextarg, argv[i]);    
+            printf_log(LOG_DEBUG, "argv[%d]=\"%s\"\n", i-nextarg, argv[i]);    
             newargv[i-nextarg] = argv[i];
         }
     }
+    setenv("BOX64_PREFER_EMULATED", "1", 1);
+    setenv("BOX86_PREFER_EMULATED", "1", 1);
 
 //setenv("BOX64_TRACE_FILE", "/home/seb/trace64-%pid.txt", 1);
 //setenv("BOX86_TRACE_FILE", "/home/seb/trace86-%pid.txt", 1);
@@ -71,7 +73,7 @@ void pressure_vessel(int argc, const char** argv, int nextarg)
 //setenv("BOX86_SHOWSEGV", "1", 1);
 //setenv("BOX64_SHOWSEGV", "1", 1);
 
-    printf_log(/*LOG_DEBUG*/LOG_INFO, "Run %s %s and wait\n", x86?"i386":(x64?"x86_64":""), argv[nextarg]);
+    printf_log(LOG_DEBUG, "Run %s %s and wait\n", x86?"i386":(x64?"x86_64":""), argv[nextarg]);
     pid_t v = vfork();
     if(v==-1) {
         printf_log(LOG_NONE, "vfork failed!\n");
@@ -81,7 +83,7 @@ void pressure_vessel(int argc, const char** argv, int nextarg)
     if(!v) {
         // child process, exec the program...
         int ret = execvp(newargv[0], (char * const*)newargv);
-        printf_log(/*LOG_DEBUG*/LOG_INFO, "Error launching program: %d (%s)\n", ret, strerror(errno));
+        printf_log(LOG_DEBUG, "Error launching program: %d (%s)\n", ret, strerror(errno));
         exit(0);
     } else {
         // parent process, wait the end of child