On 03/22/2013 03:34 AM, Christophe Fergeau wrote:
On Thu, Mar 21, 2013 at 09:43:02PM -0600, Eric Blake wrote:
> Expanding everything means re-implementing what the shell does.
> wordexp() would be ideal for this, except that wordexp() is not portable
> enough.
Maybe wordexp() could be used on platform which support it, and on
platforms that do not have it, it would not be used, and env var would not
be expanded?
Or do we want to have identical behaviour for virsh on all platforms to
avoid confusion?
I think the confusion aspect must not be underestimated. If I write a
virsh script on Linux, and then port it to a Windows machine, I would
still want it to have the same effect on my guests. But if I relied on
expansions, which happened to work on Linux but are missing on mingw, my
script would change semantics.
Also, we strive hard to avoid backward-incompatible changes; a script
that was written before expansions, but which used unquoted '$', should
still work after expansions are added. Maybe we could make expansions
be off by default, and provide a new virsh command to opt-in; but at
that point, we are back to the question of why not script the shell to
do it in the first place.
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org