]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix command-line-normalize-file-name for DOS/Windows file names.
authorEli Zaretskii <eliz@gnu.org>
Sat, 16 Mar 2013 08:20:36 +0000 (10:20 +0200)
committerEli Zaretskii <eliz@gnu.org>
Sat, 16 Mar 2013 08:20:36 +0000 (10:20 +0200)
 lisp/startup.el (command-line-normalize-file-name): Fix handling of
 backslashes in DOS and Windows file names.  Reported by Xue Fuqiao
 <xfq.free@gmail.com> in
 http://lists.gnu.org/archive/html/help-gnu-emacs/2013-03/msg00245.html.

lisp/ChangeLog
lisp/startup.el

index 41e78c7885a77a8528ba349eb1e84b20dcc4ea36..2c729e3d5b77678c303c929c6068257acc4d1ee9 100644 (file)
@@ -1,3 +1,10 @@
+2013-03-16  Eli Zaretskii  <eliz@gnu.org>
+
+       * startup.el (command-line-normalize-file-name): Fix handling of
+       backslashes in DOS and Windows file names.  Reported by Xue Fuqiao
+       <xfq.free@gmail.com> in
+       http://lists.gnu.org/archive/html/help-gnu-emacs/2013-03/msg00245.html.
+
 2013-03-15  Michael Albinus  <michael.albinus@gmx.de>
 
        Sync with Tramp 2.2.7.
index ad31a7a2a45c6ecb5ff7a0c69560584128740987..db84a5b11b2946ae5d618dea86d799091a2bff28 100644 (file)
@@ -2399,13 +2399,17 @@ A fancy display is used on graphic displays, normal otherwise."
     ;; Use arg 1 so that we don't collapse // at the start of the file name.
     ;; That is significant on some systems.
     ;; However, /// at the beginning is supposed to mean just /, not //.
-    (if (string-match "^///+" file)
+    (if (string-match
+        (if (memq system-type '(ms-dos windows-nt))
+            "^\\([\\/][\\/][\\/]\\)+"
+          "^///+")
+        file)
        (setq file (replace-match "/" t t file)))
-    (and (memq system-type '(ms-dos windows-nt))
-        (string-match "^[A-Za-z]:\\(\\\\[\\\\/]\\)" file) ; C:\/ or C:\\
-        (setq file (replace-match "/" t t file 1)))
-    (while (string-match "//+" file 1)
-      (setq file (replace-match "/" t t file)))
+    (if (memq system-type '(ms-dos windows-nt))
+       (while (string-match "\\([\\/][\\/]\\)+" file 1)
+         (setq file (replace-match "/" t t file)))
+      (while (string-match "//+" file 1)
+       (setq file (replace-match "/" t t file))))
     file))
 
 ;;; startup.el ends here