diff options
author | Sergey Poznyakoff <gray@gnu.org> | 2015-12-20 00:50:52 +0200 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org> | 2015-12-20 00:59:25 +0200 |
commit | d479bd2f63445524253e16d8575a0592c266908d (patch) | |
tree | aae2188767328ee7dac100e14ad58ec75eeb35e5 /src/progman.c | |
parent | 84e4b3d5274c599ed30482bfe2ca8af080d936af (diff) | |
download | pies-d479bd2f63445524253e16d8575a0592c266908d.tar.gz pies-d479bd2f63445524253e16d8575a0592c266908d.tar.bz2 |
Bugfixes in init mode
* src/ctl.c (ctl_open): Add missing return.
* src/pies.c (config_parse): Return if tree is null.
(main) [INIT_EMU]: Print more info. Override default init_fifo.
Don't use syslog and control socket if running as init process.
* src/pies.h (init_fifo): New extern.
* src/progman.c (open_redirector): Return -1 if running as init process.
(prog_start): Always initialize redir[].
* src/sysvinit.c (init_fifo): New variable. Use it instead if the
INIT_FIFO macro.
(inittrans): Call create_fifo once, when transiting from boot to
normal state.
Diffstat (limited to 'src/progman.c')
-rw-r--r-- | src/progman.c | 18 |
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)); |