[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: grep.el bugs: grep-find-use-xargs handling, non-use of shell-quote-a
Kim F. Storm
Re: grep.el bugs: grep-find-use-xargs handling, non-use of shell-quote-argument, find-grep and alternative find
Wed, 23 Aug 2006 00:28:40 +0200
Gnus/5.11 (Gnus v5.11) Emacs/22.0.50 (gnu/linux)
Tom Seddon <address@hidden> writes:
> I've included a patch to fix three grep.el bugs.
Thank you for the bug report.
I will install fixes for these problems shortly.
> I'm using patched EmacsW32-1.06 (Emacs-22-CvsP060818-EmacsW32-1.06.exe)
> but grep.el looks to be the same as the latest one in CVS. OS is Windows
> XP, default shell is 4NT, and I'm using the GnuWin32 versions of find,
> grep and xargs.
> Firstly, grep-find-use-xargs handling is slightly wrong. The docs state
> that if grep-find-use-xargs is nil, xargs won't be used. But that isn't
> quite true -- if grep-find-use-xargs is nil, grep-compute-defaults tries
> to work out whether grep-find-use-xargs should actually be 'gnu.
> On my PC at least, 'gnu doesn't work (xargs gives the error "grep:
> Invalid argument"). I didn't look into this bit, because it seemed like
> you could make grep.el use find -exec instead. But that wasn't the case
> -- since I actually have a GNU xargs.exe available in the PATH it was
> impossible to make grep-compute-defaults set things up to use find -exec
> rather than xargs.
> Judging by the docstring for grep-find-use-xargs, this was wrong. The
> new behaviour is described in the new docstring. It should be
> backwards-compatible for all sensible uses. In particular, if
> grep-find-use-xargs is nil, the existing autodetection is still performed.
> (Perhaps I should just have figured out why xargs doesn't work...)
> The second bug is that grep.el doesn't use shell-quote-argument when
> constructing the args for find. It just use "\\(", "\\)" and "\\;"
> literally. This was causing errors on my PC:
> unixfind: paths must precede expression
> Usage: unixfind [-H] [-L] [-P] [path...] [expression]
> Changing grep.el to use shell-quote-argument where appropriate fixed this.
> Finally, grep.el mishandles the case where find-program is something
> other than "find". (Since Windows XP includes a "find.exe", I suppose
> others might be changing find-program to point at an
> alternatively-named version of GNU find.) See also:
> I've changed grep-compute-defaults accordingly, so that M-x find-grep
> puts the cursor at the right point.
Kim F. Storm http://www.cua.dk