XQuarz: Setup our PATH and PWD earlier, so our initial client benefits from it as well...

(cherry picked from commit cbae2b4473)
This commit is contained in:
Jeremy Huddleston 2008-11-28 01:45:37 -08:00
parent ef4179f43a
commit a9796c7bc4
3 changed files with 29 additions and 16 deletions

View File

@ -34,8 +34,6 @@
#include <dix-config.h> #include <dix-config.h>
#endif #endif
#define DEFAULT_PATH "/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/X11/bin"
#include "quartzCommon.h" #include "quartzCommon.h"
#import "X11Controller.h" #import "X11Controller.h"
@ -362,18 +360,7 @@ BOOL xquartz_resetenv_display = NO;
snprintf(buf, sizeof(buf), ":%s", display); snprintf(buf, sizeof(buf), ":%s", display);
setenv("DISPLAY", buf, TRUE); setenv("DISPLAY", buf, TRUE);
} }
temp = getenv("PATH");
if (temp == NULL || temp[0] == 0)
setenv ("PATH", DEFAULT_PATH, TRUE);
else if (strnstr(temp, "/usr/X11/bin", sizeof(temp)) == NULL) {
snprintf(buf, sizeof(buf), "%s:/usr/X11/bin", temp);
setenv("PATH", buf, TRUE);
}
/* cd $HOME */
temp = getenv("HOME");
if (temp != NULL && temp[0]!=0) chdir(temp);
execvp(argv[0], (char **const) argv); execvp(argv[0], (char **const) argv);
_exit(2); _exit(2);

View File

@ -1,6 +1,7 @@
AM_CPPFLAGS = \ AM_CPPFLAGS = \
-DBUILD_DATE=\"$(BUILD_DATE)\" \ -DBUILD_DATE=\"$(BUILD_DATE)\" \
-DXSERVER_VERSION=\"$(VERSION)\" -DXSERVER_VERSION=\"$(VERSION)\" \
-DX11BINDIR=\"$(bindir)\"
x11appdir = $(APPLE_APPLICATIONS_DIR)/X11.app/Contents/MacOS x11appdir = $(APPLE_APPLICATIONS_DIR)/X11.app/Contents/MacOS
x11app_PROGRAMS = X11 x11app_PROGRAMS = X11

View File

@ -419,6 +419,28 @@ int startup_trigger(int argc, char **argv, char **envp) {
return execute(command_from_prefs("startx_script", DEFAULT_STARTX)); return execute(command_from_prefs("startx_script", DEFAULT_STARTX));
} }
/** Setup the environment we want our child processes to inherit */
static void setup_env() {
char buf[1024], *temp;
/* Make sure /usr/X11/bin is in the $PATH */
temp = getenv("PATH");
if(temp == NULL || temp[0] == 0) {
snprintf(buf, sizeof(buf), "/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:%s", X11BINDIR);
setenv("PATH", buf, TRUE);
} else if(strnstr(temp, X11BINDIR, sizeof(temp)) == NULL) {
snprintf(buf, sizeof(buf), "%s:%s", temp, X11BINDIR);
setenv("PATH", buf, TRUE);
}
fprintf(stderr, "PATH: %s\n", getenv("PATH"));
/* cd $HOME */
temp = getenv("HOME");
if(temp != NULL && temp[0] != '\0')
chdir(temp);
}
/*** Main ***/ /*** Main ***/
int main(int argc, char **argv, char **envp) { int main(int argc, char **argv, char **envp) {
Bool listenOnly = FALSE; Bool listenOnly = FALSE;
@ -427,7 +449,10 @@ int main(int argc, char **argv, char **envp) {
mach_port_t mp; mach_port_t mp;
kern_return_t kr; kern_return_t kr;
// The server must not run the PanoramiX operations. /* Setup our environment for our children */
setup_env();
/* The server must not run the PanoramiX operations. */
noPanoramiXExtension = TRUE; noPanoramiXExtension = TRUE;
/* Setup the initial crasherporter info */ /* Setup the initial crasherporter info */