diff options
author | Jeremy Huddleston <jeremyhu@apple.com> | 2011-07-31 09:11:01 -0700 |
---|---|---|
committer | Jeremy Huddleston <jeremyhu@apple.com> | 2011-07-31 09:11:01 -0700 |
commit | 727706ffda344a1a752df296cd230ff3fb3940a5 (patch) | |
tree | 28156b0e51d0bf990d345905b6611c5d6d6e2214 | |
parent | 6543a881708a2a410b51bb5644d9123c847a2908 (diff) |
darwin: Buildfix for Tiger which doesn't have posix_spawn
Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
-rw-r--r-- | launchd/user_startx/launchd_startx.c | 22 |
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); |