[dropping coreutils, as we are now moving on to what autoconf should document]
On 02/16/2012 11:58 AM, Eric Blake wrote: > As would I. My tests were pretty extensive, hitting some rather old > machines: > > FreeBSD 6.4 > AIX 5.1 > HP-UX 10.20 > IRIX 6.5 > Solaris 2.6 (both /bin/rm and /usr/xpg4/bin/rm) > Tru64 UNIX 5.1 > > In all cases, 'rm' gave a usage message and non-zero status, 'rm -f' was > silent with status 0. What I did not test was NetBSD. After reading what is currently in the autoconf manual, I did a source search, and http://cvsweb.netbsd.org/bsdweb.cgi/src/bin/rm/rm.c.diff?r1=1.46&r2=1.47&only_with_tag=MAIN&f=h shows it was fixed only in May 2008 (arguably as a fix to comply with POSIX, even though POSIX at that time did not require it :) Four years is a relatively long time, do we suspect that NetBSD from that long ago is still in active use? >> so that we could simplify a bunch of automake recipes); but a more extensive >> probing is needed in this matter I guess. And if you are right (as I hope), >> then this 'rm' feature could be documented in the Autoconf manual. > > Yep, I think that's appropriate, as it is unlikely that we will come up > with any counterexamples any time soon. Does this look reasonable, then? docs: tweak 'rm -f' limitations * doc/autoconf.texi (Limitations of Usual Tools) <rm>: More details on 'rm -f' without files. diff --git i/doc/autoconf.texi w/doc/autoconf.texi index 82837a2..eee3234 100644 --- i/doc/autoconf.texi +++ w/doc/autoconf.texi @@ -19225,10 +19225,12 @@ Limitations of Usual Tools @prindex @command{rm} The @option{-f} and @option{-r} options are portable. -It is not portable to invoke @command{rm} without operands. For -example, on many systems @samp{rm -f -r} (with no other arguments) -silently succeeds without doing anything, but it fails with a diagnostic -on NetBSD 2.0.2. +It is not portable to invoke @command{rm} without options or operands. +These days, Posix requires @command{rm -f} (but not @command{rm} in +isolation) to silently succeed when there are no operands (useful for +constructs like @command{rm -rf $filelist} without first checking if +@samp{$filelist} was empty), but this was not always portable; at least +NetBSD @command{rm} built before 2008 would fail with a diagnostic. A file might not be removed even if its parent directory is writable and searchable. Many Posix hosts cannot remove a mount point, a named -- Eric Blake ebl...@redhat.com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature