33 #ifdef HAVE_STDARG_PROTOTYPES
35 #define va_init_list(a,b) va_start(a,b)
38 #define va_init_list(a,b) va_start(a)
46 if (code >= 0)
return (
UChar* )0;
50 p =
"mismatch";
break;
52 p =
"no support in this configuration";
break;
54 p =
"failed to allocate memory";
break;
56 p =
"match-stack limit over";
break;
58 p =
"undefined type (bug)";
break;
60 p =
"internal parser error (bug)";
break;
62 p =
"stack error (bug)";
break;
64 p =
"undefined bytecode (bug)";
break;
66 p =
"unexpected bytecode (bug)";
break;
68 p =
"default multibyte-encoding is not setted";
break;
70 p =
"can't convert to wide-char on specified multibyte-encoding";
break;
72 p =
"invalid argument";
break;
74 p =
"end pattern at left brace";
break;
76 p =
"end pattern at left bracket";
break;
78 p =
"empty char-class";
break;
80 p =
"premature end of char-class";
break;
82 p =
"end pattern at escape";
break;
84 p =
"end pattern at meta";
break;
86 p =
"end pattern at control";
break;
88 p =
"invalid meta-code syntax";
break;
90 p =
"invalid control-code syntax";
break;
92 p =
"char-class value at end of range";
break;
94 p =
"char-class value at start of range";
break;
96 p =
"unmatched range specifier in char-class";
break;
98 p =
"target of repeat operator is not specified";
break;
100 p =
"target of repeat operator is invalid";
break;
102 p =
"nested repeat operator";
break;
104 p =
"unmatched close parenthesis";
break;
106 p =
"end pattern with unmatched parenthesis";
break;
108 p =
"end pattern in group";
break;
110 p =
"undefined group option";
break;
112 p =
"invalid POSIX bracket type";
break;
114 p =
"invalid pattern in look-behind";
break;
116 p =
"invalid repeat range {lower,upper}";
break;
118 p =
"too big number";
break;
120 p =
"too big number for repeat range";
break;
122 p =
"upper is smaller than lower in repeat range";
break;
124 p =
"empty range in char class";
break;
126 p =
"mismatch multibyte code length in char-class range";
break;
128 p =
"too many multibyte code ranges are specified";
break;
130 p =
"too short multibyte code string";
break;
132 p =
"too big backref number";
break;
134 #ifdef USE_NAMED_GROUP
135 p =
"invalid backref number/name";
break;
137 p =
"invalid backref number";
break;
140 p =
"numbered backref/call is not allowed. (use name)";
break;
142 p =
"too big wide-char value";
break;
144 p =
"too long wide-char value";
break;
146 p =
"invalid code point value";
break;
148 p =
"group name is empty";
break;
150 p =
"invalid group name <%n>";
break;
152 #ifdef USE_NAMED_GROUP
153 p =
"invalid char in group name <%n>";
break;
155 p =
"invalid char in group number <%n>";
break;
158 p =
"undefined name <%n> reference";
break;
160 p =
"undefined group <%n> reference";
break;
162 p =
"multiplex defined name <%n>";
break;
164 p =
"multiplex definition name <%n> call";
break;
166 p =
"never ending recursion";
break;
168 p =
"group number is too big for capture history";
break;
170 p =
"invalid character property name {%n}";
break;
172 p =
"not supported encoding combination";
break;
174 p =
"invalid combination of options";
break;
176 p =
"over thread pass limit count";
break;
179 p =
"undefined error code";
break;
187 sprintf(s,
"%02x", (v & 0377));
192 sprintf(s,
"\\x%02x", (v & 0377));
196 UChar buf[],
int buf_size,
int *is_over)
208 if (code > 0xffff && len + 10 <= buf_size) {
210 sprint_byte((
char*)(&(buf[len+4])), (
unsigned int)(code >> 16));
211 sprint_byte((
char*)(&(buf[len+6])), (
unsigned int)(code >> 8));
212 sprint_byte((
char*)(&(buf[len+8])), (
unsigned int)code);
215 else if (len + 6 <= buf_size) {
217 sprint_byte((
char*)(&(buf[len+4])), (
unsigned int)code);
225 buf[len++] = (
UChar )code;
229 if (len >= buf_size)
break;
232 *is_over = ((p < end) ? 1 : 0);
235 len = (int)
MIN((end - s), buf_size);
237 *is_over = ((buf_size < (end - s)) ? 1 : 0);
245 #define MAX_ERROR_PAR_LEN 30
248 #ifdef HAVE_STDARG_PROTOTYPES
324 n =
xvsnprintf((
char* )buf, bufsize, (
const char* )fmt, args);
326 need = (pat_end - pat) * 4 + 4;
328 if (n + need < (
size_t)bufsize) {
329 strcat((
char* )buf,
": /");
333 while (p < pat_end) {
336 len =
enclen(enc, p, pat_end);
337 while (len-- > 0) *s++ = *p++;
339 else if (*p ==
'/') {
340 *s++ = (
unsigned char )
'\\';
344 len =
enclen(enc, p, pat_end);
346 while (len-- > 0) *s++ = *p++;
355 while (blen-- > 0) *s++ = *bp++;
364 while (len-- > 0) *s++ = *bp++;
377 #ifdef HAVE_STDARG_PROTOTYPES
394 pat, pat_end, fmt, args);