delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2008/03/07/04:23:22

X-Recipient: archive-cygwin AT delorie DOT com
X-Spam-Check-By: sourceware.org
MIME-Version: 1.0
Subject: Re: bug with touch t/
Date: Fri, 7 Mar 2008 10:22:17 +0100
Message-ID: <8B3C53FEA05C744284526CAE5170F15904DD6124@de010369.de.ina.com>
From: "Lemke, Michael SZ/HZA-ZIOM1" <lemkemch AT schaeffler DOT com>
To: <cygwin AT cygwin DOT com>
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
X-MIME-Autoconverted: from quoted-printable to 8bit by delorie.com id m279N6Rj021021

On Thu, 6 Mar 2008 16:32:52 +0100, Corinna Vinschen wrote:
> On Mar  6 16:27, Corinna Vinschen wrote:
> > On Mar  6 14:56, Eric Blake wrote:
> > > Corinna Vinschen <corinna-cygwin <at> cygwin.com> writes:
> > > 
> > > > 
> > > > But the flags are not O_RDONLY|O_CREAT.  They are
O_WRONLY|O_CREAT.
> > > 
> > > I still think Linux is wrong - t/ is not an existing directory, so
you can't 
> > > claim that an attempt was made to open an existing directory with
O_WRONLY.  
> > > But I guess it is a bit ambiguous, since if t/ did exist, then
opening t/. 
> > > should indeed fail with EISDIR; at any rate, it is certainly more
efficient to 
> > > blindly reject O_WRONLY due to the trailing slash without even
checking for the 
> > > existence of t.
> > 
> > In our case I added a special case to emit EISDIR, otherwise we
would
> > get ENOENT automatically (that's what STATUS_OBJECT_NAME_INVALID
gets
> > converted to).  However, I'm somewhat puzzled that you used that
bash
> > example:
> > 
> >   $ : > t/
> >   bash: t/: Is a directory.
> > 
> > If what you said is right, and if I revert the change to
fhandler.cc,
> > we would get a ENOENT in that case, too.  And given your arguments,
> > that should be correct.
> > 
> > Do you agree?
> 
> I should add that I'm still rather leaning towards the Linux
behaviour.
> I tested this on Solaris 10, and it behaves again different.  In both
> examples open(2) returns with ENOTDIR.


And for what it's worth, on AIX 5.3 they succeed:

open("t/", O_WRONLY|O_CREAT|O_LARGEFILE)        = 3
open("t/", O_RDONLY|O_CREAT|O_LARGEFILE)        = 3

But:
open("t/.", O_WRONLY|O_CREAT|O_LARGEFILE)       Err#2  ENOENT
open("t/.", O_RDONLY|O_CREAT|O_LARGEFILE)       Err#2  ENOENT


And so they do on Solaris 8:

open64("t/", O_WRONLY|O_CREAT|O_LARGEFILE, 0666) = 3
open64("t/", O_RDONLY|O_CREAT|O_LARGEFILE, 0666) = 3

open64("t/.", O_WRONLY|O_CREAT|O_LARGEFILE, 0666) Err#2 ENOENT
open64("t/.", O_RDONLY|O_CREAT|O_LARGEFILE, 0666) Err#2 ENOENT


So it's the same on both OS and Linux is different.

Michael

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.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