diff src/lread.c @ 5211:cdca98f2d36f

Move `default-file-system-ignore-case' to C; fix bug in directory hash tables src/ChangeLog addition: 2010-05-16 Aidan Kehoe <kehoea@parhasard.net> Move `default-file-system-ignore-case' to C; pay attention to it in creating the directory hash tables for #'locate-file. Fix a bug where #'eq was specified when creating directory hash tables in dired.c. * config.h.in (DEFAULT_FILE_SYSTEM_IGNORE_CASE): This is 1 on Darwin. * dired.c (make_directory_hash_table): If #'file-system-ignore-case-p gives non-nil for a directory, created the associated hash table with #'equalp as its test. Never use #'eq as a directory hash table test. * fileio.c (vars_of_fileio): Move `default-file-system-ignore-case' here, so it can be a constant boolean reflecting a compile-time #define. * lisp.h: Update the declaration of make_directory_hash_table; remove the declaration of wasteful_word_to_lisp, which was #ifdef'd out. * lread.c (Flocate_file): Take out a debugging statement from this function. (locate_file_refresh_hashing): Call make_directory_hash_table with a Lisp string, not an Ibyte pointer. (vars_of_lread): If DEFAULT_FILE_SYSTEM_IGNORE_CASE is defined, use #'equalp as the hash table test for locate-file-hash-table, not #'equal. * s/win32-common.h (DEFAULT_FILE_SYSTEM_IGNORE_CASE): Case should normally be ignored in file names on Win32. lisp/ChangeLog addition: 2010-05-16 Aidan Kehoe <kehoea@parhasard.net> * files.el (default-file-system-ignore-case): Move this to fileio.c, where it's a constant boolean variable initialised at dump time.
author Aidan Kehoe <kehoea@parhasard.net>
date Sun, 16 May 2010 12:33:21 +0100
parents 71ee43b8a74d
children 7abb91db1e64
line wrap: on
line diff
--- a/src/lread.c	Thu Apr 29 16:16:47 2010 +0100
+++ b/src/lread.c	Sun May 16 12:33:21 2010 +0100
@@ -894,9 +894,6 @@
 {
   /* This function can GC */
   Lisp_Object tp;
-  static int locate_file_called;
-
-  ++locate_file_called;
 
   CHECK_STRING (filename);
 
@@ -918,8 +915,7 @@
 static Lisp_Object
 locate_file_refresh_hashing (Lisp_Object directory)
 {
-  Lisp_Object hash =
-    make_directory_hash_table (XSTRING_DATA (directory));
+  Lisp_Object hash = make_directory_hash_table (directory);
 
   if (!NILP (hash))
     Fputhash (directory, hash, Vlocate_file_hash_table);
@@ -3483,7 +3479,12 @@
 
   Vlocate_file_hash_table = make_lisp_hash_table (200,
 						  HASH_TABLE_NON_WEAK,
-						  Qequal);
+#ifdef DEFAULT_FILE_SYSTEM_IGNORE_CASE
+						  Qequalp
+#else
+						  Qequal
+#endif
+						  );
   staticpro (&Vlocate_file_hash_table);
 #ifdef DEBUG_XEMACS
   symbol_value (XSYMBOL (intern ("Vlocate-file-hash-table")))