david/ipxe
david
/
ipxe
Archived
1
0
Fork 0

[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 <mcb30@ipxe.org>
This commit is contained in:
Michael Brown 2011-03-28 16:32:30 +01:00
parent 914dc6bfa9
commit 1f4c5f90c3
1 changed files with 14 additions and 0 deletions

View File

@ -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;
}
}