Changeset 331 for EcnlProtoTool/trunk/onigmo-6.1.3/src/regerror.c
- Timestamp:
- Jan 21, 2018, 12:10:09 AM (6 years ago)
- Location:
- EcnlProtoTool/trunk/onigmo-6.1.3
- Files:
-
- 1 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
EcnlProtoTool/trunk/onigmo-6.1.3/src/regerror.c
r321 r331 4 4 /*- 5 5 * Copyright (c) 2002-2007 K.Kosako <sndgk393 AT ybb DOT ne DOT jp> 6 * Copyright (c) 2011-201 4K.Takata <kentkt AT csc DOT jp>6 * Copyright (c) 2011-2016 K.Takata <kentkt AT csc DOT jp> 7 7 * All rights reserved. 8 8 * … … 32 32 #include <stdio.h> /* for vsnprintf() */ 33 33 34 #ifdef HAVE_STDARG_PROTOTYPES35 34 #include <stdarg.h> 36 #define va_init_list(a,b) va_start(a,b)37 #else38 #include <varargs.h>39 #define va_init_list(a,b) va_start(a)40 #endif41 35 42 36 extern UChar* … … 66 60 case ONIGERR_MATCH_STACK_LIMIT_OVER: 67 61 p = "match-stack limit over"; break; 62 case ONIGERR_PARSE_DEPTH_LIMIT_OVER: 63 p = "parse depth limit over"; break; 68 64 case ONIGERR_DEFAULT_ENCODING_IS_NOT_SET: 69 65 p = "default multibyte-encoding is not set"; break; … … 180 176 case ONIGERR_INVALID_COMBINATION_OF_OPTIONS: 181 177 p = "invalid combination of options"; break; 182 case ONIGERR_OVER_THREAD_PASS_LIMIT_COUNT:183 p = "over thread pass limit count"; break;184 178 185 179 default: … … 192 186 static void sprint_byte(char* s, unsigned int v) 193 187 { 194 sprintf(s, "%02x", (v & 0377));188 xsnprintf(s, 3, "%02x", (v & 0377)); 195 189 } 196 190 197 191 static void sprint_byte_with_x(char* s, unsigned int v) 198 192 { 199 sprintf(s, "\\x%02x", (v & 0377));193 xsnprintf(s, 5, "\\x%02x", (v & 0377)); 200 194 } 201 195 … … 233 227 } 234 228 235 p += enclen(enc, p );229 p += enclen(enc, p, end); 236 230 if (len >= buf_size) break; 237 231 } … … 253 247 254 248 extern int 255 #ifdef HAVE_STDARG_PROTOTYPES256 249 onig_error_code_to_str(UChar* s, OnigPosition code, ...) 257 #else258 onig_error_code_to_str(s, code, va_alist)259 UChar* s;260 OnigPosition code;261 va_dcl262 #endif263 250 { 264 251 UChar *p, *q; … … 269 256 va_list vargs; 270 257 271 va_ init_list(vargs, code);258 va_start(vargs, code); 272 259 273 260 switch (code) { … … 324 311 } 325 312 326 327 313 void 328 #ifdef HAVE_STDARG_PROTOTYPES 329 onig_snprintf_with_pattern(UChar buf[], int bufsize, OnigEncoding enc, 330 UChar* pat, UChar* pat_end, const UChar *fmt, ...) 331 #else 332 onig_snprintf_with_pattern(buf, bufsize, enc, pat, pat_end, fmt, va_alist) 333 UChar buf[]; 334 int bufsize; 335 OnigEncoding enc; 336 UChar* pat; 337 UChar* pat_end; 338 const UChar *fmt; 339 va_dcl 340 #endif 314 onig_vsnprintf_with_pattern(UChar buf[], int bufsize, OnigEncoding enc, 315 UChar* pat, UChar* pat_end, const UChar *fmt, va_list args) 341 316 { 342 317 size_t need; … … 344 319 UChar *p, *s, *bp; 345 320 UChar bs[6]; 346 va_list args; 347 348 va_init_list(args, fmt); 321 349 322 n = xvsnprintf((char* )buf, bufsize, (const char* )fmt, args); 350 va_end(args);351 323 352 324 need = (pat_end - pat) * 4 + 4; 353 325 354 326 if (n + need < (size_t )bufsize) { 355 strcat((char* )buf, ": /"); 327 static const char sep[] = ": /"; 328 memcpy((char* )buf + n, sep, sizeof(sep)); 356 329 s = buf + onigenc_str_bytelen_null(ONIG_ENCODING_ASCII, buf); 357 330 358 331 p = pat; 359 332 while (p < pat_end) { 360 if (*p == '\\') { 361 *s++ = *p++; 362 len = enclen(enc, p); 363 while (len-- > 0) *s++ = *p++; 364 } 365 else if (*p == '/') { 366 *s++ = (unsigned char )'\\'; 367 *s++ = *p++; 368 } 369 else if (ONIGENC_IS_MBC_HEAD(enc, p)) { 370 len = enclen(enc, p); 333 if (ONIGENC_IS_MBC_HEAD(enc, p, pat_end)) { 334 len = enclen(enc, p, pat_end); 371 335 if (ONIGENC_MBC_MINLEN(enc) == 1) { 372 336 while (len-- > 0) *s++ = *p++; 373 337 } 374 else { /* for UTF16 */338 else { /* for UTF16/32 */ 375 339 int blen; 376 340 … … 383 347 } 384 348 } 349 else if (*p == '\\') { 350 *s++ = *p++; 351 len = enclen(enc, p, pat_end); 352 while (len-- > 0) *s++ = *p++; 353 } 354 else if (*p == '/') { 355 *s++ = (unsigned char )'\\'; 356 *s++ = *p++; 357 } 385 358 else if (!ONIGENC_IS_CODE_PRINT(enc, *p) && 386 359 !ONIGENC_IS_CODE_SPACE(enc, *p)) { … … 399 372 } 400 373 } 374 375 #if 0 /* unused */ 376 void 377 onig_snprintf_with_pattern(UChar buf[], int bufsize, OnigEncoding enc, 378 UChar* pat, UChar* pat_end, const UChar *fmt, ...) 379 { 380 va_list args; 381 va_start(args, fmt); 382 onig_vsnprintf_with_pattern(buf, bufsize, enc, 383 pat, pat_end, fmt, args); 384 va_end(args); 385 } 386 #endif
Note:
See TracChangeset
for help on using the changeset viewer.