qemu-devel
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]