Преглед изворни кода

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

Signed-off-by: Michael Brown <mcb30@ipxe.org>
tags/v1.20.1
Michael Brown пре 12 година
родитељ
комит
0b1fe005b3
3 измењених фајлова са 21 додато и 2 уклоњено
  1. 19
    1
      src/core/parseopt.c
  2. 1
    1
      src/image/script.c
  3. 1
    0
      src/include/ipxe/parseopt.h

+ 19
- 1
src/core/parseopt.c Прегледај датотеку

@@ -26,7 +26,6 @@ FILE_LICENCE ( GPL2_OR_LATER );
26 26
 #include <errno.h>
27 27
 #include <getopt.h>
28 28
 #include <ipxe/netdevice.h>
29
-#include <ipxe/image.h>
30 29
 #include <ipxe/parseopt.h>
31 30
 
32 31
 /** @file
@@ -129,6 +128,25 @@ int parse_flag ( const char *text __unused, int *flag ) {
129 128
 	return 0;
130 129
 }
131 130
 
131
+/**
132
+ * Parse key
133
+ *
134
+ * @v text		Text
135
+ * @ret key		Key
136
+ * @ret rc		Return status code
137
+ */
138
+int parse_key ( const char *text, unsigned int *key ) {
139
+
140
+	/* Interpret single characters as being a literal key character */
141
+	if ( text[0] && ! text[1] ) {
142
+		*key = text[0];
143
+		return 0;
144
+	}
145
+
146
+	/* Otherwise, interpret as an integer */
147
+	return parse_integer ( text, key );
148
+}
149
+
132 150
 /**
133 151
  * Print command usage message
134 152
  *

+ 1
- 1
src/image/script.c Прегледај датотеку

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

+ 1
- 0
src/include/ipxe/parseopt.h Прегледај датотеку

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

Loading…
Откажи
Сачувај