aboutsummaryrefslogtreecommitdiffstats
path: root/src/coding.h
diff options
context:
space:
mode:
authorEli Zaretskii2013-11-04 19:30:33 +0200
committerEli Zaretskii2013-11-04 19:30:33 +0200
commitd0065ff1244871c9eb40420b88fc89f9f008b587 (patch)
treea869fa565b559c7b0a9390fd6045d7d827d001ec /src/coding.h
parent7397c58760779a3aa83ff58164455761d77cd642 (diff)
downloademacs-d0065ff1244871c9eb40420b88fc89f9f008b587.tar.gz
emacs-d0065ff1244871c9eb40420b88fc89f9f008b587.zip
Fix bug #15260 with building and installing Emacs in non-ASCII directories.
src/xdisp.c (message3_nolog, message_with_string): Encode the string before writing it to the terminal in a non-interactive session. src/lread.c (openp): If both FILENAME and SUFFIX are unibyte, make sure we concatenate them into a unibyte string. src/fileio.c (make_temp_name): Encode PREFIX, and decode the resulting temporary name before returning it to the caller. (Fexpand_file_name): If NAME is pure-ASCII and DEFAULT_DIRECTORY is a unibyte string, convert NAME to a unibyte string to ensure that the result is also a unibyte string. src/emacs.c (init_cmdargs): Use build_unibyte_string to make sure we create unibyte strings from default paths and directory/file names. src/coding.h (ENCODE_FILE): Do not attempt to encode a unibyte string. src/callproc.c (init_callproc): Use build_unibyte_string to make sure we create unibyte strings from default paths and directory/file names. src/buffer.c (init_buffer): Don't store default-directory of *scratch* in multibyte form. The original problem which led to that is described in http://lists.gnu.org/archive/html/emacs-pretest-bug/2004-11/msg00532.html, but it was solved long ago. lisp/startup.el (normal-top-level): Move setting eol-mnemonic-unix, eol-mnemonic-mac, eol-mnemonic-dos, and also setup of the locale environment and decoding all of the default-directory's to here from command-line. (command-line): Decode also argv[0]. lisp/loadup.el: Error out if default-directory is a multibyte string when we are dumping. lisp/Makefile.in (emacs): Don't set LC_ALL=C. leim/Makefile.in (RUN_EMACS): Don't set LC_ALL=C. configure.ac: Don't disallow builds in non-ASCII directories.
Diffstat (limited to 'src/coding.h')
-rw-r--r--src/coding.h18
1 files changed, 10 insertions, 8 deletions
diff --git a/src/coding.h b/src/coding.h
index 0472bec99de..5a921e44950 100644
--- a/src/coding.h
+++ b/src/coding.h
@@ -670,14 +670,16 @@ struct coding_system
670 (code) = (s1 << 8) | s2; \ 670 (code) = (s1 << 8) | s2; \
671 } while (0) 671 } while (0)
672 672
673/* Encode the file name NAME using the specified coding system 673/* Encode the file name NAME using the specified coding system for
674 for file names, if any. */ 674 file names, if any. If NAME is a unibyte string, return NAME. */
675#define ENCODE_FILE(name) \ 675#define ENCODE_FILE(name) \
676 (! NILP (Vfile_name_coding_system) \ 676 (! STRING_MULTIBYTE (name) \
677 ? code_convert_string_norecord (name, Vfile_name_coding_system, 1) \ 677 ? name \
678 : (! NILP (Vdefault_file_name_coding_system) \ 678 : (! NILP (Vfile_name_coding_system) \
679 ? code_convert_string_norecord (name, Vdefault_file_name_coding_system, 1) \ 679 ? code_convert_string_norecord (name, Vfile_name_coding_system, 1) \
680 : name)) 680 : (! NILP (Vdefault_file_name_coding_system) \
681 ? code_convert_string_norecord (name, Vdefault_file_name_coding_system, 1) \
682 : name)))
681 683
682 684
683/* Decode the file name NAME using the specified coding system 685/* Decode the file name NAME using the specified coding system