mirror of
https://git.freebsd.org/src.git
synced 2026-01-16 23:02:24 +00:00
Fix remaining zgrep(1) wrapper script regressions
Summary:
Fix short flags without whitespace, e.g:
zgrep -wefoo test
Fix multiple -e flags:
zgrep -e foo -e xxx test
Previously only the last pattern would be used.
Clean up possible leading blank in ${grep_args}.
Update comment: 2.51 -> 2.6.0
Add a test case for the last known zgrep wrapper issue: recursion
(-r) not implemented.
Reviewers: markj, kevans, ngie, bapt
Reviewed By: markj
Subscribers: imp
Differential Revision: https://reviews.freebsd.org/D48873
This commit is contained in:
parent
36f1db7a37
commit
1070477cc8
2 changed files with 65 additions and 11 deletions
|
|
@ -221,8 +221,6 @@ zgrep_combined_flags_head()
|
|||
}
|
||||
zgrep_combined_flags_body()
|
||||
{
|
||||
atf_expect_fail "known but unsolved zgrep wrapper script regression"
|
||||
|
||||
echo 'foo bar' > test
|
||||
|
||||
atf_check -o inline:"foo bar\n" zgrep -we foo test
|
||||
|
|
@ -278,8 +276,6 @@ zgrep_multiple_eflags_head()
|
|||
}
|
||||
zgrep_multiple_eflags_body()
|
||||
{
|
||||
atf_expect_fail "known but unsolved zgrep wrapper script regression"
|
||||
|
||||
echo foobar > test
|
||||
|
||||
atf_check -o inline:"foobar\n" zgrep -e foo -e xxx test
|
||||
|
|
@ -940,6 +936,25 @@ zgrep_multiple_files_body()
|
|||
echo bar > test2
|
||||
atf_check -s exit:1 zgrep foo test1 test2
|
||||
}
|
||||
|
||||
atf_test_case zgrep_recursive
|
||||
zgrep_multiple_files_head()
|
||||
{
|
||||
atf_set "descr" "Checks for zgrep wrapper recursion"
|
||||
}
|
||||
zgrep_recursive_body()
|
||||
{
|
||||
atf_expect_fail "unimplemented zgrep wrapper script functionality"
|
||||
|
||||
mkdir -p tester1
|
||||
echo foobar > tester1/test
|
||||
atf_check -o inline:"tester1/test:foobar\n" zgrep -r foo tester1
|
||||
|
||||
mkdir -p tester2
|
||||
echo foobar > tester2/test1
|
||||
echo foobar > tester2/test2
|
||||
atf_check -o inline:"tester2/test1:foobar\ntester2/test2:foobar\n" zgrep -r foo tester2
|
||||
}
|
||||
# End FreeBSD
|
||||
|
||||
atf_init_test_cases()
|
||||
|
|
@ -996,5 +1011,6 @@ atf_init_test_cases()
|
|||
atf_add_test_case mflag
|
||||
atf_add_test_case mflag_trail_ctx
|
||||
atf_add_test_case zgrep_multiple_files
|
||||
atf_add_test_case zgrep_recursive
|
||||
# End FreeBSD
|
||||
}
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@ esac
|
|||
while [ $# -gt 0 -a ${endofopts} -eq 0 ]
|
||||
do
|
||||
case $1 in
|
||||
# from GNU grep-2.5.1 -- keep in sync!
|
||||
# from GNU grep-2.6.0 -- keep in sync!
|
||||
--)
|
||||
shift
|
||||
endofopts=1
|
||||
|
|
@ -85,6 +85,9 @@ do
|
|||
shift
|
||||
;;
|
||||
--regexp=*)
|
||||
if [ ${pattern_found} -ne 0 ]; then
|
||||
grep_args="${grep_args} -e ${pattern}"
|
||||
fi
|
||||
pattern="${1#--regexp=}"
|
||||
pattern_found=1
|
||||
shift
|
||||
|
|
@ -100,20 +103,31 @@ do
|
|||
grep_args="${grep_args} $1"
|
||||
shift
|
||||
;;
|
||||
-*[ABCDXdefm])
|
||||
-[EFGHILOSUVabchilnopqsuvwxyz]*)
|
||||
post="${1#-?}"
|
||||
pre=${1%${post}}
|
||||
grep_args="${grep_args} ${pre}"
|
||||
shift
|
||||
# Put back partial arg
|
||||
set -- "-${post}" $*
|
||||
;;
|
||||
-[ABCDdefm])
|
||||
if [ $# -lt 2 ]
|
||||
then
|
||||
echo "${prg}: missing argument for $1 flag" >&2
|
||||
exit 1
|
||||
fi
|
||||
case $1 in
|
||||
-*e)
|
||||
-e)
|
||||
if [ ${pattern_found} -ne 0 ]; then
|
||||
grep_args="${grep_args} -e ${pattern}"
|
||||
fi
|
||||
pattern="$2"
|
||||
pattern_found=1
|
||||
shift 2
|
||||
continue
|
||||
;;
|
||||
-*f)
|
||||
-f)
|
||||
pattern_file=1
|
||||
;;
|
||||
*)
|
||||
|
|
@ -122,6 +136,27 @@ do
|
|||
grep_args="${grep_args} $1 $2"
|
||||
shift 2
|
||||
;;
|
||||
-[ABCDdefm]*)
|
||||
post="${1#-e}"
|
||||
case ${1} in
|
||||
-e*)
|
||||
if [ ${pattern_found} -ne 0 ]; then
|
||||
grep_args="${grep_args} -e ${pattern}"
|
||||
fi
|
||||
pattern="${post}"
|
||||
pattern_found=1
|
||||
shift
|
||||
continue
|
||||
;;
|
||||
-f*)
|
||||
pattern_file=1
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
grep_args="${grep_args} ${post}"
|
||||
shift
|
||||
;;
|
||||
-)
|
||||
hyphen=1
|
||||
shift
|
||||
|
|
@ -130,7 +165,7 @@ do
|
|||
echo "${prg}: the ${1} flag is not currently supported" >&2
|
||||
exit 1
|
||||
;;
|
||||
-*)
|
||||
-?)
|
||||
grep_args="${grep_args} $1"
|
||||
shift
|
||||
;;
|
||||
|
|
@ -156,12 +191,15 @@ then
|
|||
pattern_found=1
|
||||
fi
|
||||
|
||||
# Clean up possible leading blank
|
||||
grep_args="${grep_args# }"
|
||||
|
||||
# call grep ...
|
||||
if [ $# -lt 1 ]
|
||||
then
|
||||
# ... on stdin
|
||||
if [ ${pattern_file} -eq 0 ]; then
|
||||
${cattool} ${catargs} - | ${grep} ${grep_args} -- "${pattern}" -
|
||||
${cattool} ${catargs} - | ${grep} ${grep_args} -e "${pattern}" -- -
|
||||
else
|
||||
${cattool} ${catargs} - | ${grep} ${grep_args} -- -
|
||||
fi
|
||||
|
|
@ -176,7 +214,7 @@ else
|
|||
for file; do
|
||||
if [ ${pattern_file} -eq 0 ]; then
|
||||
${cattool} ${catargs} -- "${file}" |
|
||||
${grep} --label="${file}" ${grep_args} -- "${pattern}" -
|
||||
${grep} --label="${file}" ${grep_args} -e "${pattern}" -- -
|
||||
else
|
||||
${cattool} ${catargs} -- "${file}" |
|
||||
${grep} --label="${file}" ${grep_args} -- -
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue