From bb31eda80647dd0f5ec85b5eb26c14ebd0e9d4d1 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 20 Sep 2004 19:37:28 +0000 Subject: fix xmms spawn bug git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@224 fefdeb5f-60dc-0310-8127-8f9354f1896f --- doc/todo | 4 ---- polyp/polyplib-context.c | 14 +++++++------- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/doc/todo b/doc/todo index b857075f..6665de96 100644 --- a/doc/todo +++ b/doc/todo @@ -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 8a7c719c..32ce3888 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 */ -- cgit