www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp-workers/2002/04/29/06:45:50

X-Authentication-Warning: delorie.com: mailnull set sender to djgpp-workers-bounces using -f
Message-ID: <003c01c1ef6a$d6ed91f0$0102a8c0@acceleron>
From: "Andrew Cottrell" <acottrel AT ihug DOT com DOT au>
To: "Charles Sandmann" <sandmann AT clio DOT rice DOT edu>, <eliz AT is DOT elta DOT co DOT il>
Cc: <djgpp-workers AT delorie DOT com>
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
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



- Raw text -


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