[libvirt] [PATCH 4/4] Use virBufferEscapeShell in cmdEcho
Guido Günther
agx at sigxcpu.org
Thu Oct 13 21:29:03 UTC 2011
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
More information about the libvir-list
mailing list