This is the mail archive of the
mailing list for the Cygwin project.
Re: bug with touch t/
- From: "Lemke, Michael SZ/HZA-ZIOM1" <lemkemch at schaeffler dot com>
- To: <cygwin at cygwin dot com>
- Date: Fri, 7 Mar 2008 10:22:17 +0100
- Subject: Re: bug with touch t/
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
> > >
> > > I still think Linux is wrong - t/ is not an existing directory, so
> > > claim that an attempt was made to open an existing directory with
> > > But I guess it is a bit ambiguous, since if t/ did exist, then
> > > should indeed fail with EISDIR; at any rate, it is certainly more
> > > 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
> > get ENOENT automatically (that's what STATUS_OBJECT_NAME_INVALID
> > converted to). However, I'm somewhat puzzled that you used that
> > example:
> > $ : > t/
> > bash: t/: Is a directory.
> > If what you said is right, and if I revert the change to
> > 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
> 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
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.
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html