← Commit list

34cc6c91a

Denys Vlasenko
Denys Vlasenko
2014-08-28
SUCCESS Duration: 155s

Subject

grep: fix "grep -r PATTRN SYMLINK_TO_DIR"

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

findutils/grep.c+1 -1
@@ -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,
testsuite/grep.tests+20 -0
@@ -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