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
I've pushed the result: http://git.sv.gnu.org/cgit/coreutils.git/commit/?id=ccbd3f3b290cb1bb http://git.sv.gnu.org/cgit/coreutils.git/commit/?id=57dd06703cb89ba5