diff options
| author | Chet Ramey <chet.ramey@case.edu> | 2015-01-12 11:03:15 -0500 |
|---|---|---|
| committer | Chet Ramey <chet.ramey@case.edu> | 2015-01-12 11:03:15 -0500 |
| commit | 8f50a0236cb46d13d4cb2387a77c38d56219cb29 (patch) | |
| tree | 3433144a9db9edd6b55e2bd306bfd5eaa6be02d4 /builtins/evalstring.c | |
| parent | 02a413f6437fd4c737b4fc29c14ac74b2ab94f95 (diff) | |
| download | bash-8f50a0236cb46d13d4cb2387a77c38d56219cb29.tar.gz | |
commit bash-20150102 snapshot
Diffstat (limited to 'builtins/evalstring.c')
| -rw-r--r-- | builtins/evalstring.c | 22 |
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; |
