gawk-diffs
[Top][All Lists]
Advanced

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

[gawk-diffs] [SCM] gawk branch, gawk-4.0-stable, updated. 588de030bf792d


From: Arnold Robbins
Subject: [gawk-diffs] [SCM] gawk branch, gawk-4.0-stable, updated. 588de030bf792d8fb174d154e7b3a342dc636206
Date: Wed, 21 Sep 2011 18:15:30 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "gawk".

The branch, gawk-4.0-stable has been updated
       via  588de030bf792d8fb174d154e7b3a342dc636206 (commit)
      from  dbce70b09d1a8a34c91d968aea196fdc1a979dbf (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://git.sv.gnu.org/cgit/gawk.git/commit/?id=588de030bf792d8fb174d154e7b3a342dc636206

commit 588de030bf792d8fb174d154e7b3a342dc636206
Author: Arnold D. Robbins <address@hidden>
Date:   Wed Sep 21 21:15:08 2011 +0300

    Sync with gnu grep, remove many ifdefs.

diff --git a/ChangeLog b/ChangeLog
index 0a2d55a..e92c00e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2011-09-21         Arnold D. Robbins     <address@hidden>
+
+       * dfa.c, mbsupport.h: Sync with GNU grep. Large amount of changes
+       that remove many ifdefs, moving many conditions for multibyte
+       support into regular C code and relying GCC's dead code optimization
+       to elimnate code that won't be needed.
+
 2011-09-16         Arnold D. Robbins     <address@hidden>
 
        * dfa.c: Sync with GNU grep.
diff --git a/dfa.c b/dfa.c
index ce5e944..29febf5 100644
--- a/dfa.c
+++ b/dfa.c
@@ -279,15 +279,12 @@ typedef struct
   char backref;                        /* True if this state matches a 
\<digit>. */
   unsigned char constraint;    /* Constraint for this state to accept. */
   int first_end;               /* Token value of the first END in elems. */
-#if MBS_SUPPORT
   position_set mbps;           /* Positions which can match multibyte
                                   characters.  e.g. period.
                                   These staff are used only if
                                   MB_CUR_MAX > 1.  */
-#endif
 } dfa_state;
 
-#if MBS_SUPPORT
 /* A bracket operator.
    e.g. [a-c], [[:alpha:]], etc.  */
 struct mb_char_classes
@@ -306,7 +303,6 @@ struct mb_char_classes
   char **coll_elems;
   int ncoll_elems;             /* Collating elements.  */
 };
-#endif
 
 /* A compiled regular expression. */
 struct dfa
@@ -485,10 +481,8 @@ prtok (token t)
         case OR: s = "OR"; break;
         case LPAREN: s = "LPAREN"; break;
         case RPAREN: s = "RPAREN"; break;
-#if MBS_SUPPORT
         case ANYCHAR: s = "ANYCHAR"; break;
         case MBCSET: s = "MBCSET"; break;
-#endif /* MBS_SUPPORT */
         default: s = "CSET"; break;
         }
       fprintf(stderr, "%s", s);
@@ -608,7 +602,8 @@ setbit_c (int b, charclass c)
   setbit (b, c);
 }
 #else
-#define setbit_c setbit
+# define setbit_c setbit
+static inline bool setbit_wc (wint_t wc, charclass c) { abort (); }
 #endif
 
 /* Like setbit_c, but if case is folded, set both cases of a letter.  For
@@ -618,7 +613,6 @@ setbit_c (int b, charclass c)
 static void
 setbit_case_fold_c (int b, charclass c)
 {
-#if MBS_SUPPORT
   if (MB_CUR_MAX > 1)
     {
       wint_t wc = btowc (b);
@@ -629,7 +623,6 @@ setbit_case_fold_c (int b, charclass c)
         setbit_wc (iswupper (wc) ? towlower (wc) : towupper (wc), c);
     }
   else
-#endif
     {
       setbit (b, c);
       if (case_fold && isalpha (b))
@@ -672,7 +665,6 @@ static int minrep, maxrep;  /* Repeat counts for {m,n}. */
 
 static int cur_mb_len = 1;     /* Length of the multibyte representation of
                                    wctok.  */
-#if MBS_SUPPORT
 /* These variables are used only if (MB_CUR_MAX > 1).  */
 static mbstate_t mbs;          /* Mbstate for mbrlen().  */
 static wchar_t wctok;          /* Wide character representation of the current
@@ -695,7 +687,6 @@ static wchar_t *inputwcs;   /* Wide character 
representation of input
                                    And inputwcs[i] is the codepoint.  */
 static unsigned char const *buf_begin; /* reference to begin in dfaexec().  */
 static unsigned char const *buf_end;   /* reference to end in dfaexec().  */
-#endif /* MBS_SUPPORT  */
 
 
 #if MBS_SUPPORT
@@ -809,8 +800,8 @@ parse_bracket_exp (void)
      Bit 3 = includes ranges, char/equiv classes or collation elements.  */
   int colon_warning_state;
 
-#if MBS_SUPPORT
-  wint_t wc, wc1, wc2;
+  wint_t wc;
+  wint_t wc2;
 
   /* Work area to build a mb_char_classes.  */
   struct mb_char_classes *work_mbc;
@@ -834,7 +825,6 @@ parse_bracket_exp (void)
     }
   else
     work_mbc = NULL;
-#endif
 
   memset (ccl, 0, sizeof ccl);
   FETCH_WC (c, wc, _("unbalanced ["));
@@ -846,6 +836,7 @@ parse_bracket_exp (void)
   else
     invert = 0;
 
+  wint_t wc1 = 0;
   colon_warning_state = (c == ':');
   do
     {
@@ -864,10 +855,8 @@ parse_bracket_exp (void)
 
           /* If pattern contains `[[:', `[[.', or `[[='.  */
           if (c1 == ':'
-#if MBS_SUPPORT
               /* TODO: handle `[[.' and `[[=' also for MB_CUR_MAX == 1.  */
               || (MB_CUR_MAX > 1 && (c1 == '.' || c1 == '='))
-#endif
               )
             {
               size_t len = 0;
@@ -898,7 +887,6 @@ parse_bracket_exp (void)
                   if (!pred)
                     dfaerror(_("invalid character class"));
 
-#if MBS_SUPPORT
                   if (MB_CUR_MAX > 1 && !pred->single_byte_only)
                     {
                       /* Store the character class as wctype_t.  */
@@ -911,15 +899,13 @@ parse_bracket_exp (void)
                                            work_mbc->nch_classes + 1);
                       work_mbc->ch_classes[work_mbc->nch_classes++] = wt;
                     }
-#endif
 
                   for (c2 = 0; c2 < NOTCHAR; ++c2)
                     if (pred->func(c2))
                       setbit_case_fold_c (c2, ccl);
                 }
 
-#if MBS_SUPPORT
-              else if (c1 == '=' || c1 == '.')
+              else if (MBS_SUPPORT && (c1 == '=' || c1 == '.'))
                 {
                   char *elem;
                   MALLOC(elem, len + 1);
@@ -947,7 +933,6 @@ parse_bracket_exp (void)
                       work_mbc->coll_elems[work_mbc->ncoll_elems++] = elem;
                     }
                 }
-#endif
               colon_warning_state |= 8;
 
               /* Fetch new lookahead character.  */
@@ -984,7 +969,6 @@ parse_bracket_exp (void)
               && (syntax_bits & RE_BACKSLASH_ESCAPE_IN_LISTS))
             FETCH_WC(c2, wc2, _("unbalanced ["));
 
-#if MBS_SUPPORT
           if (MB_CUR_MAX > 1)
             {
               /* When case folding map a range, say [m-z] (or even [M-z])
@@ -1016,7 +1000,6 @@ parse_bracket_exp (void)
 #endif
             }
           else
-#endif
             {
               c1 = c;
               if (case_fold)
@@ -1035,45 +1018,39 @@ parse_bracket_exp (void)
 
       colon_warning_state |= (c == ':') ? 2 : 4;
 
-#if MBS_SUPPORT
-      if (MB_CUR_MAX > 1)
+      if (MB_CUR_MAX == 1)
         {
-          if (case_fold && iswalpha(wc))
-            {
-              wc = towlower(wc);
-              if (!setbit_wc (wc, ccl))
-                {
-                  REALLOC_IF_NECESSARY(work_mbc->chars, chars_al,
-                                       work_mbc->nchars + 1);
-                  work_mbc->chars[work_mbc->nchars++] = wc;
-                }
-#ifdef GREP
-              continue;
-#else
-              wc = towupper(wc);
-#endif
-            }
+          setbit_case_fold_c (c, ccl);
+          continue;
+        }
+
+      if (case_fold && iswalpha(wc))
+        {
+          wc = towlower(wc);
           if (!setbit_wc (wc, ccl))
             {
               REALLOC_IF_NECESSARY(work_mbc->chars, chars_al,
                                    work_mbc->nchars + 1);
               work_mbc->chars[work_mbc->nchars++] = wc;
             }
-        }
-      else
+#ifdef GREP
+          continue;
+#else
+          wc = towupper(wc);
 #endif
-        setbit_case_fold_c (c, ccl);
+        }
+      if (!setbit_wc (wc, ccl))
+        {
+          REALLOC_IF_NECESSARY(work_mbc->chars, chars_al,
+                               work_mbc->nchars + 1);
+          work_mbc->chars[work_mbc->nchars++] = wc;
+        }
     }
-  while ((
-#if MBS_SUPPORT
-         wc = wc1,
-#endif
-         (c = c1) != ']'));
+  while ((wc = wc1, (c = c1) != ']'));
 
   if (colon_warning_state == 7)
     dfawarn (_("character class syntax is [[:space:]], not [:space:]"));
 
-#if MBS_SUPPORT
   if (MB_CUR_MAX > 1)
     {
       static charclass zeroclass;
@@ -1081,13 +1058,10 @@ parse_bracket_exp (void)
       work_mbc->cset = equal(ccl, zeroclass) ? -1 : charclass_index(ccl);
       return MBCSET;
     }
-#endif
 
   if (invert)
     {
-#if MBS_SUPPORT
       assert(MB_CUR_MAX == 1);
-#endif
       notset(ccl);
       if (syntax_bits & RE_HAT_LISTS_NOT_NEWLINE)
         clrbit(eolbyte, ccl);
@@ -1115,7 +1089,6 @@ lex (void)
      "if (backslash) ...".  */
   for (i = 0; i < 2; ++i)
     {
-#if MBS_SUPPORT
       if (MB_CUR_MAX > 1)
         {
           FETCH_WC (c, wctok, NULL);
@@ -1123,7 +1096,6 @@ lex (void)
             goto normal_char;
         }
       else
-#endif /* MBS_SUPPORT  */
         FETCH(c, NULL);
 
       switch (c)
@@ -1346,7 +1318,6 @@ lex (void)
         case '.':
           if (backslash)
             goto normal_char;
-#if MBS_SUPPORT
           if (MB_CUR_MAX > 1)
             {
               /* In multibyte environment period must match with a single
@@ -1354,7 +1325,6 @@ lex (void)
               laststart = 0;
               return lasttok = ANYCHAR;
             }
-#endif /* MBS_SUPPORT */
           zeroset(ccl);
           notset(ccl);
           if (!(syntax_bits & RE_DOT_NEWLINE))
@@ -1399,12 +1369,10 @@ lex (void)
         default:
         normal_char:
           laststart = 0;
-#if MBS_SUPPORT
           /* For multibyte character sets, folding is done in atom.  Always
              return WCHAR.  */
           if (MB_CUR_MAX > 1)
             return lasttok = WCHAR;
-#endif
 
           if (case_fold && isalpha(c))
             {
@@ -1435,16 +1403,12 @@ static int depth;               /* Current depth of a 
hypothetical stack
 static void
 addtok_mb (token t, int mbprop)
 {
-#if MBS_SUPPORT
   if (MB_CUR_MAX > 1)
     {
       REALLOC_IF_NECESSARY(dfa->multibyte_prop, dfa->nmultibyte_prop,
                            dfa->tindex + 1);
       dfa->multibyte_prop[dfa->tindex] = mbprop;
     }
-#else
-  (void) mbprop;
-#endif
 
   REALLOC_IF_NECESSARY(dfa->tokens, dfa->talloc, dfa->tindex + 1);
   dfa->tokens[dfa->tindex++] = t;
@@ -1471,16 +1435,13 @@ addtok_mb (token t, int mbprop)
     dfa->depth = depth;
 }
 
-#if MBS_SUPPORT
 static void addtok_wc (wint_t wc);
-#endif
 
 /* Add the given token to the parse tree, maintaining the depth count and
    updating the maximum depth if necessary. */
 static void
 addtok (token t)
 {
-#if MBS_SUPPORT
   if (MB_CUR_MAX > 1 && t == MBCSET)
     {
       bool need_or = false;
@@ -1528,8 +1489,9 @@ addtok (token t)
         }
     }
   else
-#endif
-    addtok_mb (t, 3);
+    {
+      addtok_mb (t, 3);
+    }
 }
 
 #if MBS_SUPPORT
@@ -1561,10 +1523,14 @@ addtok_wc (wint_t wc)
       addtok(CAT);
     }
 }
+#else
+static void addtok_wc (wint_t wc) {}
+#endif
 
 static void
 add_utf8_anychar (void)
 {
+#if MBS_SUPPORT
   static const charclass utf8_classes[5] = {
       {  0,  0,  0,  0, ~0, ~0, 0, 0 },            /* 80-bf: non-lead bytes */
       { ~0, ~0, ~0, ~0, 0, 0, 0, 0 },              /* 00-7f: 1-byte sequence */
@@ -1609,8 +1575,8 @@ add_utf8_anychar (void)
       addtok (CAT);
       addtok (OR);
     }
-}
 #endif
+}
 
 /* The grammar understood by the parser is as follows.
 
@@ -1654,8 +1620,7 @@ atom (void)
     {
       /* empty */
     }
-#if MBS_SUPPORT
-  else if (tok == WCHAR)
+  else if (MBS_SUPPORT && tok == WCHAR)
     {
       addtok_wc (case_fold ? towlower(wctok) : wctok);
 #ifndef GREP
@@ -1668,8 +1633,7 @@ atom (void)
 
       tok = lex();
     }
-
-  else if (tok == ANYCHAR && using_utf8())
+  else if (MBS_SUPPORT && tok == ANYCHAR && using_utf8())
     {
       /* For UTF-8 expand the period to a series of CSETs that define a valid
          UTF-8 character.  This avoids using the slow multibyte path.  I'm
@@ -1681,8 +1645,6 @@ atom (void)
       add_utf8_anychar();
       tok = lex();
     }
-#endif /* MBS_SUPPORT  */
-
   else if ((tok >= 0 && tok < NOTCHAR) || tok >= CSET || tok == BACKREF
            || tok == BEGLINE || tok == ENDLINE || tok == BEGWORD
 #if MBS_SUPPORT
@@ -1735,11 +1697,9 @@ copytoks (int tindex, int ntokens)
   for (i = 0; i < ntokens; ++i)
     {
       addtok(dfa->tokens[tindex + i]);
-#if MBS_SUPPORT
       /* Update index into multibyte csets.  */
       if (MB_CUR_MAX > 1 && dfa->tokens[tindex + i] == MBCSET)
         dfa->multibyte_prop[dfa->tindex - 1] = dfa->multibyte_prop[tindex + i];
-#endif
     }
 }
 
@@ -1819,13 +1779,11 @@ dfaparse (char const *s, size_t len, struct dfa *d)
   lasttok = END;
   laststart = 1;
   parens = 0;
-#if MBS_SUPPORT
   if (MB_CUR_MAX > 1)
     {
       cur_mb_len = 0;
       memset(&mbs, 0, sizeof mbs);
     }
-#endif /* MBS_SUPPORT  */
 
   if (! syntax_bits_set)
     dfaerror(_("no syntax specified"));
@@ -1967,10 +1925,11 @@ state_index (struct dfa *d, position_set const *s, int 
newline, int letter)
   d->states[i].backref = 0;
   d->states[i].constraint = 0;
   d->states[i].first_end = 0;
-#if MBS_SUPPORT
-  d->states[i].mbps.nelem = 0;
-  d->states[i].mbps.elems = NULL;
-#endif
+  if (MBS_SUPPORT)
+    {
+      d->states[i].mbps.nelem = 0;
+      d->states[i].mbps.elems = NULL;
+    }
   for (j = 0; j < s->nelem; ++j)
     if (d->tokens[s->elems[j].index] < 0)
       {
@@ -2398,9 +2357,7 @@ dfastate (int s, struct dfa *d, int trans[])
   int wants_letter;            /* New state wants to know letter context. */
   int state_letter;            /* New state on a letter transition. */
   static int initialized;      /* Flag for static initialization. */
-#if MBS_SUPPORT
   int next_isnt_1st_byte = 0;  /* Flag if we can't add state0.  */
-#endif
   int i, j, k;
 
   grps = xnmalloc (NOTCHAR, sizeof *grps);
@@ -2425,10 +2382,10 @@ dfastate (int s, struct dfa *d, int trans[])
         setbit(d->tokens[pos.index], matches);
       else if (d->tokens[pos.index] >= CSET)
         copyset(d->charclasses[d->tokens[pos.index] - CSET], matches);
-#if MBS_SUPPORT
-      else if (d->tokens[pos.index] == ANYCHAR
-               || d->tokens[pos.index] == MBCSET)
-      /* MB_CUR_MAX > 1  */
+      else if (MBS_SUPPORT
+               && (d->tokens[pos.index] == ANYCHAR
+                   || d->tokens[pos.index] == MBCSET))
+        /* MB_CUR_MAX > 1  */
         {
           /* ANYCHAR and MBCSET must match with a single character, so we
              must put it to d->states[s].mbps, which contains the positions
@@ -2440,7 +2397,6 @@ dfastate (int s, struct dfa *d, int trans[])
           insert(pos, &(d->states[s].mbps));
           continue;
         }
-#endif /* MBS_SUPPORT */
       else
         continue;
 
@@ -2577,7 +2533,6 @@ dfastate (int s, struct dfa *d, int trans[])
         for (k = 0; k < d->follows[grps[i].elems[j].index].nelem; ++k)
           insert(d->follows[grps[i].elems[j].index].elems[k], &follows);
 
-#if MBS_SUPPORT
       if (d->mb_cur_max > 1)
         {
           /* If a token in follows.elems is not 1st byte of a multibyte
@@ -2608,15 +2563,12 @@ dfastate (int s, struct dfa *d, int trans[])
                 }
             }
         }
-#endif
 
       /* If we are building a searching matcher, throw in the positions
          of state 0 as well. */
-#if MBS_SUPPORT
-      if (d->searchflag && (d->mb_cur_max == 1 || !next_isnt_1st_byte))
-#else
-      if (d->searchflag)
-#endif
+      if (d->searchflag
+          && (! MBS_SUPPORT
+              || (d->mb_cur_max == 1 || !next_isnt_1st_byte)))
         for (j = 0; j < d->states[0].elems.nelem; ++j)
           insert(d->states[0].elems.elems[j], &follows);
 
@@ -2762,7 +2714,6 @@ build_state_zero (struct dfa *d)
   build_state(0, d);
 }
 
-#if MBS_SUPPORT
 /* Multibyte character handling sub-routines for dfaexec.  */
 
 /* Initial state may encounter the byte which is not a single byte character
@@ -3190,11 +3141,13 @@ transit_state (struct dfa *d, int s, unsigned char 
const **pp)
   return s1;
 }
 
+
 /* Initialize mblen_buf and inputwcs with data from the next line.  */
 
 static void
 prepare_wc_buf (const char *begin, const char *end)
 {
+#if MBS_SUPPORT
   unsigned char eol = eolbyte;
   size_t remain_bytes, i;
 
@@ -3235,9 +3188,8 @@ prepare_wc_buf (const char *begin, const char *end)
   buf_end = (unsigned char *) (begin + i);
   mblen_buf[i] = 0;
   inputwcs[i] = 0; /* sentinel */
-}
-
 #endif /* MBS_SUPPORT */
+}
 
 /* Search through a buffer looking for a match to the given struct dfa.
    Find the first occurrence of a string matching the regexp in the
@@ -3283,7 +3235,6 @@ dfaexec (struct dfa *d, char const *begin, char *end,
   saved_end = *(unsigned char *) end;
   *end = eol;
 
-#if MBS_SUPPORT
   if (d->mb_cur_max > 1)
     {
       MALLOC(mblen_buf, end - begin + 2);
@@ -3291,11 +3242,9 @@ dfaexec (struct dfa *d, char const *begin, char *end,
       memset(&mbs, 0, sizeof(mbstate_t));
       prepare_wc_buf ((const char *) p, end);
     }
-#endif /* MBS_SUPPORT */
 
   for (;;)
     {
-#if MBS_SUPPORT
       if (d->mb_cur_max > 1)
         while ((t = trans[s]))
           {
@@ -3329,16 +3278,17 @@ dfaexec (struct dfa *d, char const *begin, char *end,
             trans = d->trans;
           }
       else
-#endif /* MBS_SUPPORT */
-      while ((t = trans[s]) != 0)
         {
-          s1 = t[*p++];
-          if ((t = trans[s1]) == 0)
+          while ((t = trans[s]) != 0)
             {
-              int tmp = s; s = s1; s1 = tmp; /* swap */
-              break;
+              s1 = t[*p++];
+              if ((t = trans[s1]) == 0)
+                {
+                  int tmp = s; s = s1; s1 = tmp; /* swap */
+                  break;
+                }
+              s = t[*p++];
             }
-          s = t[*p++];
         }
 
       if (s >= 0 && (char *) p <= end && d->fails[s])
@@ -3347,19 +3297,16 @@ dfaexec (struct dfa *d, char const *begin, char *end,
             {
               if (backref)
                 *backref = (d->states[s].backref != 0);
-#if MBS_SUPPORT
               if (d->mb_cur_max > 1)
                 {
                   free(mblen_buf);
                   free(inputwcs);
                 }
-#endif /* MBS_SUPPORT */
               *end = saved_end;
               return (char *) p;
             }
 
           s1 = s;
-#if MBS_SUPPORT
           if (d->mb_cur_max > 1)
             {
               /* Can match with a multibyte character (and multicharacter
@@ -3368,8 +3315,7 @@ dfaexec (struct dfa *d, char const *begin, char *end,
               trans = d->trans;
             }
           else
-#endif /* MBS_SUPPORT */
-          s = d->fails[s][*p++];
+            s = d->fails[s][*p++];
           continue;
         }
 
@@ -3379,22 +3325,18 @@ dfaexec (struct dfa *d, char const *begin, char *end,
           if (count)
             ++*count;
 
-#if MBS_SUPPORT
           if (d->mb_cur_max > 1)
             prepare_wc_buf ((const char *) p, end);
-#endif
         }
 
       /* Check if we've run off the end of the buffer. */
       if ((char *) p > end)
         {
-#if MBS_SUPPORT
           if (d->mb_cur_max > 1)
             {
               free(mblen_buf);
               free(inputwcs);
             }
-#endif /* MBS_SUPPORT */
           *end = saved_end;
           return NULL;
         }
@@ -3416,7 +3358,6 @@ dfaexec (struct dfa *d, char const *begin, char *end,
     }
 }
 
-#if MBS_SUPPORT
 static void
 free_mbdata (struct dfa *d)
 {
@@ -3447,7 +3388,6 @@ free_mbdata (struct dfa *d)
   d->mbcsets = NULL;
   d->nmbcsets = 0;
 }
-#endif
 
 /* Initialize the components of a dfa that the other routines don't
    initialize for themselves. */
@@ -3462,8 +3402,8 @@ dfainit (struct dfa *d)
   d->talloc = 1;
   MALLOC(d->tokens, d->talloc);
 
-#if MBS_SUPPORT
   d->mb_cur_max = MB_CUR_MAX;
+
   if (d->mb_cur_max > 1)
     {
       d->nmultibyte_prop = 1;
@@ -3471,17 +3411,15 @@ dfainit (struct dfa *d)
       d->mbcsets_alloc = 1;
       MALLOC(d->mbcsets, d->mbcsets_alloc);
     }
-#endif
 }
 
-#if MBS_SUPPORT
 static void
 dfaoptimize (struct dfa *d)
 {
-  unsigned int i;
-  if (!using_utf8())
+  if (!MBS_SUPPORT || !using_utf8())
     return;
 
+  unsigned int i;
   for (i = 0; i < d->tindex; ++i)
     {
       switch(d->tokens[i])
@@ -3500,7 +3438,6 @@ dfaoptimize (struct dfa *d)
   free_mbdata (d);
   d->mb_cur_max = 1;
 }
-#endif
 
 /* Parse and analyze a single string of the given length. */
 void
@@ -3509,9 +3446,7 @@ dfacomp (char const *s, size_t len, struct dfa *d, int 
searchflag)
   dfainit(d);
   dfaparse(s, len, d);
   dfamust(d);
-#if MBS_SUPPORT
   dfaoptimize(d);
-#endif
   dfaanalyze(d, searchflag);
 }
 
@@ -3525,16 +3460,13 @@ dfafree (struct dfa *d)
   free(d->charclasses);
   free(d->tokens);
 
-#if MBS_SUPPORT
   if (d->mb_cur_max > 1)
     free_mbdata(d);
-#endif /* MBS_SUPPORT */
 
   for (i = 0; i < d->sindex; ++i) {
     free(d->states[i].elems.elems);
-#if MBS_SUPPORT
-    free(d->states[i].mbps.elems);
-#endif /* MBS_SUPPORT */
+    if (MBS_SUPPORT)
+      free(d->states[i].mbps.elems);
   }
   free(d->states);
   for (i = 0; i < d->tindex; ++i)
@@ -4012,10 +3944,9 @@ dfamust (struct dfa *d)
               goto done;
             }
           else if (t >= CSET
-#if MBS_SUPPORT
+                   || !MBS_SUPPORT
                    || t == ANYCHAR
                    || t == MBCSET
-#endif /* MBS_SUPPORT */
                    )
             {
               /* easy enough */
diff --git a/mbsupport.h b/mbsupport.h
index c3a6b33..4b71019 100644
--- a/mbsupport.h
+++ b/mbsupport.h
@@ -3,7 +3,7 @@
  */
 
 /* 
- * Copyright (C) 2004, 2005 the Free Software Foundation, Inc.
+ * Copyright (C) 2004, 2005, 2011 the Free Software Foundation, Inc.
  * 
  * This file is part of GAWK, the GNU implementation of the
  * AWK Programming Language.
@@ -55,5 +55,12 @@
 /* We can handle multibyte strings.  */
 # define MBS_SUPPORT 1
 #else
+# define MBS_SUPPORT 0
+#endif
 # undef MBS_SUPPORT
+# define MBS_SUPPORT 0
+
+#if ! MBS_SUPPORT
+# undef MB_CUR_MAX
+# define MB_CUR_MAX 1
 #endif

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog   |    7 ++
 dfa.c       |  201 +++++++++++++++++++---------------------------------------
 mbsupport.h |    9 +++-
 3 files changed, 81 insertions(+), 136 deletions(-)


hooks/post-receive
-- 
gawk



reply via email to

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