changeset 100045:3ec2cc2d35c1

* w32proc.c: Include "coding.h". (Fw32_short_file_name): Encode filename passed to Windows API. (Fw32_long_file_name): Encode filename passed to Windows API and decode back the result. (Bug#1433)
author Juanma Barranquero <lekktu@gmail.com>
date Sat, 29 Nov 2008 18:35:33 +0000
parents f42890851326
children 3d02ae295c17
files src/ChangeLog src/w32proc.c
diffstat 2 files changed, 11 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/ChangeLog	Sat Nov 29 18:07:15 2008 +0000
+++ b/src/ChangeLog	Sat Nov 29 18:35:33 2008 +0000
@@ -1,3 +1,10 @@
+2008-11-29  Juanma Barranquero  <lekktu@gmail.com>
+
+	* w32proc.c: Include "coding.h".
+	(Fw32_short_file_name): Encode filename passed to Windows API.
+	(Fw32_long_file_name): Encode filename passed to Windows API and
+	decode back the result.  (Bug#1433)
+
 2008-11-29  Kenichi Handa  <handa@m17n.org>
 
 	* charset.h (CHAR_CHARSET_P): Check if the encoder is loaded or
--- a/src/w32proc.c	Sat Nov 29 18:07:15 2008 +0000
+++ b/src/w32proc.c	Sat Nov 29 18:35:33 2008 +0000
@@ -63,6 +63,7 @@
 #include "syssignal.h"
 #include "w32term.h"
 #include "dispextern.h"		/* for xstrcasecmp */
+#include "coding.h"
 
 #define RVA_TO_PTR(var,section,filedata) \
   ((void *)((section)->PointerToRawData					\
@@ -1781,7 +1782,7 @@
   filename = Fexpand_file_name (filename, Qnil);
 
   /* luckily, this returns the short version of each element in the path.  */
-  if (GetShortPathName (SDATA (filename), shortname, MAX_PATH) == 0)
+  if (GetShortPathName (SDATA (ENCODE_FILE (filename)), shortname, MAX_PATH) == 0)
     return Qnil;
 
   CORRECT_DIR_SEPS (shortname);
@@ -1810,7 +1811,7 @@
   /* first expand it.  */
   filename = Fexpand_file_name (filename, Qnil);
 
-  if (!w32_get_long_filename (SDATA (filename), longname, MAX_PATH))
+  if (!w32_get_long_filename (SDATA (ENCODE_FILE (filename)), longname, MAX_PATH))
     return Qnil;
 
   CORRECT_DIR_SEPS (longname);
@@ -1821,7 +1822,7 @@
   if (drive_only && longname[1] == ':' && longname[2] == '/' && !longname[3])
     longname[2] = '\0';
 
-  return build_string (longname);
+  return DECODE_FILE (build_string (longname));
 }
 
 DEFUN ("w32-set-process-priority", Fw32_set_process_priority,