On 08/04/2012 12:15 PM, Stefano Lattarini wrote:
> On current OpenIndiana (based on what once was OpenSolaris 11), the shell
> /bin/sh (which, differently from what happens on Solaris, is a true POSIX
> shell, thus worthy of consideration) somehow manages to "eat" the
> error message from 'rm' when that fails to remove a file due to lacking
> permission on the parent directory:
>
> $ /bin/sh -c "cd unwritable-dir || { echo OOPS; exit 1; }; rm -f foo"
> $ echo rc = $?
> rc = 1
> $ /bin/bash -c "cd unwritable-dir || { echo OOPS; exit 1; }; rm -f foo"
> rm: foo not removed: Permission denied
> $ echo rc = $?
> rc = 2
> $ /bin/sh -c "cd unwritable-dir || { echo OOPS; exit 1; }; env rm -f foo"
> rm: foo not removed: Permission denied
> $ echo rc = $?
> rc = 2
>
> That is probably due to an improper optimization, that is, the shell tries
> to be smart and remove the file itself instead of invoking 'rm', but fails
> spectacularly in the attempt.Oh my. Probably worth documenting in autoconf's list of shell programming pitfalls. > > -# Make it harder to experience false postives when grepping error messages. s/postives/positives/ > +# Weird name, to make it harder to experience false positives when > +# grepping error messages. > inst=__inst-dir__ > > ./configure --prefix="$(pwd)/$inst" > -- Eric Blake [email protected] +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature
