Case sensitive/insensitive changes needed

"John E. Malmberg" <[email protected]> Sun, 25 Jan 2015 19:16:13 -0600
Newsgroups gmane.comp.gnu.make.devel
Message-ID <[email protected]>
Currently on GNU Make is either built to be case sensitive or 
insensitive as a build time parameter.

On Windows and Unix, including OS-X, I think that the case sensitivity 
is a property of the file system, so it is possible to have both case 
sensitive and case insensitive file systems mounted.

Traditionally VMS file systems are case insensitive.  On the newer ODS-5 
file system it is a per process setting to treat the file system as case 
sensitive or just case preserving.

The properties of ODS-5 case handling is similar to what MSDOS/Windows 
case handling should be, so it is surprising to me that some of the code 
is VMS specific where it should be common to both.

This means that either some of the VMS specific code is not needed, or 
there may be a bug that the other case insensitive platforms have not 
detected yet.


On VMS, instead of having the case sensitivity as a build parameter, I 
am going to change it to look up the process setting when make starts.

A global variable vms_case_sensitive will be added for VMS to hold that 
setting.

* dir.c(vms_hash): will not lowercase the filename if
   vms_case_sensitive.

* dir.c(find_directory): VMS specific block will have the same change.

* dir.c(dir_contents_file_exists_p): VMS Specific code will be added
   to also check vms_case_sensitive.  The VMS specific code in that
   module will also be updated.

* dir.c(file_impossible): VMS specific code will be updated.

* dir.c(file_impossible_p):  VMS Specific code will be added.

* file.c(lookup_file): VMS specific code will be updated.

* enter_file.c(enter_file): VMS specific code will be updated.

* vmsfunctions.c(readdir): Not used on any version of VMS that GNU Make
   will currently build on, and is incorrectly uppercasing the result
   where the real readdir() on VMS would have returned a lowercase
   result.  Probably time to just remove this and the related routines.

* vmsify.c(copyto): VMS specific code will be updated.

* hash.h: Will need to do something with these macros.  Not sure what
   yet.

* makeint.h: Have to do something with the patheq macro.

Regards,
-John
[email protected]