From: Michael Brown Date: Mon, 28 Mar 2011 15:32:30 +0000 (+0100) Subject: [cmdline] Allow ";" as an unconditional command separator X-Git-Tag: v1.20.1~2181 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1f4c5f90c3274d4c287d493ed03194a2253d327e;p=thirdparty%2Fipxe.git [cmdline] Allow ";" as an unconditional command separator It is currently possible to construct a sequence of commands to be executed regardless of success or failure using "|| &&" as the command separator. (The "||" captures the failure case, the blank command converts it to a success case.) Allow ";" to be used as a more visually appealing (and space-efficient) alternative. Signed-off-by: Michael Brown --- diff --git a/src/core/exec.c b/src/core/exec.c index 7ce384437..217ed039e 100644 --- a/src/core/exec.c +++ b/src/core/exec.c @@ -142,6 +142,16 @@ static int process_on_failure ( int rc ) { return ( rc != 0 ); } +/** + * Process next command regardless of status from previous command + * + * @v rc Status of previous command + * @ret process Process next command + */ +static int process_always ( int rc __unused ) { + return 1; +} + /** * Find command terminator * @@ -166,6 +176,10 @@ static int command_terminator ( char **tokens, /* Short-circuit logical AND */ *process_next = process_on_success; return i; + } else if ( strcmp ( tokens[i], ";" ) == 0 ) { + /* Process next command unconditionally */ + *process_next = process_always; + return i; } }