www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp-workers/2001/02/27/14:23:04

Date: Tue, 27 Feb 2001 21:21:32 +0200
From: "Eli Zaretskii" <eliz AT is DOT elta DOT co DOT il>
Sender: halo1 AT zahav DOT net DOT il
To: Martin Str|mberg <ams AT ludd DOT luth DOT se>
Message-Id: <9743-Tue27Feb2001212131+0200-eliz@is.elta.co.il>
X-Mailer: Emacs 20.6 (via feedmail 8.3.emacs20_6 I) and Blat ver 1.8.6
CC: djgpp-workers AT delorie DOT com
In-reply-to: <200102262121.WAA21045@mother.ludd.luth.se> (message from Martin
Str|mberg on Mon, 26 Feb 2001 22:21:32 +0100 (MET))
Subject: Re: LFN and FreeDOS
References: <200102262121 DOT WAA21045 AT mother DOT ludd DOT luth DOT se>
Reply-To: djgpp-workers AT delorie DOT com
Errors-To: nobody AT delorie DOT com
X-Mailing-List: djgpp-workers AT delorie DOT com
X-Unsubscribes-To: listserv AT delorie DOT com

> From: Martin Str|mberg <ams AT ludd DOT luth DOT se>
> Date: Mon, 26 Feb 2001 22:21:32 +0100 (MET)
> 
> > 		7100h if function not supported
> > 
> > So it looks like either FreeDOS does not comply to what it should be,
> > or maybe RBIL is inaccurate.
> > 
> > In general, unsupported functions should return something more
> > prominent than just AX = 1, though.
> 
> But FreeDOS does return with carry set indicating failure (all
> according to the RBIL entry above). Should we really ignore that?

We are not ignoring the carry: we are setting errno to the appropriate
value.

There's a problem here: if 71A0h returns with a carry, we _know_ that
some error happened, but we do NOT know that the error means LFN is
not supported.  It might be some other error, e.g. the argument file
name might mention a non-existent drive.

If we know that FreeDOS always returns AX=1, we can add a special
clause for that OS only.  I wouldn't recommend to make a more general
change in _use_lfn, such as allow all AX codes to mean LFN is
unsupported, since the code in _use_lfn is tricky, took several
iterations to get right, and worked more-or-less flawlessly since the
last change.

> BTW, does older DOZE versions (e. g. 5, as you can test it) really
> return with AX = 0x7100? DOZE 6.22 Swedish version does.

Yes, DOS 5.0 returns AX = 7100h; if it didn't, DJGPP wouldn't work for
me on my DOS system ;-).

IIRC, the DOS Int 21h dispatch code is specifically written to return
with AH unchanged and AL=0 for each unsupported function.

- Raw text -


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