diff options
author | Lennart Poettering <lennart@poettering.net> | 2004-09-20 19:37:28 +0000 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2004-09-20 19:37:28 +0000 |
commit | bb31eda80647dd0f5ec85b5eb26c14ebd0e9d4d1 (patch) | |
tree | ec5a1605739b450f609e91416e5ef53edcacb56a | |
parent | 42bba491a897c996219c8aa01897f5b3cba6e33e (diff) | |
download | pulseaudio-bb31eda80647dd0f5ec85b5eb26c14ebd0e9d4d1.tar.gz |
fix xmms spawn bug
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@224 fefdeb5f-60dc-0310-8127-8f9354f1896f
-rw-r--r-- | doc/todo | 4 | ||||
-rw-r--r-- | polyp/polyplib-context.c | 14 |
2 files changed, 7 insertions, 11 deletions
@@ -1,9 +1,5 @@ *** $Id$ *** -*** 0.5 *** -- xmms segfault when daemon not executable -- update modinfo - *** 0.6 **** - per-channel volume - unix socket directories include user name diff --git a/polyp/polyplib-context.c b/polyp/polyplib-context.c index 8a7c719c2..32ce38885 100644 --- a/polyp/polyplib-context.c +++ b/polyp/polyplib-context.c @@ -388,7 +388,6 @@ static int default_server_is_running(void) { return 1; } - static int context_connect_spawn(struct pa_context *c, const struct pa_spawn_api *api) { pid_t pid; int status, r; @@ -416,26 +415,27 @@ static int context_connect_spawn(struct pa_context *c, const struct pa_spawn_api goto fail; } else if (!pid) { /* Child */ - + char t[128]; const char *state = NULL; #define MAX_ARGS 64 char *argv[MAX_ARGS+1]; - int n = 0; + int n; close(fds[0]); if (api && api->atfork) api->atfork(); - snprintf(t, sizeof(t), "%s=1", ENV_AUTOSPAWNED); - putenv(t); + /* Setup argv */ + n = 0; + argv[n++] = c->conf->daemon_binary; argv[n++] = "--daemonize=yes"; snprintf(t, sizeof(t), "-Lmodule-native-protocol-fd fd=%i", fds[1]); - argv[n++] = t; + argv[n++] = strdup(t); while (n < MAX_ARGS) { char *a; @@ -449,7 +449,7 @@ static int context_connect_spawn(struct pa_context *c, const struct pa_spawn_api argv[n++] = NULL; execv(argv[0], argv); - exit(1); + _exit(1); } /* Parent */ |