summaryrefslogtreecommitdiff
path: root/builtins/evalstring.c
diff options
context:
space:
mode:
authorChet Ramey <chet.ramey@case.edu>2015-01-12 11:03:15 -0500
committerChet Ramey <chet.ramey@case.edu>2015-01-12 11:03:15 -0500
commit8f50a0236cb46d13d4cb2387a77c38d56219cb29 (patch)
tree3433144a9db9edd6b55e2bd306bfd5eaa6be02d4 /builtins/evalstring.c
parent02a413f6437fd4c737b4fc29c14ac74b2ab94f95 (diff)
downloadbash-8f50a0236cb46d13d4cb2387a77c38d56219cb29.tar.gz
commit bash-20150102 snapshot
Diffstat (limited to 'builtins/evalstring.c')
-rw-r--r--builtins/evalstring.c22
1 files changed, 14 insertions, 8 deletions
diff --git a/builtins/evalstring.c b/builtins/evalstring.c
index b8598fc7..85481db2 100644
--- a/builtins/evalstring.c
+++ b/builtins/evalstring.c
@@ -96,6 +96,19 @@ restore_lastcom (x)
the_printed_command_except_trap = x;
}
+int
+should_suppress_fork (command)
+ COMMAND *command;
+{
+ return (startup_state == 2 && parse_and_execute_level == 1 &&
+ running_trap == 0 &&
+ *bash_input.location.string == '\0' &&
+ command->type == cm_simple &&
+ signal_is_trapped (EXIT_TRAP) == 0 &&
+ command->redirects == 0 && command->value.Simple->redirects == 0 &&
+ ((command->flags & CMD_TIME_PIPELINE) == 0) &&
+ ((command->flags & CMD_INVERT_RETURN) == 0));
+}
/* How to force parse_and_execute () to clean up after itself. */
void
parse_and_execute_cleanup ()
@@ -357,14 +370,7 @@ parse_and_execute (string, from_file, flags)
* THEN
* tell the execution code that we don't need to fork
*/
- if (startup_state == 2 && parse_and_execute_level == 1 &&
- running_trap == 0 &&
- *bash_input.location.string == '\0' &&
- command->type == cm_simple &&
- signal_is_trapped (EXIT_TRAP) == 0 &&
- command->redirects == 0 && command->value.Simple->redirects == 0 &&
- ((command->flags & CMD_TIME_PIPELINE) == 0) &&
- ((command->flags & CMD_INVERT_RETURN) == 0))
+ if (should_suppress_fork (command))
{
command->flags |= CMD_NO_FORK;
command->value.Simple->flags |= CMD_NO_FORK;