From 227f5df8429c74fdf8680f98a81ac3e1e444e8d7 Mon Sep 17 00:00:00 2001 From: Lai Jiangshan Date: Tue, 12 Oct 2010 15:14:22 +0800 Subject: [PATCH] virsh: add -- support "--" means no option at the following arguments. Signed-off-by: Lai Jiangshan --- tools/virsh.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/tools/virsh.c b/tools/virsh.c index 255803b67f..bae647000a 100644 --- a/tools/virsh.c +++ b/tools/virsh.c @@ -10469,6 +10469,7 @@ vshCommandParse(vshControl *ctl, vshCommandParser *parser) vshCmdOpt *last = NULL; const vshCmdDef *cmd = NULL; vshCommandToken tk; + bool data_only = false; int data_ct = 0; first = NULL; @@ -10491,8 +10492,10 @@ vshCommandParse(vshControl *ctl, vshCommandParser *parser) goto syntaxError; /* ... or ignore this command only? */ } VIR_FREE(tkdata); - } else if (*tkdata == '-' && *(tkdata + 1) == '-' && *(tkdata + 2) - && c_isalnum(*(tkdata + 2))) { + } else if (data_only) { + goto get_data; + } else if (tkdata[0] == '-' && tkdata[1] == '-' && + c_isalnum(tkdata[2])) { char *optstr = strchr(tkdata + 2, '='); if (optstr) { *optstr = '\0'; /* convert the '=' to '\0' */ @@ -10532,7 +10535,12 @@ vshCommandParse(vshControl *ctl, vshCommandParser *parser) goto syntaxError; } } + } else if (tkdata[0] == '-' && tkdata[1] == '-' && + tkdata[2] == '\0') { + data_only = true; + continue; } else { +get_data: if (!(opt = vshCmddefGetData(cmd, data_ct++))) { vshError(ctl, _("unexpected data '%s'"), tkdata); goto syntaxError;