[augeas-devel] augeas: master - * src/fa.c (re_cset_as_string): turn '[^\n]' into '.'

David Lutterkort lutter at fedoraproject.org
Fri Mar 13 22:17:06 UTC 2009


Gitweb:        http://git.fedorahosted.org/git/augeas.git?p=augeas.git;a=commitdiff;h=a4fc2ddc76d200c456f65f2af96092ee203c62e6
Commit:        a4fc2ddc76d200c456f65f2af96092ee203c62e6
Parent:        aab887dbbb48a3d8feb1b2ae7af01abc321c5e23
Author:        David Lutterkort <lutter at redhat.com>
AuthorDate:    Thu Mar 12 16:59:04 2009 -0700
Committer:     David Lutterkort <lutter at redhat.com>
CommitterDate: Thu Mar 12 16:59:04 2009 -0700

* src/fa.c (re_cset_as_string): turn '[^\n]' into '.'

---
 src/fa.c |   10 ++++++++++
 1 files changed, 10 insertions(+), 0 deletions(-)

diff --git a/src/fa.c b/src/fa.c
index 9bb8876..9fce844 100644
--- a/src/fa.c
+++ b/src/fa.c
@@ -2846,6 +2846,7 @@ static char *re_cset_as_string(const struct re *re) {
 
     static const char *const empty_set = "[]";
     static const char *const total_set = "(.|\n)";
+    static const char *const not_newline = ".";
 
     char *result = NULL, *s;
     int from, to, negate;
@@ -2868,6 +2869,15 @@ static char *re_cset_as_string(const struct re *re) {
             /* Special case: the set matches every character */
             return strdup(total_set);
         }
+        if (from == '\n') {
+            for (from += 1;
+                 from <= UCHAR_MAX && bitset_get(re->cset, from);
+                 from += 1);
+            if (from > UCHAR_MAX) {
+                /* Special case: the set matches everything but '\n' */
+                return strdup(not_newline);
+            }
+        }
     }
 
     /* See if ']' and '-' will be explicitly included in the character set




More information about the augeas-devel mailing list