NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: bin/40080: grep's --color switch won't work with -i option

The following reply was made to PR bin/40080; it has been noted by GNATS.

From: David Holland <>
Subject: Re: bin/40080: grep's --color switch won't work with -i option
Date: Thu, 19 Jan 2017 17:56:31 +0000

 On Tue, Dec 02, 2008 at 12:30:01PM +0000, wrote:
  > The --color switch to grep won't work in concert with the -i option
  > if the arg to the -i option is upper-case.
  > >How-To-Repeat:
  > Try these two examples:
  >   $  echo Dogfood | grep -i --color dog
  > and:
  >   $  echo Dogfood | grep -i --color Dog
  > They both print "Dogfood" for me under both NetBSD 4.0 and
  > 5.0_BETA, but only the first one (using lower case "dog" as the
  > pattern match) shows the color.
 (1) This also affects grep -o, except without the "lowercase is magic"
    valkyrie% echo Dogfood | grep -i -o dog
    valkyrie% echo Dogfood | grep -i -o Dog
 This is because the "logic" in grep.c for identifying the matching
 part is cutpasted, but only the --color copy includes logic for -i.
 (2) The underlying problem is that for some weird broken gnu code
 reason, when it calls back into the matching engine to identify the
 matching part, the matching engine no longer honors -i.
 (3) Instead of fixing this, at some point someone introduced a bodge
 into the --color copy of the matching-part code that operates on a
 lowercased version of the matched line when -i is in effect. This
 means that -i --color works as long as the search pattern is
 lowercase, but not otherwise, as observed, whereas -i -o works as if
 -i had been left off.
 (4) This crap now lives in external/gpl2/grep/dist/src/grep.c.
 David A. Holland

Home | Main Index | Thread Index | Old Index