Commit 2e7cddd3 authored by Eli Zaretskii's avatar Eli Zaretskii
Browse files

Fix another instance of bug #12933 with non-ASCII file names on Windows.

 src/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).
parent 52d129cd
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.
......
......@@ -455,7 +455,7 @@ get a current directory to run processes in. */)
/* 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)
......@@ -477,7 +477,14 @@ 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;
}
......@@ -519,7 +526,7 @@ For a Unix-syntax file name, just appends a slash. */)
/* 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)
......@@ -538,7 +545,14 @@ 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;
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment