Mercurial > hg > nginx
comparison src/core/ngx_string.c @ 1107:db7c468c447d
ngx_strcasecmp()/ngx_strncasecmp()
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Wed, 14 Feb 2007 18:51:19 +0000 |
parents | ce08bc4cb97b |
children | 5eae5751507f |
comparison
equal
deleted
inserted
replaced
1106:2c7fed12fab7 | 1107:db7c468c447d |
---|---|
426 | 426 |
427 return buf; | 427 return buf; |
428 } | 428 } |
429 | 429 |
430 | 430 |
431 /* | |
432 * We use ngx_strcasecmp()/ngx_strncasecmp() for 7-bit ASCII string only, | |
433 * and implement our own ngx_strcasecmp()/ngx_strncasecmp() | |
434 * to avoid libc locale overhead. Besides, we use the ngx_uint_t's | |
435 * instead of the u_char's, because they are slightly faster. | |
436 */ | |
437 | |
438 ngx_int_t | |
439 ngx_strcasecmp(u_char *s1, u_char *s2) | |
440 { | |
441 ngx_uint_t c1, c2; | |
442 | |
443 for ( ;; ) { | |
444 c1 = (ngx_uint_t) *s1++; | |
445 c2 = (ngx_uint_t) *s2++; | |
446 | |
447 c1 = (c1 >= 'A' && c1 <= 'Z') ? (c1 | 0x20) : c1; | |
448 c2 = (c2 >= 'A' && c2 <= 'Z') ? (c2 | 0x20) : c2; | |
449 | |
450 if (c1 == c2) { | |
451 | |
452 if (c1) { | |
453 continue; | |
454 } | |
455 | |
456 return 0; | |
457 } | |
458 | |
459 return c1 - c2; | |
460 } | |
461 } | |
462 | |
463 | |
464 ngx_int_t | |
465 ngx_strncasecmp(u_char *s1, u_char *s2, size_t n) | |
466 { | |
467 ngx_uint_t c1, c2; | |
468 | |
469 while (n) { | |
470 c1 = (ngx_uint_t) *s1++; | |
471 c2 = (ngx_uint_t) *s2++; | |
472 | |
473 c1 = (c1 >= 'A' && c1 <= 'Z') ? (c1 | 0x20) : c1; | |
474 c2 = (c2 >= 'A' && c2 <= 'Z') ? (c2 | 0x20) : c2; | |
475 | |
476 if (c1 == c2) { | |
477 | |
478 if (c1) { | |
479 n--; | |
480 continue; | |
481 } | |
482 | |
483 return 0; | |
484 } | |
485 | |
486 return c1 - c2; | |
487 } | |
488 | |
489 return 0; | |
490 } | |
491 | |
492 | |
431 ngx_int_t | 493 ngx_int_t |
432 ngx_rstrncmp(u_char *s1, u_char *s2, size_t n) | 494 ngx_rstrncmp(u_char *s1, u_char *s2, size_t n) |
433 { | 495 { |
434 if (n == 0) { | 496 if (n == 0) { |
435 return 0; | 497 return 0; |