bug-grep
[Top][All Lists]
Advanced

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

[PATCH] dfa: do not accept [[:UPPER:]] or [[:LOWER:]] internally


From: Jim Meyering
Subject: [PATCH] dfa: do not accept [[:UPPER:]] or [[:LOWER:]] internally
Date: Thu, 11 Mar 2010 16:35:41 +0100

If anyone presents a case for accepting uses like [[:UPPER:]] or
[[:LoWeR:]], we can always revert this change later --
and add a test case demonstrating the need.

    $ grep '[[:UPPER:]]'
    grep: Invalid character class name

>From 526c487f454f9538497a3099216476bbad219d19 Mon Sep 17 00:00:00 2001
From: Jim Meyering <address@hidden>
Date: Thu, 11 Mar 2010 16:24:47 +0100
Subject: [PATCH] dfa: do not accept [[:UPPER:]] or [[:LOWER:]] internally

* src/dfa.c (parse_bracket_exp_mb): Those class names are not
valid, and rejected elsewhere, so there is no point in allowing
upper or mixed-case versions here.
---
 src/dfa.c |   14 ++++++--------
 1 files changed, 6 insertions(+), 8 deletions(-)

diff --git a/src/dfa.c b/src/dfa.c
index a81dc83..780b782 100644
--- a/src/dfa.c
+++ b/src/dfa.c
@@ -526,15 +526,13 @@ parse_bracket_exp_mb (void)
              if (delim == ':')
                /* build character class.  */
                {
-                 wctype_t wt;
-
+                 char const *class
+                   = (case_fold && (!strcmp (str, "upper")
+                                    || !strcmp (str, "lower"))
+                                      ? "alpha"
+                                      : str);
                  /* Query the character class as wctype_t.  */
-                 if (case_fold
-                     && (!strcasecmp (str, "upper")
-                         || !strcasecmp (str, "lower")))
-                   wt = wctype ("alpha");
-                 else
-                   wt = wctype (str);
+                 wctype_t wt = wctype (class);

                  if (ch_classes_al == 0)
                    MALLOC(work_mbc->ch_classes, wctype_t, ++ch_classes_al);
--
1.7.0.2.393.gfb6b




reply via email to

[Prev in Thread] Current Thread [Next in Thread]