From mboxrd@z Thu Jan 1 00:00:00 1970 From: Christopher Faylor To: cygwin@cygwin.com Subject: Re: 1.3.2 rmdir fails if CWD is in the directory to be deleted? Date: Sun, 09 Sep 2001 16:40:00 -0000 Message-id: <20010909194056.A11565@redhat.com> References: <5.1.0.14.2.20010908074822.0292ce60@pop3.cris.com> X-SW-Source: 2001-09/msg00449.html On Sun, Sep 09, 2001 at 01:29:55PM +0100, James Youngman wrote: >Randall R Schulz writes: > >> You should try it. On many Unix systems it will work just >> fine. After the rmdir call, no call that uses a relative file name >> will work, however, since the directory must have been empty to be >> removed and in doing so the .. link would have been removed. >> >> This applies to "classic" implementations on the Unix file >> system. Chris has pointed out that IRIX does not behave this >> way. Since those details are not part of the API specifications, the >> implementers get to do what they please. > >The (POSIX)|(X/Open) spec currenly says (about rmdir()) :- > >(38292 ff.) > >> The rmdir( ) function shall remove a directory whose name is given >> by path. The directory shall be removed only if it is an empty >> directory. If the directory is the root directory or the current >> working directory of any process, it is unspecified whether the >> function succeeds, or whether it shall fail and set errno to >> [EBUSY]. If path names a symbolic link, then rmdir( ) shall fail >> and set errno to [ENOTDIR]. >> >> If the directory's link count becomes 0 and no process has the >> directory open, the space occupied by the directory shall be freed >> and the directory shall no longer be accessible. If one or more >> processes have the directory open when the last link is removed, the >> dot and dot-dot entries, if present, shall be removed before rmdir( >> ) returns and no new entries may be created in the directory, but >> the directory shall not be removed until all references to the >> directory are closed. If the directory is not an empty directory, >> rmdir( ) shall fail and set errno to [EEXIST] or [ENOTEMPTY]. > >My reading of this is that if you have a directory open by virtue of >it being your working directory, then it is valid for rmdir() to fail. >If however it is open via opendir(), then the rmdir() must succeed. Hmm. I read "open" as also being "open as the current working directory". In any event, cygwin/windows will fail for both of these situations, I think. cgf -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Bug reporting: http://cygwin.com/bugs.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/