Subject: bug#6674: PATCH: fix assignment of grep-find-use-xargs on Windows/MS-DOS

From: Óscar Fuentes <[email-masked]>
Date: Tue, 20 Jul 2010 05:49:35 +0200

On Windows, when find-program points to a GNU-compatible `find'
executable, grep-find-use-xargs is assigned the symbol 'gnu. The
consequence of this is that `rgrep' ends building a command that
contains a pipe: find <args> | xargs -0 grep <args> This ends with
`find' reporting confusing errors about wrong arguments.

An extra test is added to the assigment of grep-find-use-xargs to force
the value 'exec on Windows and MS-DOS.

2010-07-20  Óscar Fuentes  <[email-masked]>

	* progmodes/grep.el: (grep-compute-defaults): always assign
        'exec to grep-find-use-xargs on Windows and MS-DOS.

=== modified file 'lisp/progmodes/grep.el'
*** lisp/progmodes/grep.el	2010-05-21 20:43:04 +0000
--- lisp/progmodes/grep.el	2010-07-20 03:42:21 +0000
*************** Set up `compilation-exit-message-functio
*** 552,557 ****
--- 552,560 ----
  	(unless grep-find-use-xargs
  	  (setq grep-find-use-xargs
  		(cond
+ 		 ;; We don't want a shell pipe on those systems:
+ 		 ((or (eq system-type 'windows-nt) (eq system-type 'ms-dos))
+ 		  'exec)
  		 ((and
  		   (grep-probe find-program `(nil nil nil ,null-device "-print0"))
  		   (grep-probe xargs-program `(nil nil nil "-0" "-e" "echo")))