Browse Source

preserve PATH

David Rose 15 years ago
parent
commit
cd3dfe6911
1 changed files with 24 additions and 2 deletions
  1. 24 2
      direct/src/plugin/p3dSession.cxx

+ 24 - 2
direct/src/plugin/p3dSession.cxx

@@ -753,6 +753,8 @@ start_p3dpython(P3DInstance *inst) {
     keep_pythonpath = (inst->get_fparams().lookup_token_int("keep_pythonpath") != 0);
   }
 
+  string sys_path = search_path;
+  string ld_path = search_path;
   string dyld_path = search_path;
   string python_path = search_path;
   string prc_path = prc_root + sep + search_path;
@@ -910,13 +912,33 @@ start_p3dpython(P3DInstance *inst) {
     }
   }
 
+  // We also append the original PATH et al to the *end* of the new
+  // definitions, even if keep_user_env is not set.  This is necessary
+  // for os.system() and such to work as expected within the embedded
+  // app.  It's also necessary for webbrowser on Linux.
+  char *orig_path = getenv("PATH");
+  if (orig_path != NULL) {
+    sys_path += sep;
+    sys_path += orig_path;
+  }
+  char *orig_ld_path = getenv("LD_LIBRARY_PATH");
+  if (orig_ld_path != NULL) {
+    ld_path += sep;
+    ld_path += orig_ld_path;
+  }
+  char *orig_dyld_path = getenv("DYLD_LIBRARY_PATH");
+  if (orig_dyld_path != NULL) {
+    dyld_path += sep;
+    dyld_path += orig_dyld_path;
+  }
+
   // Define some new environment variables.
   _env += "PATH=";
-  _env += search_path;
+  _env += sys_path;
   _env += '\0';
 
   _env += "LD_LIBRARY_PATH=";
-  _env += search_path;
+  _env += ld_path;
   _env += '\0';
 
   _env += "DYLD_LIBRARY_PATH=";