aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorEli Zaretskii2013-02-09 18:36:53 +0200
committerEli Zaretskii2013-02-09 18:36:53 +0200
commit74ba15836233e028331e2195ed78a16afdc09c17 (patch)
treef3a89bef00cb3d21a50a359d546bb67198c4d9fa /src
parent2d0504232eab9deb2b09d47d39ceb76a369dc922 (diff)
downloademacs-74ba15836233e028331e2195ed78a16afdc09c17.tar.gz
emacs-74ba15836233e028331e2195ed78a16afdc09c17.zip
Fix bug #13661 with w32-downcase-file-names and shell-command.
src/callproc.c (Fcall_process_region): Make sure the XXXXXX part of the temporary file pattern is not downcased even when w32-downcase-file-names is non-nil.
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog4
-rw-r--r--src/callproc.c22
2 files changed, 24 insertions, 2 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 599c515e858..35e313c1afb 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,5 +1,9 @@
12013-02-09 Eli Zaretskii <eliz@gnu.org> 12013-02-09 Eli Zaretskii <eliz@gnu.org>
2 2
3 * callproc.c (Fcall_process_region): Make sure the XXXXXX part of
4 the temporary file pattern is not downcased even when
5 w32-downcase-file-names is non-nil. (Bug#13661)
6
3 * xdisp.c (decode_mode_spec): Remove handling of %t. 7 * xdisp.c (decode_mode_spec): Remove handling of %t.
4 8
5 * msdos.c (careadlinkatcwd): Remove. 9 * msdos.c (careadlinkatcwd): Remove.
diff --git a/src/callproc.c b/src/callproc.c
index ea79da7ff5a..cb11ee0cc53 100644
--- a/src/callproc.c
+++ b/src/callproc.c
@@ -1016,8 +1016,26 @@ usage: (call-process-region START END PROGRAM &optional DELETE BUFFER DISPLAY &r
1016 { 1016 {
1017 USE_SAFE_ALLOCA; 1017 USE_SAFE_ALLOCA;
1018 Lisp_Object pattern = Fexpand_file_name (Vtemp_file_name_pattern, tmpdir); 1018 Lisp_Object pattern = Fexpand_file_name (Vtemp_file_name_pattern, tmpdir);
1019 Lisp_Object encoded_tem = ENCODE_FILE (pattern); 1019 Lisp_Object encoded_tem;
1020 char *tempfile = SAFE_ALLOCA (SBYTES (encoded_tem) + 1); 1020 char *tempfile;
1021
1022#ifdef WINDOWSNT
1023 /* Cannot use the result of Fexpand_file_name, because it
1024 downcases the XXXXXX part of the pattern, and mktemp then
1025 doesn't recognize it. */
1026 if (!NILP (Vw32_downcase_file_names))
1027 {
1028 Lisp_Object dirname = Ffile_name_directory (pattern);
1029
1030 if (NILP (dirname))
1031 pattern = Vtemp_file_name_pattern;
1032 else
1033 pattern = concat2 (dirname, Vtemp_file_name_pattern);
1034 }
1035#endif
1036
1037 encoded_tem = ENCODE_FILE (pattern);
1038 tempfile = SAFE_ALLOCA (SBYTES (encoded_tem) + 1);
1021 memcpy (tempfile, SDATA (encoded_tem), SBYTES (encoded_tem) + 1); 1039 memcpy (tempfile, SDATA (encoded_tem), SBYTES (encoded_tem) + 1);
1022 coding_systems = Qt; 1040 coding_systems = Qt;
1023 1041