From ba92a46710481b968367460fe9a57a2567095bc9 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Mon, 22 Nov 2010 20:41:17 +0000 Subject: [PATCH] [cmdline] Add "isset" command The "isset" command can be used to determine whether or not a setting is present. For example: isset ${net0/ip} || dhcp net0 # If we have no IP address, try DHCP Signed-off-by: Michael Brown --- src/core/exec.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/core/exec.c b/src/core/exec.c index 60d8cb975..f65a4647c 100644 --- a/src/core/exec.c +++ b/src/core/exec.c @@ -381,3 +381,38 @@ struct command exit_command __command = { .exec = exit_exec, }; +/** "isset" options */ +struct isset_options {}; + +/** "isset" option list */ +static struct option_descriptor isset_opts[] = {}; + +/** "isset" command descriptor */ +static struct command_descriptor isset_cmd = + COMMAND_DESC ( struct isset_options, isset_opts, 0, MAX_ARGUMENTS, + "[...]", "" ); + +/** + * "isset" command + * + * @v argc Argument count + * @v argv Argument list + * @ret rc Return status code + */ +static int isset_exec ( int argc, char **argv ) { + struct isset_options opts; + int rc; + + /* Parse options */ + if ( ( rc = parse_options ( argc, argv, &isset_cmd, &opts ) ) != 0 ) + return rc; + + /* Return success iff any arguments exist */ + return ( ( optind == argc ) ? -ENOENT : 0 ); +} + +/** "isset" command */ +struct command isset_command __command = { + .name = "isset", + .exec = isset_exec, +};