summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Huddleston <jeremyhu@freedesktop.org>2008-11-28 01:45:37 -0800
committerJeremy Huddleston <jeremyhu@freedesktop.org>2008-11-28 13:02:41 -0800
commita9796c7bc43223df44f12a7be08e361aea963ec1 (patch)
tree80d6e887094aac8e69443837198716fd38a9ecc7
parentef4179f43a84d90f867b95ee5974ad26884253b5 (diff)
XQuarz: Setup our PATH and PWD earlier, so our initial client benefits from it as well...
(cherry picked from commit cbae2b447357b3fed6ff19414c60dd3792045600)
-rw-r--r--hw/xquartz/X11Controller.m15
-rw-r--r--hw/xquartz/mach-startup/Makefile.am3
-rw-r--r--hw/xquartz/mach-startup/bundle-main.c27
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 */