Philipp Kohlbecher wrote: > Follow-up Comment #2, bug #29358 (project grep): > Just noticed the fix in the git repo. While it makes a lot more sense than my > hack below, that fix also leaves the --include switch non-functional.
Thanks for mentioning that. Here's the fix I expect to push soon: >From cd8b6178b965e19daa9d106f11d82809097119ab Mon Sep 17 00:00:00 2001 From: Jim Meyering <[email protected]> Date: Sun, 28 Mar 2010 17:32:48 +0200 Subject: [PATCH] grep: fix --include * lib/savedir.c (savedir): Fix logic error. Introduced by commit bf3bd92c, "build: adapt to the newer exclude API we now get from gnulib" * tests/include-exclude: Test for this bug by exercising --include, too. * NEWS (Bug fixes): Mention it. Reported by Philipp Kohlbecher in http://savannah.gnu.org/bugs/?29358 --- NEWS | 2 ++ THANKS | 1 + lib/savedir.c | 2 +- tests/include-exclude | 5 +++++ 4 files changed, 9 insertions(+), 1 deletions(-) diff --git a/NEWS b/NEWS index 6d87655..6c9943e 100644 --- a/NEWS +++ b/NEWS @@ -4,6 +4,8 @@ GNU grep NEWS -*- outline -*- ** Bug fixes + The --include option works once again. [bug introduced in 2.6] + Using any of the --include or --exclude* options would cause a NULL dereference. [bug introduced in 2.6] diff --git a/THANKS b/THANKS index e1273de..c960be2 100644 --- a/THANKS +++ b/THANKS @@ -65,6 +65,7 @@ Paolo Bonzini <[email protected]> Paul Eggert <[email protected]> Paul Kimoto <[email protected]> Phillip C. Brisco <[email protected]> +Philipp Kohlbecher <[email protected]> Philippe Defert <[email protected]> Philippe De Muyter <[email protected]> Philip Hazel <[email protected]> diff --git a/lib/savedir.c b/lib/savedir.c index 94e5f12..53f8c7b 100644 --- a/lib/savedir.c +++ b/lib/savedir.c @@ -112,7 +112,7 @@ savedir (const char *dir, off_t name_size, struct exclude *included_patterns, && !isdir1 (dir, dp->d_name)) { if (included_patterns - && !excluded_file_name (included_patterns, dp->d_name)) + && excluded_file_name (included_patterns, dp->d_name)) continue; if (excluded_patterns && excluded_file_name (excluded_patterns, dp->d_name)) diff --git a/tests/include-exclude b/tests/include-exclude index e77c126..f4e5d9d 100644 --- a/tests/include-exclude +++ b/tests/include-exclude @@ -12,6 +12,7 @@ printf '%s\n' x/b:b x/dir/d:d > exp-not-a || framework_failure_ printf '%s\n' x/dir/d:d > exp-not-ab || framework_failure_ printf '%s\n' x/a:a x/b:b > exp-not-d || framework_failure_ printf '%s\n' x/a:a x/b:b > exp-not-dir || framework_failure_ +printf '%s\n' x/a:a > exp-a || framework_failure_ grep -r --exclude='a*' . x > out || fail=1 sort out > k && mv k out @@ -29,4 +30,8 @@ grep -r --exclude-dir=dir . x > out || fail=1 sort out > k && mv k out compare out exp-not-dir || fail=1 +grep -r --include=a . x > out || fail=1 +# no need to sort +compare out exp-a || fail=1 + Exit $fail -- 1.7.0.3.448.g82eeb
