GNU bug report logs - #12339
Bug: rm -fr . doesn't dir depth first deletion yet it is documented to do so.

Previous Next

Package: coreutils;

Reported by: Linda Walsh <coreutils <at> tlinx.org>

Date: Mon, 3 Sep 2012 00:34:02 UTC

Severity: normal

Done: Assaf Gordon <assafgordon <at> gmail.com>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Linda Walsh <coreutils <at> tlinx.org>
To: Jim Meyering <jim <at> meyering.net>
Cc: Paul Eggert <eggert <at> cs.ucla.edu>, "12339 <at> debbugs.gnu.org" <12339 <at> debbugs.gnu.org>
Subject: bug#12339: Bug: rm -fr . doesn't dir depth first deletion yet it is	documented to do so.
Date: Wed, 05 Sep 2012 14:06:02 -0700
Thanks for the efforts at cleaning things up...it's appreciated
even if it's not exactly what  I might want...just wanted to
emphasize that your I appreciate the work you are doing!..

I just don't always appreciate the 'posixifing' of linux's default
behavior...but then I like powerful interface that allow me to shoot
myself in the foot if I really want to! ;-)



Jim Meyering wrote:
> Paul Eggert wrote:
> 
>> On 09/05/2012 07:56 AM, Jim Meyering wrote:
>>> +  /* When failing to rmdir an unreadable directory, the typical errno value
>>> +     is EISDIR or ENOTDIR, but that would be meaningless in a diagnostic.
>>> +     When that happens and the errno value from the failed open is EPERM
>>> +     or EACCES, use the earlier, more descriptive errno value.  */
>>> +  if (ent->fts_info == FTS_DNR
>>> +      && (errno == ENOTEMPTY || errno == EISDIR || errno == ENOTDIR)
>>> +      && (ent->fts_errno == EPERM || ent->fts_errno == EACCES))
>> Thanks for doing all that.  I did notice that the code mentions
>> ENOTEMPTY but the comment doesn't -- is that intentional?
> 
> Yes.  I considered whether to remove explicit mention of those errno
> values in the comment for precisely that reason, but didn't bother.
> Good point.  I've relaxed the comment wording enough to permit other
> explicit E* names:
> 
> diff --git a/src/remove.c b/src/remove.c
> index 0c25462..a141718 100644
> --- a/src/remove.c
> +++ b/src/remove.c
> @@ -392,8 +392,8 @@ excise (FTS *fts, FTSENT *ent, struct rm_options const *x, bool is_dir)
>    if (ignorable_missing (x, errno))
>      return RM_OK;
> 
> -  /* When failing to rmdir an unreadable directory, the typical errno value
> -     is EISDIR or ENOTDIR, but that would be meaningless in a diagnostic.
> +  /* When failing to rmdir an unreadable directory, we see errno values
> +     like EISDIR or ENOTDIR, but they would be meaningless in a diagnostic.
>       When that happens and the errno value from the failed open is EPERM
>       or EACCES, use the earlier, more descriptive errno value.  */
>    if (ent->fts_info == FTS_DNR




This bug report was last modified 6 years and 187 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.