HomeFreeBSD

Fix some regressions with the zgrep(1) wrapper.

Description

Fix some regressions with the zgrep(1) wrapper.

  • Handle whitespace with long flags that take arguments:

echo 'foo bar' > test
zgrep --regexp='foo bar' test

  • Do not hang reading from stdin with patterns in a file:

echo foobar > test
echo foo > pattern
zgrep -f pattern test
zgrep --file=pattern test

  • Handle any flags after -e:

echo foobar > test
zgrep -e foo --ignore-case < test

These two are still outstanding problems:

  • Does not handle flags that take an argument if there is no whitespace:

zgrep -enfs /etc/rpc

  • When more than one -e pattern used matching should occur for all patterns (similar to multiple patterns supplied with -f file). Instead only the last pattern is used for matching:

zgrep -e rex -e nfs /etc/rpc

(This problem is masked in the unpatched version by the "any
flags after -e" problem.)

Add tests for the above problems.

Update the mange and add references to gzip(1) and zstd(1) and also
document the remaining known problems.

PR: 247126
Approved by: markj
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D25613