
On Thu, Oct 13, 2011 at 11:03:05PM +0200, Guido Günther wrote:
--- tools/virsh.c | 25 +++++-------------------- 1 files changed, 5 insertions(+), 20 deletions(-)
I just noticed that this breaks the testsuite for two reasons: cmdEcho emits '' in case of an *arg == 0 and it also allows for --shell --xml which I didn't think is useful at first but it actually is. I'll come up with a new version. Cheers, -- Guido
diff --git a/tools/virsh.c b/tools/virsh.c index bcf0603..fe1a224 100644 --- a/tools/virsh.c +++ b/tools/virsh.c @@ -12340,27 +12340,12 @@ cmdEcho (vshControl *ctl ATTRIBUTE_UNUSED, const vshCmd *cmd) arg = opt->data; if (count) virBufferAddChar(&buf, ' '); - /* Add outer '' only if arg included shell metacharacters. */ - if (shell && - (strpbrk(arg, "\r\t\n !\"#$&'()*;<>?[\\]^`{|}~") || !*arg)) { - virBufferAddChar(&buf, '\''); - close_quote = true; - } - if (xml) { + if (xml) virBufferEscapeString(&buf, "%s", arg); - } else { - if (shell && (q = strchr(arg, '\''))) { - do { - virBufferAdd(&buf, arg, q - arg); - virBufferAddLit(&buf, "'\\''"); - arg = q + 1; - q = strchr(arg, '\''); - } while (q); - } - virBufferAdd(&buf, arg, strlen(arg)); - } - if (close_quote) - virBufferAddChar(&buf, '\''); + else if (shell) + virBufferEscapeShell(&buf, arg); + else + virBufferAdd(&buf, arg, -1); count++; }
-- 1.7.6.3