diff options
author | Jeremy Huddleston <jeremyhu@freedesktop.org> | 2008-11-28 01:45:37 -0800 |
---|---|---|
committer | Jeremy Huddleston <jeremyhu@freedesktop.org> | 2008-11-28 13:02:41 -0800 |
commit | a9796c7bc43223df44f12a7be08e361aea963ec1 (patch) | |
tree | 80d6e887094aac8e69443837198716fd38a9ecc7 /hw | |
parent | ef4179f43a84d90f867b95ee5974ad26884253b5 (diff) |
XQuarz: Setup our PATH and PWD earlier, so our initial client benefits from it as well...
(cherry picked from commit cbae2b447357b3fed6ff19414c60dd3792045600)
Diffstat (limited to 'hw')
-rw-r--r-- | hw/xquartz/X11Controller.m | 15 | ||||
-rw-r--r-- | hw/xquartz/mach-startup/Makefile.am | 3 | ||||
-rw-r--r-- | hw/xquartz/mach-startup/bundle-main.c | 27 |
3 files changed, 29 insertions, 16 deletions
diff --git a/hw/xquartz/X11Controller.m b/hw/xquartz/X11Controller.m index 233fd4f1d..67a80d34c 100644 --- a/hw/xquartz/X11Controller.m +++ b/hw/xquartz/X11Controller.m @@ -34,8 +34,6 @@ #include <dix-config.h> #endif -#define DEFAULT_PATH "/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/X11/bin" - #include "quartzCommon.h" #import "X11Controller.h" @@ -362,18 +360,7 @@ BOOL xquartz_resetenv_display = NO; snprintf(buf, sizeof(buf), ":%s", display); 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); _exit(2); diff --git a/hw/xquartz/mach-startup/Makefile.am b/hw/xquartz/mach-startup/Makefile.am index 64a53f354..5bcd07bc8 100644 --- a/hw/xquartz/mach-startup/Makefile.am +++ b/hw/xquartz/mach-startup/Makefile.am @@ -1,6 +1,7 @@ AM_CPPFLAGS = \ -DBUILD_DATE=\"$(BUILD_DATE)\" \ - -DXSERVER_VERSION=\"$(VERSION)\" + -DXSERVER_VERSION=\"$(VERSION)\" \ + -DX11BINDIR=\"$(bindir)\" x11appdir = $(APPLE_APPLICATIONS_DIR)/X11.app/Contents/MacOS x11app_PROGRAMS = X11 diff --git a/hw/xquartz/mach-startup/bundle-main.c b/hw/xquartz/mach-startup/bundle-main.c index e58277a9e..2fcd35b4c 100644 --- a/hw/xquartz/mach-startup/bundle-main.c +++ b/hw/xquartz/mach-startup/bundle-main.c @@ -419,6 +419,28 @@ int startup_trigger(int argc, char **argv, char **envp) { 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 ***/ int main(int argc, char **argv, char **envp) { Bool listenOnly = FALSE; @@ -427,7 +449,10 @@ int main(int argc, char **argv, char **envp) { mach_port_t mp; 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; /* Setup the initial crasherporter info */ |