]> git.saurik.com Git - apple/libc.git/blobdiff - regex/FreeBSD/regex2.h.patch
Libc-825.24.tar.gz
[apple/libc.git] / regex / FreeBSD / regex2.h.patch
diff --git a/regex/FreeBSD/regex2.h.patch b/regex/FreeBSD/regex2.h.patch
deleted file mode 100644 (file)
index ec20caa..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
---- regex2.h.bsdnew    2009-11-11 11:29:04.000000000 -0800
-+++ regex2.h   2009-11-11 12:18:35.000000000 -0800
-@@ -120,14 +120,23 @@ typedef struct {
-       int             nranges;
-       int             invert;
-       int             icase;
-+      int             *equiv_classes;
-+      int             nequiv_classes;
- } cset;
-+#include "collate.h"
-+
- static int
--CHIN1(cset *cs, wint_t ch)
-+CHIN1(cset *cs, wint_t ch, locale_t loc)
- {
-       int i;
-       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);
-@@ -138,24 +147,24 @@ CHIN1(cset *cs, wint_t ch)
-               if (cs->ranges[i].min <= ch && ch <= cs->ranges[i].max)
-                       return (!cs->invert);
-       for (i = 0; i < cs->ntypes; i++)
--              if (iswctype(ch, cs->types[i]))
-+              if (iswctype_l(ch, cs->types[i], loc))
-                       return (!cs->invert);
-       return (cs->invert);
- }
- static __inline int
--CHIN(cset *cs, wint_t ch)
-+CHIN(cset *cs, wint_t ch, locale_t loc)
- {
-       assert(ch >= 0);
--      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)
--              return (CHIN1(cs, ch) || CHIN1(cs, towlower(ch)) ||
--                  CHIN1(cs, towupper(ch)));
-+              return (CHIN1(cs, ch, loc) || CHIN1(cs, towlower_l(ch, loc), loc) ||
-+                  CHIN1(cs, towupper_l(ch, loc), loc));
-       else
--              return (CHIN1(cs, ch));
-+              return (CHIN1(cs, ch, loc));
- }
- /*
-@@ -185,8 +194,9 @@ struct re_guts {
-       size_t nsub;            /* copy of re_nsub */
-       int backrefs;           /* does it use back references? */
-       sopno nplus;            /* how deep does it nest +s? */
-+      locale_t loc;           /* current locale */
- };
- /* misc utilities */
--#define       OUT     (CHAR_MIN - 1)  /* a non-character value */
--#define ISWORD(c)       (iswalnum((uch)(c)) || (c) == '_')
-+#define       OUT     (CHAR_MIN - 2)  /* a non-character value */
-+#define ISWORD(c,l)     (iswalnum_l((uch)(c), l) || (c) == '_')