[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] master 81d6418: Fix file-name-case-insensitive-p on non-ex
From: |
Ken Brown |
Subject: |
[Emacs-diffs] master 81d6418: Fix file-name-case-insensitive-p on non-existent files |
Date: |
Fri, 27 Jul 2018 17:30:14 -0400 (EDT) |
branch: master
commit 81d6418e6b7c3e637dccf9c856d9c4b94bd43b97
Author: Ken Brown <address@hidden>
Commit: Ken Brown <address@hidden>
Fix file-name-case-insensitive-p on non-existent files
* src/fileio.c (Ffile_name_case_insensitive_p): If the file
doesn't exist, move up the filesystem tree until an existing
directory is found. Then test that directory for
case-insensitivity. (Bug#32246)
---
src/fileio.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/src/fileio.c b/src/fileio.c
index b92492c..2dcfb73 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -2296,6 +2296,21 @@ The arg must be a string. */)
if (!NILP (handler))
return call2 (handler, Qfile_name_case_insensitive_p, filename);
+ /* If the file doesn't exist, move up the filesystem tree until we
+ reach an existing directory or the root. */
+ if (NILP (Ffile_exists_p (filename)))
+ {
+ filename = Ffile_name_directory (filename);
+ while (NILP (Ffile_exists_p (filename)))
+ {
+ Lisp_Object newname = expand_and_dir_to_file (filename);
+ /* Avoid infinite loop if the root is reported as non-existing
+ (impossible?). */
+ if (!NILP (Fstring_equal (newname, filename)))
+ break;
+ filename = newname;
+ }
+ }
filename = ENCODE_FILE (filename);
return file_name_case_insensitive_p (SSDATA (filename)) ? Qt : Qnil;
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] master 81d6418: Fix file-name-case-insensitive-p on non-existent files,
Ken Brown <=