[cmdline] Fix "isset" command

Commit b5f5f73 ("[cmdline] Expand settings within each command-line
token individually") introduced a regression into the "isset" command:
it is now possible for command-line arguments to be empty strings, and
so "isset" cannot simply check for a non-empty argument list.

Restore previous behaviour by checking for the presence of any
non-empty arguments, rather than checking for a non-empty argument
list.

Reported-by: Nemtallah Daher <n.daher@csuohio.edu>
Tested-by: Nemtallah Daher <n.daher@csuohio.edu>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
pull/5/head
Michael Brown 2011-04-01 20:07:17 +01:00
parent 58dcb2e15e
commit 06f1878fb8
1 changed files with 8 additions and 2 deletions

View File

@ -476,14 +476,20 @@ static struct command_descriptor isset_cmd =
*/ */
static int isset_exec ( int argc, char **argv ) { static int isset_exec ( int argc, char **argv ) {
struct isset_options opts; struct isset_options opts;
int i;
int rc; int rc;
/* Parse options */ /* Parse options */
if ( ( rc = parse_options ( argc, argv, &isset_cmd, &opts ) ) != 0 ) if ( ( rc = parse_options ( argc, argv, &isset_cmd, &opts ) ) != 0 )
return rc; return rc;
/* Return success iff any arguments exist */ /* Return success if any argument is non-empty */
return ( ( optind == argc ) ? -ENOENT : 0 ); for ( i = optind ; i < argc ; i++ ) {
if ( argv[i][0] != '\0' )
return 0;
}
return -ENOENT;
} }
/** "isset" command */ /** "isset" command */