X-Authentication-Warning: delorie.com: mailnull set sender to djgpp-workers-bounces using -f Message-ID: <003c01c1ef6a$d6ed91f0$0102a8c0@acceleron> From: "Andrew Cottrell" To: "Charles Sandmann" , Cc: References: <10204282132 DOT AA15860 AT clio DOT rice DOT edu> Subject: Re: _open LFN & Win 2K Bug (Was Re: a bug) Date: Mon, 29 Apr 2002 20:43:57 +1000 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2600.0000 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000 Reply-To: djgpp-workers AT delorie DOT com > > What about characters like <, >, and | -- what happens then? I get the same result from _open(">*.dox", ...) as I did with _open("*dox",...). > They also cause the error to be 123 decimal; so maybe this is a new > special early exit code saying "invalid file name?" Its so much fun > when they give you new features. Keeps the mind trying to find the ball to keep on top of. Here are my results from the _open(">*.dox",....) test: LFN= NO: test.c 13 file >*.dox, desc = 0, errno = 0 open.c 116 filename >*.dox, real_name = >*.dox, errno = 0, oflag= 0 _open.c 31 filename >*.dox, errno = 0, oflag= 0 _open.c 82 filename >*.dox, errno = 0, oflag= 0 _open.c 114 filename >*.dox, errno = 0, oflag= 0 r.x.ax = 3D00 r.x.bx = 54 r.h.ah = 3D r.h.al = 0 r.x.dx = 0 r.x.cx = 0 _open.c 124 filename >*.dox, errno = 0, oflag= 0 result = r.x.ax = 3 _open.c 127 filename >*.dox, errno = 22, oflag= 0 open.c 119 filename >*.dox, real_name = >*.dox, errno = 22, oflag= 0 test.c 17 file >*.dox, desc = -1, errno = 22 Comments: The int21 3D00 function returned 3 in AX which was converted to errno 22. Works correctly LFN= YES: DJGPP_204 D:\dj204\work\open>test test.c 13 file >*.dox, desc = 0, errno = 0 open.c 116 filename >*.dox, real_name = >*.dox, errno = 0, oflag= 0 _open.c 31 filename >*.dox, errno = 0, oflag= 0 _open.c 38 filename >*.dox, errno = 0, oflag= 0 _open.c 54 filename >*.dox, errno = 0, oflag= 0 _open.c 78 filename >*.dox, errno = 0, oflag= 0 _open.c 80 filename >*.dox, errno = 0, oflag= 0 _open.c 82 filename >*.dox, errno = 0, oflag= 0 _open.c 84 filename >*.dox, errno = 0, oflag= 0 _open.c 114 filename >*.dox, errno = 0, oflag= 0 r.x.ax = 716C r.x.bx = 0 r.h.ah = 71 r.h.al = 6C r.x.dx = 1 r.x.cx = 0 _open.c 124 filename >*.dox, errno = 0, oflag= 0 result = r.x.ax = EA _open.c 127 filename >*.dox, errno = 14, oflag= 0 open.c 119 filename >*.dox, real_name = >*.dox, errno = 14, oflag= 0 test.c 17 file >*.dox, desc = -1, errno = 14 Comments: Win XP int21 716C function returned EA in AX which was converted to errno 14. The problem as I can see is that EA is a Netware results and I haven't touched Novel Netware since 1992. I can't see any reason for Windows XP returning EA afte the int21 call.... Any ideas? Charles, is this different on Win 2K? > > > An easy fix would be to change the doserr_to_errno translation table. 100% agree that this appears to be the place to fix the problem, but my only issue is will it work 95+% of the time? We may need to do some more investigation into this over the next 2-3 days to figure it out IMHO. > > > > That'd be probably the easiest fix. Please add a comment there > > explaining what is this for. > > I'd like to see Andrew's comments first to see if we need multiple > changes in the table. I would like to check this out a bit more before proposing a final solution as Charles with W2K has a different result to what I got on XP. This may be our first documented diffrence between 2K and XP, otherwise what caused the difference? Andrew