]> git.saurik.com Git - apple/libc.git/blobdiff - regex/FreeBSD/regex2.h.patch
Libc-498.1.5.tar.gz
[apple/libc.git] / regex / FreeBSD / regex2.h.patch
index fd35a89645aee1d27334effc19487c6ff761dd12..1b07d494b2c4762ac6ee102b2eb20f7bf126ab29 100644 (file)
@@ -1,8 +1,15 @@
---- regex2.h.orig      2004-11-25 11:38:32.000000000 -0800
-+++ regex2.h   2005-02-24 14:26:21.000000000 -0800
-@@ -127,9 +127,10 @@
+--- regex2.h.orig      2005-04-19 14:43:24.000000000 -0700
++++ regex2.h   2005-04-19 14:41:08.000000000 -0700
+@@ -124,16 +124,26 @@
+       int             nranges;
+       int             invert;
+       int             icase;
++      int             *equiv_classes;
++      int             nequiv_classes;
  } cset;
  
++#include "collate.h"
++
  static int
 -CHIN1(cs, ch)
 +CHIN1(cs, ch, loc)
  {
        int i;
  
-@@ -144,15 +145,16 @@
+       assert(ch >= 0);
++      for (i = 0; i < cs->nequiv_classes; i++)
++              /* sadly, we can only deal with single characters from an
++               * equivalence class */
++              if (__collate_equiv_match(cs->equiv_classes[i], NULL, 0, ch, NULL, 0, NULL, NULL, loc) > 0)
++                      return (!cs->invert);
+       if (ch < NC)
+               return (((cs->bmp[ch >> 3] & (1 << (ch & 7))) != 0) ^
+                   cs->invert);
+@@ -144,26 +154,27 @@
                if (cs->ranges[i].min <= ch && ch <= cs->ranges[i].max)
                        return (!cs->invert);
        for (i = 0; i < cs->ntypes; i++)
@@ -31,7 +47,8 @@
  {
  
        assert(ch >= 0);
-@@ -160,10 +162,10 @@
+-      if (ch < NC)
++      if (ch < NC && cs->nequiv_classes == 0)
                return (((cs->bmp[ch >> 3] & (1 << (ch & 7))) != 0) ^
                    cs->invert);
        else if (cs->icase)
@@ -45,7 +62,7 @@
  }
  
  /*
-@@ -193,8 +195,9 @@
+@@ -193,8 +204,9 @@
        size_t nsub;            /* copy of re_nsub */
        int backrefs;           /* does it use back references? */
        sopno nplus;            /* how deep does it nest +s? */
@@ -53,6 +70,7 @@
  };
  
  /* misc utilities */
- #define       OUT     (-2)    /* a non-character value */
+-#define       OUT     (-2)    /* a non-character value */
 -#define ISWORD(c)       (iswalnum((uch)(c)) || (c) == '_')
++#define       OUT     (-130)  /* a non-character value */
 +#define ISWORD(c,l)     (iswalnum_l((uch)(c), l) || (c) == '_')