comparison src/core/ngx_string.c @ 286:5bef04fc3fd5 NGINX_0_5_13

nginx 0.5.13 *) Feature: the COPY and MOVE methods. *) Bugfix: the ngx_http_realip_module set garbage for requests passed via keep-alive connection. *) Bugfix: nginx did not work on big-endian 64-bit Linux. Thanks to Andrei Nigmatulin. *) Bugfix: now when IMAP/POP3 proxy receives too long command it closes the connection right away, but not after timeout. *) Bugfix: if the "epoll" method was used and a client closed a connection prematurely, then nginx closed the connection after a send timeout only. *) Bugfix: nginx could not be built on platforms different from i386, amd64, sparc and ppc; bug appeared in 0.5.8.
author Igor Sysoev <http://sysoev.ru>
date Mon, 19 Feb 2007 00:00:00 +0300
parents 052a7b1d40e5
children 9b7db0df50f0
comparison
equal deleted inserted replaced
285:0e505c8b6528 286:5bef04fc3fd5
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;