summaryrefslogtreecommitdiff
path: root/package/busybox/busybox-1.7.4-grep.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/busybox/busybox-1.7.4-grep.patch')
-rw-r--r--package/busybox/busybox-1.7.4-grep.patch38
1 files changed, 38 insertions, 0 deletions
diff --git a/package/busybox/busybox-1.7.4-grep.patch b/package/busybox/busybox-1.7.4-grep.patch
new file mode 100644
index 000000000..3599d0aa9
--- /dev/null
+++ b/package/busybox/busybox-1.7.4-grep.patch
@@ -0,0 +1,38 @@
+diff -urN busybox-1.7.4/findutils/grep.c busybox-1.7.4-grep/findutils/grep.c
+--- busybox-1.7.4/findutils/grep.c 2007-09-03 04:48:54.000000000 -0700
++++ busybox-1.7.4-grep/findutils/grep.c 2007-12-08 19:02:33.000000000 -0800
+@@ -154,14 +154,14 @@
+
+ while ((line = xmalloc_getline(file)) != NULL) {
+ llist_t *pattern_ptr = pattern_head;
+- grep_list_data_t * gl;
++ grep_list_data_t *gl = gl; /* for gcc */
+
+ linenum++;
+ ret = 0;
+ while (pattern_ptr) {
+ gl = (grep_list_data_t *)pattern_ptr->data;
+ if (FGREP_FLAG) {
+- ret = strstr(line, gl->pattern) != NULL;
++ ret |= (strstr(line, gl->pattern) != NULL);
+ } else {
+ /*
+ * test for a postitive-assertion match (regexec returns success (0)
+@@ -255,8 +255,15 @@
+ print_n_lines_after = lines_after;
+ #endif
+ if (option_mask32 & OPT_o) {
+- line[regmatch.rm_eo] = '\0';
+- print_line(line + regmatch.rm_so, linenum, ':');
++ if (FGREP_FLAG) {
++ /* -Fo just prints the pattern
++ * (unless -v: -Fov doesnt print anything at all) */
++ if (ret)
++ print_line(gl->pattern, linenum, ':');
++ } else {
++ line[regmatch.rm_eo] = '\0';
++ print_line(line + regmatch.rm_so, linenum, ':');
++ }
+ } else {
+ print_line(line, linenum, ':');
+ }