summaryrefslogtreecommitdiff
path: root/package/busybox/busybox-1.17.1/busybox-1.17.1-grep.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/busybox/busybox-1.17.1/busybox-1.17.1-grep.patch')
-rw-r--r--package/busybox/busybox-1.17.1/busybox-1.17.1-grep.patch39
1 files changed, 39 insertions, 0 deletions
diff --git a/package/busybox/busybox-1.17.1/busybox-1.17.1-grep.patch b/package/busybox/busybox-1.17.1/busybox-1.17.1-grep.patch
new file mode 100644
index 000000000..f8fc25d3f
--- /dev/null
+++ b/package/busybox/busybox-1.17.1/busybox-1.17.1-grep.patch
@@ -0,0 +1,39 @@
+diff -urpN busybox-1.17.1/findutils/grep.c busybox-1.17.1-grep/findutils/grep.c
+--- busybox-1.17.1/findutils/grep.c 2010-07-06 04:25:54.000000000 +0200
++++ busybox-1.17.1-grep/findutils/grep.c 2010-08-23 02:37:08.000000000 +0200
+@@ -461,15 +461,19 @@ static int grep_file(FILE *file)
+ if (found)
+ print_line(gl->pattern, strlen(gl->pattern), linenum, ':');
+ } else while (1) {
++ unsigned start = gl->matched_range.rm_so;
+ unsigned end = gl->matched_range.rm_eo;
++ unsigned len = end - start;
+ char old = line[end];
+ line[end] = '\0';
+- print_line(line + gl->matched_range.rm_so,
+- end - gl->matched_range.rm_so,
+- linenum, ':');
++ /* Empty match is not printed: try "echo test | grep -o ''" */
++ if (len != 0)
++ print_line(line + start, len, linenum, ':');
+ if (old == '\0')
+ break;
+ line[end] = old;
++ if (len == 0)
++ end++;
+ #if !ENABLE_EXTRA_COMPAT
+ if (regexec(&gl->compiled_regex, line + end,
+ 1, &gl->matched_range, REG_NOTBOL) != 0)
+diff -urpN busybox-1.17.1/testsuite/grep.tests busybox-1.17.1-grep/testsuite/grep.tests
+--- busybox-1.17.1/testsuite/grep.tests 2010-07-06 04:25:54.000000000 +0200
++++ busybox-1.17.1-grep/testsuite/grep.tests 2010-08-23 02:37:08.000000000 +0200
+@@ -98,5 +98,9 @@ testing "grep -o does not loop forever"
+ 'grep -o "[^/]*$"' \
+ "test\n" \
+ "" "/var/test\n"
++testing "grep -o does not loop forever on zero-length match" \
++ 'grep -o "" | head -n1' \
++ "" \
++ "" "test\n"
+
+ exit $FAILCOUNT