Paul Eggert wrote: > On 08/07/2012 10:24 AM, Jim Meyering wrote: >> + if expr "X$option" : 'X-[0-9]\+$' > /dev/null; then > > This part of the patch is not portable, since '\+' is > a GNU extension, and its behavior isn't specified by POSIX.
Indeed. I have to be careful about my reflexes. I'm too used to being able (in coreutils test suite) to depend on the behavior of coreutils-provided tools. > To fix this I installed the following zgrep.in patch. > This diff is relative to the zgrep.in before the current > series of patches, since that makes it easier to review. > The basic idea is to avoid the use of expr here, and > rely just on shell pattern-matching; that's more efficient > anyway. > > --- a/zgrep.in > +++ b/zgrep.in > @@ -65,7 +65,7 @@ while test $# -ne 0; do > optarg= > > case $option in > - (-[0123456789EFGHIKLPRTUVZabchilnoqrsuvwxyz]?*) > + (-[0123456789EFGHIKLPRTUVZabchilnoqrsuvwxyz]*[!0123456789]*) > arg2=-\'$(expr "X$option" : 'X-.[0-9]*\(.*\)' | sed "$escape") > eval "set -- $arg2 "'${1+"$@"}' > option=$(expr "X$option" : 'X\(-.[0-9]*\)');; Yes, that is better. Thanks!