Date: Tue, 27 Feb 2001 21:21:32 +0200 From: "Eli Zaretskii" Sender: halo1 AT zahav DOT net DOT il To: Martin Str|mberg 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 Precedence: bulk > From: Martin Str|mberg > 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.