changeset 112251:014879f0bfbb

* net/tramp.el (tramp-find-inline-compress) (tramp-get-inline-coding): Quote command after pipe symbol for local calls under W32. (Bug#6784)
author Michael Albinus <michael.albinus@gmx.de>
date Mon, 10 Jan 2011 21:36:09 +0100
parents baabeab57e3e
children 6409a00a5462
files lisp/ChangeLog lisp/net/tramp.el
diffstat 2 files changed, 35 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Mon Jan 10 20:42:46 2011 +0100
+++ b/lisp/ChangeLog	Mon Jan 10 21:36:09 2011 +0100
@@ -1,3 +1,9 @@
+2011-01-10  Michael Albinus  <michael.albinus@gmx.de>
+
+	* net/tramp.el (tramp-find-inline-compress)
+	(tramp-get-inline-coding): Quote command after pipe symbol for
+	local calls under W32.  (Bug#6784)
+
 2011-01-10  Michael Albinus  <michael.albinus@gmx.de>
 
 	* net/tramp.el (tramp-default-method): Initialize with pscp/plink
--- a/lisp/net/tramp.el	Mon Jan 10 20:42:46 2011 +0100
+++ b/lisp/net/tramp.el	Mon Jan 10 21:36:09 2011 +0100
@@ -7362,9 +7362,17 @@
 	   vec 5
 	   "Checking local compress command `%s', `%s' for sanity"
 	   compress decompress)
-	  (unless (zerop (tramp-call-local-coding-command
-			  (format "echo %s | %s | %s"
-				  magic compress decompress) nil nil))
+	  (unless
+	      (zerop
+	       (tramp-call-local-coding-command
+		(format
+		 ;; Windows shells need the program file name after
+		 ;; the pipe symbol be quoted if they use forward
+		 ;; slashes as directory separators.
+		 (if (memq system-type '(windows-nt))
+		     "echo %s | \"%s\" | \"%s\""
+		   "echo %s | %s | %s")
+		 magic compress decompress) nil nil))
 	    (throw 'next nil))
 	  (tramp-message
 	   vec 5
@@ -8645,9 +8653,25 @@
 	 ((symbolp coding)
 	  coding)
 	 ((and compress (string-match "decoding" prop))
-	  (format "(%s | %s >%%s)" coding compress))
+	  (format
+	   ;; Windows shells need the program file name after
+	   ;; the pipe symbol be quoted if they use forward
+	   ;; slashes as directory separators.
+	   (if (and (string-match "local" prop)
+		    (memq system-type '(windows-nt)))
+	       "(%s | \"%s\" >%%s)"
+	     "(%s | %s >%%s)")
+	   coding compress))
 	 (compress
-	  (format "(%s <%%s | %s)" compress coding))
+	  (format
+	   ;; Windows shells need the program file name after
+	   ;; the pipe symbol be quoted if they use forward
+	   ;; slashes as directory separators.
+	   (if (and (string-match "local" prop)
+		    (memq system-type '(windows-nt)))
+	       "(%s <%%s | \"%s\")"
+	     "(%s <%%s | %s)")
+	   compress coding))
 	 ((string-match "decoding" prop)
 	  (format "%s >%%s" coding))
 	 (t