From 34cc6c91a286411a8275d9d61aa80397fe1e5fa3 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Thu, 28 Aug 2014 15:50:09 +0200 Subject: grep: fix "grep -r PATTRN SYMLINK_TO_DIR" Signed-off-by: Denys Vlasenko --- findutils/grep.c | 2 +- testsuite/grep.tests | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) 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 -- cgit v1.2.3