[git commit] grep: fix "grep -r PATTRN SYMLINK_TO_DIR"

Denys Vlasenko vda.linux at googlemail.com
Thu Aug 28 13:50:09 UTC 2014


commit: http://git.busybox.net/busybox/commit/?id=34cc6c91a286411a8275d9d61aa80397fe1e5fa3
branch: http://git.busybox.net/busybox/commit/?id=refs/heads/master

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 findutils/grep.c     |    2 +-
 testsuite/grep.tests |   20 ++++++++++++++++++++
 2 files changed, 21 insertions(+), 1 deletions(-)

diff --git a/findutils/grep.c b/findutils/grep.c
index f1b6dc6..b962138 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 323b384..f6d9f21 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


More information about the busybox-cvs mailing list