summaryrefslogtreecommitdiffstats
path: root/src/hci/shell.c
diff options
context:
space:
mode:
authorMichael Brown2010-11-29 15:19:59 +0100
committerMichael Brown2010-11-29 15:19:59 +0100
commit7bebe9579ee5ea1cfcfcdf25032dbab80ccc489f (patch)
tree1d9a7812b7b79c1ba5f71af8ce01823cb89763a0 /src/hci/shell.c
parent[parseopt] Allow "0x"-prefixed hexadecimal values in integer-valued options (diff)
downloadipxe-7bebe9579ee5ea1cfcfcdf25032dbab80ccc489f.tar.gz
ipxe-7bebe9579ee5ea1cfcfcdf25032dbab80ccc489f.tar.xz
ipxe-7bebe9579ee5ea1cfcfcdf25032dbab80ccc489f.zip
[cmdline] Match user expectations for &&, ||, goto, and exit
The && and || operators should be left-associative, since that is how they are treated in most other languages (including C and Unix shell). For example, in the command: dhcp net0 && goto dhcp_ok || echo No DHCP on net0 if the "dhcp net0" fails then the "echo" should be executed. After an "exit" or a successful "goto", further commands on the same line should never be executed. For example: goto somewhere && echo This should never be printed exit 0 && echo This should never be printed exit 1 && echo This should never be printed An "exit" should cause the current shell or script to terminate and return the specified exit status to its caller. For example: chain test.ipxe && echo Success || echo Failure [in test.ipxe] #!ipxe exit 0 should echo "Success". Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/hci/shell.c')
-rw-r--r--src/hci/shell.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/src/hci/shell.c b/src/hci/shell.c
index 7bf138a2..3860b2e4 100644
--- a/src/hci/shell.c
+++ b/src/hci/shell.c
@@ -84,8 +84,7 @@ int shell ( void ) {
rc = system ( line );
free ( line );
}
- } while ( shell_exit == 0 );
- shell_exit = 0;
+ } while ( ! shell_stopped ( SHELL_STOP_COMMAND_SEQUENCE ) );
return rc;
}