]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[parseopt] Allow "prompt" command to accept character literals for --key
authorMichael Brown <mcb30@ipxe.org>
Tue, 27 Mar 2012 18:49:12 +0000 (19:49 +0100)
committerMichael Brown <mcb30@ipxe.org>
Wed, 28 Mar 2012 23:21:19 +0000 (00:21 +0100)
Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/core/parseopt.c
src/image/script.c
src/include/ipxe/parseopt.h

index 2739bd87b3972c59654addf519c9a31739bc30bc..57140690be5d308edebae5bc784bcdac76c33a6f 100644 (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
  *
index fb89e422062aeceb4d42ab357f2a0298f1e0bcd7..460fbf03a414fa54912e4bef2a8a5c928f919bba 100644 (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 ),
 };
index e54dac66eb8e2a1fc3d08a7c3f23aca190c83bdb..b5fd2203b2b43644be38cda792de67e99600dda9 100644 (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 );