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 :|