From 1f4c5f90c3274d4c287d493ed03194a2253d327e Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Mon, 28 Mar 2011 16:32:30 +0100 Subject: [PATCH] [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 --- src/core/exec.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/core/exec.c b/src/core/exec.c index 7ce38443..217ed039 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; } }