
On Wed, Mar 14, 2012 at 11:10:24AM -0600, Eric Blake wrote:
On 03/14/2012 10:50 AM, Daniel P. Berrange wrote:
This looks like it is repeating some of the code in virsh.c:vshCommandStringGetArg; any chance we can combine them? In particular, the ability to mimic shell handling of \ escapes, as well as the difference in behavior of \ inside "" vs. '', seems like it will come in handy.
Ah I had forgotten about that code. Can you clarify the difference in \ handling. I guess you mean that inside '', \ can only be used for \\ and \', while inside "", it can do all the standard shell escapes like \t, \n, etc ?
Inside '', \ has no special meaning. (There's no way to escape ' inside of ').
Inside "", \ escapes the next byte (important for " and \, but works on any byte.
Outside quotes, \ escapes the next byte.
And most importantly: concatenating two forms of quoted materials is permitted. Thus:
foo"b'ar\" "\'' blah\'
on input becomes this on output:
foob'ar" ' blah\
What you have here does neither; although I didn't spot any flaw in the code, I don't know if it's the algorithm we want to be using.
I should have sent this paired with my other patch for <cmdline> handling in LXC. That is the intended use case for this function.
I'm not sure that anyone has ever clearly defined what escaping syntax is used for /proc/cmdline (which is what <cmdline> is representing.
Hmm, good point. If it is /bin/sh doing the parsing, then we know the rules (and virsh matches them); but it if is a custom parser in the kernel, the we have to match that custom parser.
Hmm, well actually there are multiple consumers of /proc/cmdline data. - kernel - init - userspace (eg anaconda) What is the betting that everyone has their own rules :-) For LXC's purposes though, we don't care about the kernel, only init. So I guess I should look at what upstart/sysvinit/systemd do for parsing rules Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|