]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix bug #19141 with UNCs in w32-shell-execute.
authorEli Zaretskii <eliz@gnu.org>
Tue, 25 Nov 2014 17:04:14 +0000 (19:04 +0200)
committerEli Zaretskii <eliz@gnu.org>
Tue, 25 Nov 2014 17:04:14 +0000 (19:04 +0200)
 src/w32fns.c (Fw32_shell_execute): Convert forward slashes in
 DOCUMENT to backslashes, if DOCUMENT is a file.

src/ChangeLog
src/w32fns.c

index b17f719ce6dc8140029e77df695b1057e43c0bfc..23fd46bd4cd421d5b51929c125ec262aa5d09910 100644 (file)
@@ -1,3 +1,8 @@
+2014-11-25  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32fns.c (Fw32_shell_execute): Convert forward slashes in
+       DOCUMENT to backslashes, if DOCUMENT is a file.  (Bug#19141)
+
 2014-11-25  Ulrich Müller  <ulm@gentoo.org>
 
        * Makefile.in (temacs$(EXEEXT)): Use consistent flag settings
index bc95005f52a368d2291cf7d0ddd130c0a7a25590..8bd5e8132b3eb9673fddec80b085707f1016ade1 100644 (file)
@@ -6987,7 +6987,14 @@ a ShowWindow flag:
       Lisp_Object absdoc_encoded = ENCODE_FILE (absdoc);
 
       if (faccessat (AT_FDCWD, SSDATA (absdoc_encoded), F_OK, AT_EACCESS) == 0)
-       document = absdoc_encoded;
+       {
+         /* ShellExecute fails if DOCUMENT is a UNC with forward
+            slashes (expand-file-name above converts all backslashes
+            to forward slashes).  Now that we know DOCUMENT is a
+            file, we can mirror all forward slashes into backslashes.  */
+         unixtodos_filename (SSDATA (absdoc_encoded));
+         document = absdoc_encoded;
+       }
       else
        document = ENCODE_FILE (document);
     }