Subject: bug#7823: Rm -f fails on non-existant file

From: Eric Blake <[email-masked]>
Date: Tue, 11 Jan 2011 11:50:14 -0700

On 01/11/2011 08:12 AM, Nadav Har'El wrote:
> On Tue, Jan 11, 2011, Eric Blake wrote about "Re: bug#7823: Rm -f fails on non-existant file":
>> Feel free to file a bug report to the smbfs people.  POSIX does not
>> specify EINVAL (except for bad flags to unlinkat), but does have a
>> global clause that states that any errno not specifically listed may be
>> returned if it is a better fit than any mandated error.  On the other
>> hand, the next version of POSIX will be mandating that the case of an
>> unsupported byte in a filename ('*' in the case of smbfs) shall fail
>> with EILSEQ, not EINVAL (that is, if they don't return the equally valid
>> ENOENT failure).  See http://austingroupbugs.net/view.php?id=293, for
>> justification why smbfs ought to change their errno value away from EINVAL.
> 
> Thanks, I'll look at how to send them a bug report as well.
> 
>> Yes, since POSIX doesn't specify EINVAL for any other situation, I see
>> no harm in globally exempting it (with a comment why) in our source
>> code; likewise, I see no problem in also adding EILSEQ to that list,
>> whether or not smbfs also fixes their bug.
>>
>> Is it okay if I push this patch in your name?
> 
> Yes, looks good. Thanks.

Actually, this is a bug fix, so I'm also squashing this NEWS blurb in,
then pushing:

diff --git i/NEWS w/NEWS
index 5a70243..9ccad63 100644
--- i/NEWS
+++ w/NEWS
@@ -10,6 +10,9 @@ GNU coreutils NEWS
-*- outline -*-
   argument following the one containing the moved sub-tree.
   [bug introduced in coreutils-5.1.0]

+  rm -f no longer fails for EINVAL or EILSEQ on file systems that
+  reject file names invalid for that file system.
+

 * Noteworthy changes in release 8.9 (2011-01-04) [stable]

-- 
Eric Blake   [email-masked]    +1-801-349-2682
Libvirt virtualization library http://libvirt.org