[GiNaC-list] well, here's the latest story on recursive grep

Richard Haney rfhaney at yahoo.com
Wed Jul 19 01:08:03 CEST 2006


Effective recursive search with grep seems to be an important skill
when trying to debug CLN and GiNaC.

I tried a bit more searching on the Internet and tried a few more
combinations with my existing versions of grep.  Many of the
alternative work-arounds posted on the Internet do not work very well.

But I finally found a usage scheme that seems to work fairly well for
recursive grep.

I have four versions of grep on my computer and only cygwin grep seems
to work reasonably well, provided one __guesses__ at the right
combination of arguments.  Here's what I've learned -- so you won't
have to do such a horrendous amount of guessing.

Here's a generic example of the usage of cygwin grep that works:

grep  -r  --include="*.cc"  --include="*.cpp"  "Illegal number syntax" 
*

Here's the command & output in a cygwin bash shell in working directory
/cygdrive/c/gnu/cln-1.1.11/src:

$ grep  -r  --include="*.cc"  --include="*.cpp"  "Illegal number
syntax"  *
base/input/cl_read_err_bad.cc:  fprint(std::cerr, "Illegal number
syntax: \"");
base/input/cl_read_err_bad.cc--debug.cpp:       fprint(std::cerr,
"Illegal numbe
r syntax: \"");
base/input/cl_read_err_bad.cc--original_now_in_effect.cpp:     
fprint(std::cerr
, "Illegal number syntax: \"");

(Note that I labeled backup copies with a .cpp extension because "CLN
make" in this area sweeps up any existing file with extension .cc for
inclusion in the library.)

Using the option "--directories=recurse" in place of "-r" produces the
same output.

But note that while "grep  -r  "Illegal number syntax"  *" searches
_all_ files in the hierarchy and produces the output:

base/input/cl_read_err_bad.cc:  fprint(std::cerr, "Illegal number
syntax: \"");
base/input/cl_read_err_bad.cc--debug.cpp:       fprint(std::cerr,
"Illegal numbe
r syntax: \"");
base/input/cl_read_err_bad.cc--original_now_in_effect.cpp:     
fprint(std::cerr
, "Illegal number syntax: \"");
Binary file cl_read_err_bad.o matches
Binary file cl_read_err_bad.o--comment out for debugging.oxx matches

, the more specific command "grep  -r  "Illegal number syntax"  *.cc"
fails to produce the desired output, but instead we get:

grep: *.cc: No such file or directory

And, therefore to be expected, "grep  -r  "Illegal number syntax"  *.cc
*.cpp" fails in the same way:

grep: *.cc: No such file or directory
grep: *.cpp: No such file or directory

Of my four versions of grep, only cygwin grep has the "--include=..."
option.  MinGW's msys grep does not have that option, and moreover,
MinGW's msys grep has the same problem that cygwin grep has with the
similar command:

"c:/msys/1.0.8/bin/grep.exe"  -r  "Illegal number syntax"  *.cc

Version information:  Executing the cygwin grep command "grep  -V"
produces the output "grep (GNU grep) 2.5" along with (gnu) copyright
and (non-) warranty information.  This grep was packaged in a cygwin
setup.exe file that yielded an intermediate-expansion file (among many)
with name "release\grep\grep-2.5-1.tar.bz2" along with a parallel
intermediate-expansion file of
"release\cygwin\cygwin-1.3.20-1.tar.bz2".

Happy debugging!

Richard Haney


__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 


More information about the GiNaC-list mailing list