On 11/19/2013 11:45 PM, Bernhard Voelker wrote: > On 11/20/2013 03:19 AM, Eric Blake wrote: >> Yes, the 'rm -rf .' case appears to be a regression in coreutils that is >> contrary to the behavior required by POSIX. That is: >> >> $ mkdir /tmp/foo /tmp/foo/sub >> $ cd /tmp/foo >> $ rm -r . >> rm: cannot remove directory: ‘.’ >> $ ls >> sub >> >> appears to be a bug in current coreutils, because it should have >> successfully called rmdir("sub") prior to failing on the attempt to >> rmdir("."). > > I disagree: see at the top of: > > http://pubs.opengroup.org/onlinepubs/9699919799/utilities/rm.html > > If either of the files dot or dot-dot are specified as the basename > portion of an operand (that is, the final pathname component) or if > an operand resolves to the root directory, rm shall write a diagnostic > message to standard error and do nothing more with such operands. Ah, that's where it is. I was looking in the numbered steps, not the paragraph before the numbered steps. So it appears that coreutils is compliant after all. > > Maybe "cannot remove directory" is a bit weak - it's more like > "refusing to remove dot|dot-dot|root directory". Indeed, a clearer error message would be possible. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org