aboutsummaryrefslogtreecommitdiff
path: root/src/progman.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/progman.c')
-rw-r--r--src/progman.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/src/progman.c b/src/progman.c
index 4864531..8c33db8 100644
--- a/src/progman.c
+++ b/src/progman.c
@@ -432,7 +432,10 @@ open_redirector (struct prog *master, int stream)
int prio;
char *tag;
fd_set fdset;
-
+
+ if (init_process)
+ return -1;
+
switch (master->v.p.comp->redir[stream].type)
{
case redir_null:
@@ -1160,11 +1163,8 @@ prog_start (struct prog *prog)
return;
}
- if (!init_process)
- {
- redir[RETR_OUT] = open_redirector (prog, RETR_OUT);
- redir[RETR_ERR] = open_redirector (prog, RETR_ERR);
- }
+ redir[RETR_OUT] = open_redirector (prog, RETR_OUT);
+ redir[RETR_ERR] = open_redirector (prog, RETR_ERR);
switch (pid = fork ())
{
@@ -1281,8 +1281,10 @@ prog_start (struct prog *prog)
else if (is_sysvinit (prog->v.p.comp))
sysvinit_acct (SYSV_ACCT_PROC_START, "", prog->tag, pid, "");
- close (redir[RETR_OUT]);
- close (redir[RETR_ERR]);
+ if (redir[RETR_OUT] != -1)
+ close (redir[RETR_OUT]);
+ if (redir[RETR_ERR])
+ close (redir[RETR_ERR]);
prog->pid = pid;
prog->v.p.status = status_enabled;
debug (1, (_("%s started, pid=%lu"), prog->tag, (unsigned long) pid));

Return to:

Send suggestions and report system problems to the System administrator.