summaryrefslogtreecommitdiff
path: root/launchd/user_startx
diff options
context:
space:
mode:
authorJeremy Huddleston <jeremyhu@apple.com>2011-07-31 09:11:01 -0700
committerJeremy Huddleston <jeremyhu@apple.com>2011-07-31 09:11:01 -0700
commit727706ffda344a1a752df296cd230ff3fb3940a5 (patch)
tree28156b0e51d0bf990d345905b6611c5d6d6e2214 /launchd/user_startx
parent6543a881708a2a410b51bb5644d9123c847a2908 (diff)
darwin: Buildfix for Tiger which doesn't have posix_spawn
Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
Diffstat (limited to 'launchd/user_startx')
-rw-r--r--launchd/user_startx/launchd_startx.c22
1 files changed, 21 insertions, 1 deletions
diff --git a/launchd/user_startx/launchd_startx.c b/launchd/user_startx/launchd_startx.c
index e3fae76..f83cd61 100644
--- a/launchd/user_startx/launchd_startx.c
+++ b/launchd/user_startx/launchd_startx.c
@@ -34,11 +34,19 @@
#include <unistd.h>
#include <stdio.h>
#include <assert.h>
-#include <spawn.h>
#include <sys/wait.h>
#include <string.h>
#include <stdlib.h>
+/* Using MIN_REQUIRED instead of MAX_ALLOWED logic due to posix_spawn not
+ * being marked with availability macros until 10.7
+ */
+#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1050
+#include <spawn.h>
+#else
+#include <errno.h>
+#endif
+
#include "console_redirect.h"
int main(int argc, char **argv, char **envp) {
@@ -56,7 +64,19 @@ int main(int argc, char **argv, char **envp) {
xi_asl_capture_fd(aslc, NULL, ASL_LEVEL_INFO, STDOUT_FILENO);
xi_asl_capture_fd(aslc, NULL, ASL_LEVEL_NOTICE, STDERR_FILENO);
+#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1050
assert(posix_spawnp(&child, argv[1], NULL, NULL, &argv[1], envp) == 0);
+#else
+ switch(child = fork()) {
+ case -1:
+ perror("fork");
+ return errno;
+ case 0:
+ return execvp(argv[1], &argv[1]);
+ default:
+ break;
+ }
+#endif
wait4(child, &pstat, 0, (struct rusage *)0);