Subject: bug#10305: coreutils-8.14, "rm -r" fails with EBADF

From: "Joachim Schmitz" <[email-masked]>
Date: Fri, 16 Dec 2011 14:02:51 +0100

> From: Jim Meyering [mailto:[email-masked]]
> Sent: Friday, December 16, 2011 11:51 AM
> To: Joachim Schmitz
> Cc: 'Paul Eggert'; [email-masked]; [email-masked]
> Subject: Re: coreutils-8.14, "rm -r" fails with EBADF
> 
> Joachim Schmitz wrote:
> 
> >> From: Paul Eggert [mailto:[email-masked]]
> >> Sent: Thursday, December 15, 2011 7:07 PM
> >> To: Joachim Schmitz
> >> Cc: Jim Meyering; [email-masked]; [email-masked]
> >> Subject: Re: coreutils-8.14, "rm -r" fails with EBADF
> >>
> >> On 12/15/11 08:28, Jim Meyering wrote:
...
> > So... it seems we can't dup() an fd for a directory here!
> 
> Right.
> Your config.h file suggests you're not using a gnulib dup replacement, so
I
> suspect a bug in your system's dup implementation.

Hmm, I can dup() an fd for a directory if or had been open()'d O_RDONLY, but
not if opened O_WRONLY or O_RDWR, I'll get an EISDIR from open() then.

> I thought gnulib had pretty good dup* test coverage, but see that no dup*
test
> uses a directory file descriptor.

Any workaround?