+2012-12-04 Eli Zaretskii <eliz@gnu.org>
+
+ * fileio.c (file_name_as_directory, directory_file_name) [DOS_NT]:
+ Encode the file name before passing it to dostounix_filename, in
+ case it will downcase it (under w32-downcase-file-names).
+ (Bug#12933)
+
2012-12-01 Chong Yidong <cyd@gnu.org>
* fileio.c (Vauto_save_list_file_name): Doc fix.
/* Convert from file name SRC of length SRCLEN to directory name
in DST. On UNIX, just make sure there is a terminating /.
- Return the length of DST. */
+ Return the length of DST in bytes. */
static ptrdiff_t
file_name_as_directory (char *dst, const char *src, ptrdiff_t srclen)
srclen++;
}
#ifdef DOS_NT
- dostounix_filename (dst);
+ {
+ Lisp_Object tem_fn = make_specified_string (dst, -1, srclen, 1);
+
+ tem_fn = ENCODE_FILE (tem_fn);
+ dostounix_filename (SSDATA (tem_fn));
+ tem_fn = DECODE_FILE (tem_fn);
+ memcpy (dst, SSDATA (tem_fn), (srclen = SBYTES (tem_fn)) + 1);
+ }
#endif
return srclen;
}
\f
/* Convert from directory name SRC of length SRCLEN to
file name in DST. On UNIX, just make sure there isn't
- a terminating /. Return the length of DST. */
+ a terminating /. Return the length of DST in bytes. */
static ptrdiff_t
directory_file_name (char *dst, char *src, ptrdiff_t srclen)
srclen--;
}
#ifdef DOS_NT
- dostounix_filename (dst);
+ {
+ Lisp_Object tem_fn = make_specified_string (dst, -1, srclen, 1);
+
+ tem_fn = ENCODE_FILE (tem_fn);
+ dostounix_filename (SSDATA (tem_fn));
+ tem_fn = DECODE_FILE (tem_fn);
+ memcpy (dst, SSDATA (tem_fn), (srclen = SBYTES (tem_fn)) + 1);
+ }
#endif
return srclen;
}