Avoid installing signal handlers that are io-logger specific. Fixes

job control when no io logger is enabled.
This commit is contained in:
Todd C. Miller
2010-04-05 16:27:30 -04:00
parent 81819d0c09
commit 2634cf08cc

View File

@@ -369,7 +369,6 @@ script_execve(struct command_details *details, char *argv[], char *envp[],
/* If stdout is not a tty we handle post-processing differently. */
ttyout = isatty(STDOUT_FILENO);
}
/* Signals to relay from parent to child. */
sa.sa_flags = 0; /* do not restart syscalls for these */
@@ -384,7 +383,7 @@ script_execve(struct command_details *details, char *argv[], char *envp[],
sigaction(SIGTTOU, &sa, NULL);
#endif
if (log_io && foreground) {
if (foreground) {
/* Copy terminal attrs from user tty -> pty slave. */
if (term_copy(script_fds[SFD_USERTTY], script_fds[SFD_SLAVE], ttyout)) {
tty_initialized = 1;
@@ -400,6 +399,7 @@ script_execve(struct command_details *details, char *argv[], char *envp[],
if (!n)
error(1, "Can't set terminal to raw mode");
}
}
/* Set command timeout if specified. */
if (ISSET(details->flags, CD_SET_TIMEOUT))
@@ -956,13 +956,13 @@ sigchild(int s)
if (!tq_empty(&io_plugins))
flags |= WUNTRACED;
else
recvsig = SIGCHLD;
do {
pid = waitpid(child, &child_status, flags);
} while (pid == -1 && errno == EINTR);
if (pid == child) {
if (WIFSTOPPED(child_status))
if (tq_empty(&io_plugins))
recvsig = SIGCHLD;
else if (WIFSTOPPED(child_status))
recvsig = WSTOPSIG(child_status);
}