X-Git-Url: https://git.saurik.com/apple/libc.git/blobdiff_plain/3d9156a7a519a5e3aa1b92e9d9d4b991f1aed7ff..6990d062918770ee2431fb3310826c5aefbffccd:/regex/FreeBSD/regex2.h.patch diff --git a/regex/FreeBSD/regex2.h.patch b/regex/FreeBSD/regex2.h.patch index fd35a89..ec20caa 100644 --- a/regex/FreeBSD/regex2.h.patch +++ b/regex/FreeBSD/regex2.h.patch @@ -1,18 +1,31 @@ ---- 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.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(cs, ch) -+CHIN1(cs, ch, loc) - cset *cs; - wint_t ch; -+locale_t loc; +-CHIN1(cset *cs, wint_t ch) ++CHIN1(cset *cs, wint_t ch, locale_t 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); +@@ -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++) @@ -23,15 +36,13 @@ } static __inline int --CHIN(cs, ch) -+CHIN(cs, ch, loc) - cset *cs; - wint_t ch; -+locale_t loc; +-CHIN(cset *cs, wint_t ch) ++CHIN(cset *cs, wint_t ch, locale_t loc) { 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 +56,7 @@ } /* -@@ -193,8 +195,9 @@ +@@ -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? */ @@ -53,6 +64,7 @@ }; /* misc utilities */ - #define OUT (-2) /* a non-character value */ +-#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) == '_')