www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2001/03/22/14:16:46

From: Martin Str|mberg <ams AT father DOT ludd DOT luth DOT se>
Newsgroups: comp.os.msdos.djgpp
Subject: Re: Freedos, INT 0x21, AX=0x71a0 and emacs
Date: Thu, 22 Mar 2001 19:09:01 +0000 (UTC)
Organization: University of Lulea, Sweden
Lines: 50
Message-ID: <99dikd$ftj$1@news.luth.se>
References: <Pine DOT SUN DOT 3 DOT 91 DOT 1010322094711 DOT 7564F-100000 AT is> <99cfks$cbt$1 AT antares DOT lu DOT erisoft DOT se>
X-Trace: news.luth.se 985288141 16307 130.240.16.18 (22 Mar 2001 19:09:01 GMT)
X-Complaints-To: abuse AT luth DOT se
User-Agent: tin/pre-1.4-981225 ("Volcane") (UNIX) (SunOS/4.1.4 (sun4m))
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

Martin Stromberg <eplmst AT lu DOT erisoft DOT se> wrote:
: Eli Zaretskii (eliz AT is DOT elta DOT co DOT il) wrote:

: : On Wed, 21 Mar 2001, Martin Str|mberg wrote:

: : > : In other words, Emacs is simply a program that checks whether LFN is
: : > : supported in many places in its application code, while other programs
: : > : you tested do not do that.
: : > 
: : > Ok. But it still seems wasteful. Can't the msdos-long-file-names function
: : > be done like this C:
: : > 
: : > Bool msdos-long-file-names(void)
: : > {
: : > 	static int lfn = -1;
: : > 
: : > 	if( lfn < 0)
: : > 	{
: : > 		lfn = result_from_nice_call_to_DOZE();
: : > 	}
: : > 
: : > 	return( lfn );
: : > }

: : This is already done by the library.  Except that, in FreeDOS's case,
: : I understand that 71A0h doesn't return ENOSYS, so the library thinks
: : something else went wrong, and doesn't cache the return value.  See
: : the source of _use_lfn; I think we discussed this a while ago, and you
: : said the problem is going to be solved in the next release of FreeDOS.

: Now I'm really confused. Unsupported INT 0x21 calls should set AL to
: zero according to you and other persons. How is FreeDOS going to be
: able to set AX to an error value in that case?

: Hmm... (Digging in the use_lfn() source...) Ok. You mean
: _get_volume_info() instead 71A0h above returning ENOSYS. I think with
: the FreeDOS kernel I tried _get_volume_info() really returns ENOSYS
: (or at least should), but I have to check it.

Ok, now I've checked and my FreeDOS kernel do make _get_volume_info()
set errno to ENOSYS and return 0.

So if I understood you correctly there ought to be bug somewhere (in
DJGGP or emacs) because there should only one calls to it in that case
but I see several.


Right,

						MartinS

- Raw text -


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