Mail Archives: djgpp-workers/2001/02/27/14:23:04
> 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 -