[libvirt] Xen string2sexpr and sexpr2string lose quotes?
Daniel P. Berrange
berrange at redhat.com
Thu Aug 19 13:53:39 UTC 2010
On Tue, Aug 17, 2010 at 08:26:09PM -0700, Thomas Graves wrote:
> Hello all,
>
> I am running xen on rhel5 and using libvirt0.7.2 (I also tried 0.7.7) and it
> looks like the routines string2sexpr and sexpr2string seem to lose the
> quotes around the image args in the configuration.
>
> Has anyone seen this and have a patch for this?
>
> I have the following libvirt config:
> <os>
> <type>linux</type>
> <kernel>/usr/lib/xen/boot/pv-grub-x86_64.gz</kernel>
> <cmdline>(hd0,0)/grub/menu.lst</cmdline>
> </os>
>
> It generates the xm config info:
> (image
> (linux
> (kernel /usr/lib/xen/boot/pv-grub-x86_64.gz)
> (args '(hd0,0)/grub/menu.lst')
> (device_model /usr/lib64/xen/bin/qemu-dm)
> )
> )
>
> I call virDomainSetAutostart on the domain and traced it through and saw
> that it gets the string quoted (args '(hd0,0)/grub/menu.lst') from xen then
> ends up calling string2sexpr, changes the xend_on_start, and then
> sexpr2string, and it ends up without quotes (args (hd0,0)/grub/menu.lst) and
> that is what it sends back to xen. Xen then seems to chop it off to (args
> ('hd0,0'))
Try adding this patch to sexpr2string
index 7e370db..df7057e 100644
--- a/src/xen/sexpr.c
+++ b/src/xen/sexpr.c
@@ -244,7 +244,9 @@ sexpr2string(const struct sexpr * sexpr, char *buffer, size_t n_buffer)
ret += tmp;
break;
case SEXPR_VALUE:
- if (strchr(sexpr->u.value, ' '))
+ if (strchr(sexpr->u.value, ' ') ||
+ strchr(sexpr->u.value, ')') ||
+ strchr(sexpr->u.value, '('))
tmp = snprintf(buffer + ret, n_buffer - ret, "'%s'",
sexpr->u.value);
else
Daniel
--
|: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :|
|: http://libvirt.org -o- http://virt-manager.org -o- http://deltacloud.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|
More information about the libvir-list
mailing list