Bug 218806

Summary: bsdgrep(1)'s -o flag with context is completely wrong
Product: Base System Reporter: Kyle Evans <kevans>
Component: binAssignee: freebsd-bugs (Nobody) <bugs>
Status: New ---    
Severity: Affects Only Me CC: emaste
Priority: ---    
Version: CURRENT   
Hardware: Any   
OS: Any   

Description Kyle Evans freebsd_committer 2017-04-22 05:38:57 UTC
Compare, with d_context_a.in from /usr/tests/usr.bin/grep:

$ gnugrep -C1 -o pig d_context_a.in               
pig
pig
--
pig
pig
pig
# Behavior is same on newer gnugrep.
$ grep -C1 -o pig d_context_a.in 
pig
Boar, sow, barrow, or gilt --
pig
Though mountains may topple and tilt.
--
Though you may be thrown over by Tabby and Rover,
pig
pig
pig
                -- Thomas Pynchon, "Gravity's Rainbow"
# Ugh

I note here that it *looks* like we should do all of the normal context behavior but not actually print the context, just the lines that actually matched and the separators that comes with context. I'll have to create some further test cases for different scenarios of overlapping/adjacency behavior of both matching lines and non-matching lines to make sure that's right.

This is likely a really strange corner case that probably won't have any practical application, but consistency is good.