On 07/31/2012 01:36 PM, K Richard Pixley wrote:
> I ran into a problem with an autoconf generated configure script today. 
> The problem is that the path to srcdir includes an ampersand, (several,
> actually).  This confuses the sed "s" commands which are written as
> "s&$foo&$bar&$baz"  as once they are variable expanded, they look like
> "s&x&&y&z&&w&z&&x&".

Is this only a problem with absolute file names, or is it also affecting
you with relative pathnames?  Generally, relative pathnames within a
project should be safe, and it is only absolute pathnames of the parent
directories where odd names can bite you.

> 
> I've worked around it by forcing srcdir to be something else for now,
> although this is inconvenient because srcdir is generated by an
> automatic system.

Inconvenient or not, you'll probably have to continue doing this for a
while longer.

> 
> At the very least, the generated configure script should check for the
> embedded character and produce some useful error message if one is found.

Indeed, this may be the easiest option.  Patches welcome.

> 
> I've looked for a more permanent solution, but the problem is that just
> about any character one might select for the "s" command could,
> conceivably, be part of a valid unix path name these days.  The only
> solution I can think of offhand is to sed the pathname for the special
> character and escape it.  something like this:
> 
> sed -e "s&"`echo $foo | sed -e "s&\&&\\\&&"`"&bar&baz

Improperly quoted and dangerous (the `` output has to be stored in a
temporary variable, otherwise on some broken shells, a Ctrl-C at the
wrong moment will end up invoking 'set -e "s&&bar&bax"').  But such
rewriting tricks have been used before.

-- 
Eric Blake   ebl...@redhat.com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to