diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2014-08-28 17:50:09 +0400 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2014-08-28 17:50:09 +0400 |
commit | 34cc6c91a286411a8275d9d61aa80397fe1e5fa3 (patch) | |
tree | 2808db0f61e5e63dc390330c98ce5acd7cefea9a | |
parent | 6ff055115798166e172039284448be758b04e195 (diff) |
grep: fix "grep -r PATTRN SYMLINK_TO_DIR"
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r-- | findutils/grep.c | 2 | ||||
-rwxr-xr-x | testsuite/grep.tests | 20 |
2 files changed, 21 insertions, 1 deletions
diff --git a/findutils/grep.c b/findutils/grep.c index f1b6dc694..b9621384e 100644 --- a/findutils/grep.c +++ b/findutils/grep.c @@ -668,7 +668,7 @@ static int grep_dir(const char *dir) int matched = 0; recursive_action(dir, /* recurse=yes */ ACTION_RECURSE | - /* followLinks=no */ + /* followLinks=command line only */ ACTION_FOLLOWLINKS_L0 | /* depthFirst=yes */ ACTION_DEPTHFIRST, /* fileAction= */ file_action_grep, /* dirAction= */ NULL, diff --git a/testsuite/grep.tests b/testsuite/grep.tests index 323b3849d..f6d9f2105 100755 --- a/testsuite/grep.tests +++ b/testsuite/grep.tests @@ -171,6 +171,26 @@ testing "grep -w word match second word" \ "bword,word\n""wordb,word\n""bwordb,word\n" \ "" +# -r on symlink to dir should recurse into dir +mkdir -p grep.testdir/foo +echo bar > grep.testdir/foo/file +ln -s foo grep.testdir/symfoo +testing "grep -r on symlink to dir" \ + "grep -r . grep.testdir/symfoo" \ + "grep.testdir/symfoo/file:bar\n" \ + "" "" +rm -Rf grep.testdir + +# But -r on dir/symlink_to_dir should not recurse into symlink_to_dir +mkdir -p grep.testdir/foo +echo bar > grep.testdir/foo/file +ln -s foo grep.testdir/symfoo +testing "grep -r on dir/symlink to dir" \ + "grep -r . grep.testdir" \ + "grep.testdir/foo/file:bar\n" \ + "" "" +rm -Rf grep.testdir + # testing "test name" "commands" "expected result" "file input" "stdin" # file input will be file called "input" # test can create a file "actual" instead of writing to stdout |