Subject: bug#10766: bug#11893: Regression in automake 1.12.1 on Mac OS X

From: Eric Blake <[email-masked]>
Date: Thu, 12 Jul 2012 11:06:07 -0600

On 07/12/2012 10:23 AM, Stefano Lattarini wrote:

>> Other than that, the only supported method in existing POSIX for
>> checking for equal files is by parsing 'ls -i' output; but I don't know
>> if 'ls -i' is portable to ancient hosts.
>>
> I was fearing this would have got quickly complex and messy ...
> 
> So I think I'll stick to my dumber and safer "test -f /bin/RMDIR" as a
> way to detect case-insensible filesystems.

Assuming it was intentional, I like your re-wording of
"case-insensible", as an apt description of the pain case-insensitive
systems cause on portability :)

That said, /bin/RMDIR is probably completely portable, but seems like it
would be reliable in practice.  POSIX doesn't reqiure /bin/rmdir to
exist (about the only files that you can guarantee with POSIX are /tmp,
/dev/null, /dev/tty, and /dev/console).  Since /dev/ generally doesn't
exist on mingw, that almost limits you to just testing if /tmp and /TMP
are the same directory to detect a case-insensitive system.  But I don't
know of any systems that lack /bin/rmdir on a default installation, nor
do I suspect many users intentionally create /bin/RMDIR (or even better,
/bIn/rMdIr), so using it as a hueristic seems okay for a first cut at
the problem at hand.  Or, maybe you should just create a file in /tmp
under one spelling and check existence of the file by another spelling.

-- 
Eric Blake   [email-masked]    +1-919-301-3266
Libvirt virtualization library http://libvirt.org