[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/src/w32.c,v
From: |
Miles Bader |
Subject: |
[Emacs-diffs] Changes to emacs/src/w32.c,v |
Date: |
Sat, 05 Apr 2008 23:01:30 +0000 |
CVSROOT: /cvsroot/emacs
Module name: emacs
Changes by: Miles Bader <miles> 08/04/05 23:01:26
Index: src/w32.c
===================================================================
RCS file: /cvsroot/emacs/emacs/src/w32.c,v
retrieving revision 1.133
retrieving revision 1.134
diff -u -b -r1.133 -r1.134
--- src/w32.c 5 Apr 2008 15:24:01 -0000 1.133
+++ src/w32.c 5 Apr 2008 23:01:20 -0000 1.134
@@ -1935,6 +1935,21 @@
dir_static.d_namlen = strlen (dir_static.d_name);
dir_static.d_reclen = sizeof (struct direct) - MAXNAMLEN + 3 +
dir_static.d_namlen - dir_static.d_namlen % 4;
+
+ /* If the file name in cFileName[] includes `?' characters, it means
+ the original file name used characters that cannot be represented
+ by the current ANSI codepage. To avoid total lossage, retrieve
+ the short 8+3 alias of the long file name. */
+ if (_mbspbrk (dir_find_data.cFileName, "?"))
+ {
+ strcpy (dir_static.d_name, dir_find_data.cAlternateFileName);
+ /* 8+3 aliases are returned in all caps, which could break
+ various alists that look at filenames' extensions. */
+ downcase = 1;
+ }
+ else
+ strcpy (dir_static.d_name, dir_find_data.cFileName);
+ dir_static.d_namlen = strlen (dir_static.d_name);
if (dir_is_fat)
_strlwr (dir_static.d_name);
else if (downcase)
- [Emacs-diffs] Changes to emacs/src/w32.c,v, Eli Zaretskii, 2008/04/05
- [Emacs-diffs] Changes to emacs/src/w32.c,v, Eli Zaretskii, 2008/04/05
- [Emacs-diffs] Changes to emacs/src/w32.c,v,
Miles Bader <=
- [Emacs-diffs] Changes to emacs/src/w32.c,v, Jason Rumney, 2008/04/10
- [Emacs-diffs] Changes to emacs/src/w32.c,v, Miles Bader, 2008/04/23