delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2001/09/09/19:41:13

Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT sources DOT redhat DOT com>
List-Archive: <http://sources.redhat.com/ml/cygwin/>
List-Post: <mailto:cygwin AT sources DOT redhat DOT com>
List-Help: <mailto:cygwin-help AT sources DOT redhat DOT com>, <http://sources.redhat.com/ml/#faqs>
Sender: cygwin-owner AT sources DOT redhat DOT com
Delivered-To: mailing list cygwin AT sources DOT redhat DOT com
Date: Sun, 9 Sep 2001 19:40:56 -0400
From: Christopher Faylor <cgf AT redhat DOT com>
To: cygwin AT cygwin DOT com
Subject: Re: 1.3.2 rmdir fails if CWD is in the directory to be deleted?
Message-ID: <20010909194056.A11565@redhat.com>
Reply-To: cygwin AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
References: <F146hlbgwCpsCXsCLMy0000ad06 AT hotmail DOT com> <5 DOT 1 DOT 0 DOT 14 DOT 2 DOT 20010908074822 DOT 0292ce60 AT pop3 DOT cris DOT com> <x6heuc1r98 DOT fsf AT no-such-thing-as-a DOT free-lunch DOT demon DOT co DOT uk>
Mime-Version: 1.0
In-Reply-To: <x6heuc1r98.fsf@no-such-thing-as-a.free-lunch.demon.co.uk>
User-Agent: Mutt/1.3.21i

On Sun, Sep 09, 2001 at 01:29:55PM +0100, James Youngman wrote:
>Randall R Schulz <rrschulz AT cris DOT com> 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/

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019