busybox: 1.12.1 grep fix
authorPeter Korsgaard <jacmet@sunsite.dk>
Mon, 6 Oct 2008 18:52:02 +0000 (18:52 -0000)
committerPeter Korsgaard <jacmet@sunsite.dk>
Mon, 6 Oct 2008 18:52:02 +0000 (18:52 -0000)
package/busybox/busybox-1.12.1-grep.patch [new file with mode: 0644]

diff --git a/package/busybox/busybox-1.12.1-grep.patch b/package/busybox/busybox-1.12.1-grep.patch
new file mode 100644 (file)
index 0000000..20404fc
--- /dev/null
@@ -0,0 +1,27 @@
+--- busybox-1.12.1/findutils/grep.c    Sun Sep 28 20:04:28 2008
++++ busybox-1.12.1-grep/findutils/grep.c       Wed Oct  1 00:45:49 2008
+@@ -363,12 +363,22 @@
+                                                * (unless -v: -Fov doesnt print anything at all) */
+                                               if (found)
+                                                       print_line(gl->pattern, strlen(gl->pattern), linenum, ':');
+-                                      } else {
++                                      } else while (1) {
++                                              char old = line[gl->matched_range.rm_eo];
+                                               line[gl->matched_range.rm_eo] = '\0';
+                                               print_line(line + gl->matched_range.rm_so,
+                                                               gl->matched_range.rm_eo - gl->matched_range.rm_so,
+                                                               linenum, ':');
+-                                      }
++                                              line[gl->matched_range.rm_eo] = old;
++#if !ENABLE_EXTRA_COMPAT
++                                              break;
++#else
++                                              if (re_search(&gl->compiled_regex, line, line_len,
++                                                              gl->matched_range.rm_eo, line_len - gl->matched_range.rm_eo, 
++                                                              &gl->matched_range) < 0)
++                                                      break;
++#endif
++                                      } 
+                               } else {
+                                       print_line(line, line_len, linenum, ':');
+                               }