aboutsummaryrefslogtreecommitdiffstats
path: root/src/keyboard.c
diff options
context:
space:
mode:
authorEli Zaretskii2014-04-13 13:45:46 +0300
committerEli Zaretskii2014-04-13 13:45:46 +0300
commitced78c5a65b64b0e520b03cd3a987374ea4ca7d2 (patch)
tree0bfd621bb3f145f31046bdfa061ef34fc743e5c0 /src/keyboard.c
parentf2d164a4c6f3f0eb6f175b57012738aeaad2f294 (diff)
downloademacs-ced78c5a65b64b0e520b03cd3a987374ea4ca7d2.tar.gz
emacs-ced78c5a65b64b0e520b03cd3a987374ea4ca7d2.zip
Fix open-dribble-file's treatment of non-ASCII file names.
src/keyboard.c (Fopen_dribble_file): Encode the dribble file-name before passing it to system APIs.
Diffstat (limited to 'src/keyboard.c')
-rw-r--r--src/keyboard.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/keyboard.c b/src/keyboard.c
index a66054f153f..1f4b23d9905 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -10087,10 +10087,13 @@ This may include sensitive information such as passwords. */)
10087 if (!NILP (file)) 10087 if (!NILP (file))
10088 { 10088 {
10089 int fd; 10089 int fd;
10090 Lisp_Object encfile;
10091
10090 file = Fexpand_file_name (file, Qnil); 10092 file = Fexpand_file_name (file, Qnil);
10091 fd = emacs_open (SSDATA (file), O_WRONLY | O_CREAT | O_EXCL, 0600); 10093 encfile = ENCODE_FILE (file);
10092 if (fd < 0 && errno == EEXIST && unlink (SSDATA (file)) == 0) 10094 fd = emacs_open (SSDATA (encfile), O_WRONLY | O_CREAT | O_EXCL, 0600);
10093 fd = emacs_open (SSDATA (file), O_WRONLY | O_CREAT | O_EXCL, 0600); 10095 if (fd < 0 && errno == EEXIST && unlink (SSDATA (encfile)) == 0)
10096 fd = emacs_open (SSDATA (encfile), O_WRONLY | O_CREAT | O_EXCL, 0600);
10094 dribble = fd < 0 ? 0 : fdopen (fd, "w"); 10097 dribble = fd < 0 ? 0 : fdopen (fd, "w");
10095 if (dribble == 0) 10098 if (dribble == 0)
10096 report_file_error ("Opening dribble", file); 10099 report_file_error ("Opening dribble", file);