]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix bug #6684 with shell pipelines on MS-Windows.
authorEli Zaretskii <eliz@gnu.org>
Sun, 9 Jan 2011 17:52:57 +0000 (19:52 +0200)
committerEli Zaretskii <eliz@gnu.org>
Sun, 9 Jan 2011 17:52:57 +0000 (19:52 +0200)
 progmodes/grep.el (grep-compute-defaults): Quote the program
 file name after the pipe symbol in Grep templates.
 jka-compr.el (jka-compr-partial-uncompress): Likewise.

Fixes: debbugs:6784
lisp/ChangeLog
lisp/jka-compr.el
lisp/progmodes/grep.el

index 0769c3d4c80b1301413ec7248ab7fdb13cc42c8d..688f32e5a724f9d4fab9b440d3a0fc38ddd72c29 100644 (file)
@@ -1,3 +1,9 @@
+2011-01-09  Eli Zaretskii  <eliz@gnu.org>
+
+       * progmodes/grep.el (grep-compute-defaults): Quote the program
+       file name after the pipe symbol in Grep templates.  (Bug#6784)
+       * jka-compr.el (jka-compr-partial-uncompress): Likewise.
+
 2011-01-08  Lennart Borgman  <lennart.borgman@gmail.com>
 
        * buff-menu.el (Buffer-menu-buffer-list): New var.
index 635f3ce84682935c65059feb45687a20fff67e80..32f3d6d1f588b04919422efb47dbe1827685d8f6 100644 (file)
@@ -166,8 +166,11 @@ to keep: LEN chars starting BEG chars from the beginning."
          (unwind-protect
              (or (memq (call-process
                         jka-compr-shell infile t nil "-c"
+                        ;; Windows shells need the program file name
+                        ;; after the pipe symbol be quoted if they use
+                        ;; forward slashes as directory separators.
                         (format
-                         "%s %s 2> %s | %s bs=%d skip=%d %s 2> %s"
+                         "%s %s 2> %s | \"%s\" bs=%d skip=%d %s 2> %s"
                          prog
                          (mapconcat 'identity args " ")
                          err-file
index dac14d07ef82e28d0c7767d4aa7a176771fbb9fd..dd6dc025d5b785907957313d98f4b6c2f1e2b018 100644 (file)
@@ -561,7 +561,10 @@ Set up `compilation-exit-message-function' and run `grep-setup-hook'."
        (unless grep-find-command
          (setq grep-find-command
                (cond ((eq grep-find-use-xargs 'gnu)
-                      (format "%s . -type f -print0 | %s -0 -e %s"
+                      ;; Windows shells need the program file name
+                      ;; after the pipe symbol be quoted if they use
+                      ;; forward slashes as directory separators.
+                      (format "%s . -type f -print0 | \"%s\" -0 -e %s"
                               find-program xargs-program grep-command))
                      ((eq grep-find-use-xargs 'exec)
                       (let ((cmd0 (format "%s . -type f -exec %s"
@@ -572,21 +575,21 @@ Set up `compilation-exit-message-function' and run `grep-setup-hook'."
                                  (shell-quote-argument ";"))
                          (1+ (length cmd0)))))
                      (t
-                      (format "%s . -type f -print | %s %s"
+                      (format "%s . -type f -print | \"%s\" %s"
                               find-program xargs-program grep-command)))))
        (unless grep-find-template
          (setq grep-find-template
                (let ((gcmd (format "%s <C> %s <R>"
                                    grep-program grep-options)))
                  (cond ((eq grep-find-use-xargs 'gnu)
-                        (format "%s . <X> -type f <F> -print0 | %s -0 -e %s"
+                        (format "%s . <X> -type f <F> -print0 | \"%s\" -0 -e %s"
                                 find-program xargs-program gcmd))
                        ((eq grep-find-use-xargs 'exec)
                         (format "%s . <X> -type f <F> -exec %s {} %s %s"
                                 find-program gcmd null-device
                                 (shell-quote-argument ";")))
                        (t
-                        (format "%s . <X> -type f <F> -print | %s %s"
+                        (format "%s . <X> -type f <F> -print | \"%s\" %s"
                                 find-program xargs-program gcmd))))))))
     (when (eq grep-highlight-matches 'auto-detect)
       (setq grep-highlight-matches