[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v5 1/2] vl: Allow to define optional parameter with
From: |
Laurent Vivier |
Subject: |
[Qemu-devel] [PATCH v5 1/2] vl: Allow to define optional parameter with -arg[=params] |
Date: |
Mon, 14 Sep 2015 20:01:19 +0200 |
The goal is to be able to use '-help' alone, or with
a sub-section, i.e. '-help=network,usb'.
Signed-off-by: Laurent Vivier <address@hidden>
---
vl.c | 31 ++++++++++++++++++++-----------
1 file changed, 20 insertions(+), 11 deletions(-)
diff --git a/vl.c b/vl.c
index 1c8b28d..586ce55 100644
--- a/vl.c
+++ b/vl.c
@@ -2703,19 +2703,28 @@ static const QEMUOption *lookup_opt(int argc, char
**argv,
error_report("invalid option");
exit(1);
}
- if (!strcmp(popt->name, r + 1))
- break;
- popt++;
- }
- if (popt->flags & HAS_ARG) {
- if (optind >= argc) {
- error_report("requires an argument");
- exit(1);
+ /* manage arg type: -arg[=param] */
+ optarg = strchr(r + 1, '=');
+ if (optarg) {
+ if (!strncmp(popt->name, r + 1, optarg - (r + 1))) {
+ optarg++; /* skip '=' */
+ break;
+ }
+ } else {
+ if (!strcmp(popt->name, r + 1)) {
+ if (popt->flags & HAS_ARG) {
+ if (optind >= argc) {
+ error_report("requires an argument");
+ exit(1);
+ }
+ optarg = argv[optind++];
+ loc_set_cmdline(argv, optind - 2, 2);
+ }
+ break;
+ }
}
- optarg = argv[optind++];
- loc_set_cmdline(argv, optind - 2, 2);
- } else {
optarg = NULL;
+ popt++;
}
*poptarg = optarg;
--
2.1.0