From: Martin Str|mberg 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: <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 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