| 08f25b50 | 08-Feb-2021 |
Kyle Evans <[email protected]> |
grep: fix -A handling in conjunction with -m match limitation
The basic issue here is that grep, when given -m 1, would stop all line processing once it hit the match count and exit immediately. Th
grep: fix -A handling in conjunction with -m match limitation
The basic issue here is that grep, when given -m 1, would stop all line processing once it hit the match count and exit immediately. The problem with exiting immediately is that -A processing only happens when subsequent lines are processed and do not match.
The fix here is relatively easy; when bsdgrep matches a line, it resets the 'tail' of the matching context to the value supplied to -A and dumps anything that's been queued up for -B. After the current line has been printed and tail is reset, we check our mcount and do what's needed. Therefore, at the time that we decide we're doing nothing, we know that 'tail' of the context is correct and we can simply continue on if there's still more to pick up.
With this change, we still bail out immediately if there's been no -A flag. If -A was supplied, we signal that we should continue on. However, subsequent lines will not even bothere to try and process the line. We have reached the match count, so even if the next line would match then we must process it if it hadn't. Thus, the loop in procfile() can short-circuit and just process the line as a non-match until procmatches() indicates that it's safe to stop.
A test has been added to reflect both that we should be picking up the next line and that the next line should be considered a non-match even if it should have been.
PR: 253350 (cherry picked from commit 3e2d96ac974db823255a6f40b90eeffa6e38d022)
show more ...
|
| bbce8cbb | 04-Feb-2021 |
Kyle Evans <[email protected]> |
grep: turn off -w if -x is specified
-x overcomes -w in gnugrep, and it should here as well. Flip it off as needed to avoid confusing other parts of grep.
(cherry picked from commit 2373acbbb77d69
grep: turn off -w if -x is specified
-x overcomes -w in gnugrep, and it should here as well. Flip it off as needed to avoid confusing other parts of grep.
(cherry picked from commit 2373acbbb77d694b997d90f3251810c6edf5d6d8)
show more ...
|
| df546c3b | 09-Dec-2020 |
Kyle Evans <[email protected]> |
grep: replace the internal queue with a ring buffer
We know up front how many items we can have in the queue (-B/Bflag), so pay the cost of those particular allocations early on.
The reduced queue
grep: replace the internal queue with a ring buffer
We know up front how many items we can have in the queue (-B/Bflag), so pay the cost of those particular allocations early on.
The reduced queue maintenance overhead seemed to yield about an ~8% improvement for my earlier `grep -C8 -r closefrom .` test.
MFC after: 2 weeks
show more ...
|