david/ipxe
david
/
ipxe
Archived
1
0
Fork 0

[parseopt] Allow "prompt" command to accept character literals for --key

Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
Michael Brown 2012-03-27 19:49:12 +01:00
parent aac9718fd6
commit 0b1fe005b3
3 changed files with 21 additions and 2 deletions

View File

@ -26,7 +26,6 @@ FILE_LICENCE ( GPL2_OR_LATER );
#include <errno.h>
#include <getopt.h>
#include <ipxe/netdevice.h>
#include <ipxe/image.h>
#include <ipxe/parseopt.h>
/** @file
@ -129,6 +128,25 @@ int parse_flag ( const char *text __unused, int *flag ) {
return 0;
}
/**
* Parse key
*
* @v text Text
* @ret key Key
* @ret rc Return status code
*/
int parse_key ( const char *text, unsigned int *key ) {
/* Interpret single characters as being a literal key character */
if ( text[0] && ! text[1] ) {
*key = text[0];
return 0;
}
/* Otherwise, interpret as an integer */
return parse_integer ( text, key );
}
/**
* Print command usage message
*

View File

@ -302,7 +302,7 @@ struct prompt_options {
/** "prompt" option list */
static struct option_descriptor prompt_opts[] = {
OPTION_DESC ( "key", 'k', required_argument,
struct prompt_options, key, parse_integer ),
struct prompt_options, key, parse_key ),
OPTION_DESC ( "timeout", 't', required_argument,
struct prompt_options, timeout, parse_integer ),
};

View File

@ -117,6 +117,7 @@ extern int parse_string ( const char *text, const char **value );
extern int parse_integer ( const char *text, unsigned int *value );
extern int parse_netdev ( const char *text, struct net_device **netdev );
extern int parse_flag ( const char *text __unused, int *flag );
extern int parse_key ( const char *text, unsigned int *key );
extern void print_usage ( struct command_descriptor *cmd, char **argv );
extern int reparse_options ( int argc, char **argv,
struct command_descriptor *cmd, void *opts );