Subject: bug#22820: closed (Re: bug#22820: grep: Misleading error message when presenting a badly formed character class)

From: [email-masked] (GNU bug Tracking System)
Date: Fri, 26 Feb 2016 16:50:02 +0000

Your bug report

#22820: grep: Misleading error message when presenting a badly formed character class

which was filed against the grep package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
22820: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=22820
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#22820: grep: Misleading error message when presenting a badly formed character class
From: Jim Meyering <[email-masked]>
To: Bailes Magio <[email-masked]>
Cc: [email-masked]
Date: Fri, 26 Feb 2016 08:49:32 -0800
List-Id: <debbugs-submit.debbugs.gnu.org>

On Fri, Feb 26, 2016 at 6:51 AM,  <[email-masked]> wrote:
> Hi,
>
> I'd like to forward a bug filled by Gunnar Wolf in Debian some time
> ago:
>
> "It seems that whenever egrep finds something it cannot digest inside a
> character class, it spews out the same error string: «Unmatched [ or [^».
> This can be misleading and opens the way for long debugging time,
> specially when trying to understand complex regexes. To illustrate the
> point:
>
> $ echo | egrep -v '[[:digit]]+'
> egrep: Unmatched [ or [^
>
> The brackets _are_ balanced, however the character class is not (it
> lacks a finishing colon)."

Thank you for forwarding that.
The diagnostic was fixed in gnulib via a commit last month:
git.savannah.gnu.org/cgit/gnulib.git/commit/?id=7c6e85cf4eccbd5129
Thus, as long as grep is configured --with-included-regex,
you will now see this:

  $ grep -E '[[:digit]]+'
  grep: Unmatched [, [^, [:, [., or [=

If grep is configure with --without-included-regex, you will
still see the inferior diagnostic, but that string will then be
coming from your system's C library.

Since fixing glibc's copy of regcomp.c is outside the scope
of grep's issue tracker, I'm marking this as "done".

Subject: grep: Misleading error message when presenting a badly formed character class
From: [email-masked]
To: bug-grep <[email-masked]>
Date: Fri, 26 Feb 2016 15:51:18 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi,

I'd like to forward a bug filled by Gunnar Wolf in Debian some time
ago:

"It seems that whenever egrep finds something it cannot digest inside a
character class, it spews out the same error string: «Unmatched [ or [^».
This can be misleading and opens the way for long debugging time,
specially when trying to understand complex regexes. To illustrate the
point:

$ echo | egrep -v '[[:digit]]+'
egrep: Unmatched [ or [^

The brackets _are_ balanced, however the character class is not (it
lacks a finishing colon)."

Thanks,

Santiago