X-Git-Url: https://git.saurik.com/apple/libc.git/blobdiff_plain/3d9156a7a519a5e3aa1b92e9d9d4b991f1aed7ff..b5d655f7532a546b54809da387f7467d128a756b:/regex/FreeBSD/regex2.h.patch diff --git a/regex/FreeBSD/regex2.h.patch b/regex/FreeBSD/regex2.h.patch index fd35a89..1b07d49 100644 --- a/regex/FreeBSD/regex2.h.patch +++ b/regex/FreeBSD/regex2.h.patch @@ -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) @@ -12,7 +19,16 @@ { 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) == '_')