瀏覽代碼

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

Signed-off-by: Michael Brown <mcb30@ipxe.org>
tags/v1.20.1
Michael Brown 13 年之前
父節點
當前提交
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
 #include <errno.h>
26
 #include <errno.h>
27
 #include <getopt.h>
27
 #include <getopt.h>
28
 #include <ipxe/netdevice.h>
28
 #include <ipxe/netdevice.h>
29
-#include <ipxe/image.h>
30
 #include <ipxe/parseopt.h>
29
 #include <ipxe/parseopt.h>
31
 
30
 
32
 /** @file
31
 /** @file
129
 	return 0;
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
  * Print command usage message
151
  * Print command usage message
134
  *
152
  *

+ 1
- 1
src/image/script.c 查看文件

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

+ 1
- 0
src/include/ipxe/parseopt.h 查看文件

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

Loading…
取消
儲存