delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp-workers/2001/10/11/18:52:23

Date: Fri, 12 Oct 2001 00:50:23 +0200
From: "Eli Zaretskii" <eliz AT is DOT elta DOT co DOT il>
Sender: halo1 AT zahav DOT net DOT il
To: "Tim Van Holder" <tim DOT van DOT holder AT pandora DOT be>
Message-Id: <7263-Fri12Oct2001005023+0200-eliz@is.elta.co.il>
X-Mailer: Emacs 20.6 (via feedmail 8.3.emacs20_6 I) and Blat ver 1.8.9
CC: acottrel AT ihug DOT com DOT au, djgpp-workers AT delorie DOT com
In-reply-to: <000901c15292$e83254c0$6ff8e0d5@pandora.be>
(tim DOT van DOT holder AT pandora DOT be)
Subject: Re: New perl package
References: <000901c15292$e83254c0$6ff8e0d5 AT pandora DOT be>
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: "Tim Van Holder" <tim DOT van DOT holder AT pandora DOT be>
> Date: Thu, 11 Oct 2001 22:25:34 +0200
> 
> Oh, and I did notice that perl's configure got the names of
> ALL extensions right by itself.  Normally it finds the B,
> I18N and IO packages as b, i18n and io (which is why Laszlo
> added a config.over to set those right again).  So it seems
> that under XP, FNCASE=y is always in effect (or something
> like that anyway).

For that to happen, XP has somehow to mess with a particular LFN
function of Int 21h (assuming you didn't somehow set FNCASE=y and
forgot about it ;-).  Here are the details.

The library functions which need to decide whether to downcase a file
name they've got from the OS all run code similar to this:

      if (!strcmp(_lfn_gen_short_fname(long_name, short_name), long_name))
        /* downcase the file name */

The function _lfn_gen_short_fname puts into its second argument the
short variant of the file name in its first argument.  The short
variant is the 8+3 alias, but without the numeric tail, i.e. as if
NameNumericTail was set to zero.  If these two strings are identical
(including the case!), then we decide that this is a DOS file name,
and downcase it.  (If FNCASE is set to y, this code is bypassed, and
all file names are returned exactly as they are recorded in the
directory.)

_lfn_gen_short_fname calls function 71A8h of Int 21h.  So either XP
botches that function, or it returns some unexpected result that
confuses the logic inside _lfn_gen_short_fname.  Please step with a
debugger into that function and see what's going on there.

- Raw text -


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