Rev 4223 | Rev 4234 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 4223 | Rev 4224 | ||
---|---|---|---|
Line 456... | Line 456... | ||
456 | * 1 if second smaller. |
456 | * 1 if second smaller. |
457 | * |
457 | * |
458 | */ |
458 | */ |
459 | int str_cmp(const char *s1, const char *s2) |
459 | int str_cmp(const char *s1, const char *s2) |
460 | { |
460 | { |
461 | wchar_t c1; |
461 | wchar_t c1 = 0; |
462 | wchar_t c2; |
462 | wchar_t c2 = 0; |
463 | 463 | ||
464 | size_t off1 = 0; |
464 | size_t off1 = 0; |
465 | size_t off2 = 0; |
465 | size_t off2 = 0; |
466 | 466 | ||
- | 467 | while (true) { |
|
467 | while ((c1 = str_decode(s1, &off1, STR_NO_LIMIT) != 0) |
468 | c1 = str_decode(s1, &off1, STR_NO_LIMIT); |
468 | && (c2 = str_decode(s2, &off2, STR_NO_LIMIT) != 0)) { |
469 | c2 = str_decode(s2, &off2, STR_NO_LIMIT); |
469 | - | ||
470 | if (off1 != off2) |
- | |
471 | break; |
- | |
472 | 470 | ||
473 | if (c1 < c2) |
471 | if (c1 < c2) |
474 | return -1; |
472 | return -1; |
475 | 473 | ||
476 | if (c1 > c2) |
474 | if (c1 > c2) |
477 | return 1; |
475 | return 1; |
- | 476 | ||
- | 477 | if (c1 == 0 || c2 == 0) |
|
- | 478 | break; |
|
478 | } |
479 | } |
479 | 480 | ||
480 | if ((off1 == off2) && (c1 == c2)) |
- | |
481 | return 0; |
481 | return 0; |
482 | - | ||
483 | if ((c1 == 0) || (off1 < off2)) |
- | |
484 | return -1; |
- | |
485 | - | ||
486 | return 1; |
- | |
487 | } |
482 | } |
488 | 483 | ||
489 | /** Compare two NULL terminated strings with length limit. |
484 | /** Compare two NULL terminated strings with length limit. |
490 | * |
485 | * |
491 | * Do a char-by-char comparison of two NULL-terminated strings. |
486 | * Do a char-by-char comparison of two NULL-terminated strings. |
Line 507... | Line 502... | ||
507 | 502 | ||
508 | size_t off1 = 0; |
503 | size_t off1 = 0; |
509 | size_t off2 = 0; |
504 | size_t off2 = 0; |
510 | 505 | ||
511 | count_t len = 0; |
506 | count_t len = 0; |
512 | 507 | ||
513 | while ((len < max_len) |
508 | while (true) { |
514 | && ((c1 = str_decode(s1, &off1, STR_NO_LIMIT)) != 0) |
- | |
515 | && ((c2 = str_decode(s2, &off2, STR_NO_LIMIT)) != 0)) { |
- | |
516 | - | ||
517 | if (off1 != off2) |
509 | if (len >= max_len) |
518 | break; |
510 | break; |
- | 511 | ||
- | 512 | c1 = str_decode(s1, &off1, STR_NO_LIMIT); |
|
- | 513 | c2 = str_decode(s2, &off2, STR_NO_LIMIT); |
|
519 | 514 | ||
520 | if (c1 < c2) |
515 | if (c1 < c2) |
521 | return -1; |
516 | return -1; |
522 | 517 | ||
523 | if (c1 > c2) |
518 | if (c1 > c2) |
524 | return 1; |
519 | return 1; |
- | 520 | ||
- | 521 | if (c1 == 0 || c2 == 0) |
|
- | 522 | break; |
|
525 | 523 | ||
526 | len++; |
524 | ++len; |
527 | } |
525 | } |
528 | 526 | ||
529 | if ((off1 == off2) && (len == max_len) && (c1 == c2)) |
- | |
530 | return 0; |
527 | return 0; |
531 | 528 | ||
532 | if ((c1 == 0) || (off1 < off2)) |
- | |
533 | return -1; |
- | |
534 | - | ||
535 | return 1; |
- | |
536 | } |
529 | } |
537 | 530 | ||
538 | /** Copy NULL-terminated string. |
531 | /** Copy NULL-terminated string. |
539 | * |
532 | * |
540 | * Copy source string @a src to destination buffer @a dst. |
533 | * Copy source string @a src to destination buffer @a dst. |
Line 556... | Line 549... | ||
556 | 549 | ||
557 | wchar_t ch; |
550 | wchar_t ch; |
558 | size_t str_off = 0; |
551 | size_t str_off = 0; |
559 | size_t dst_off = 0; |
552 | size_t dst_off = 0; |
560 | 553 | ||
561 | while ((ch = str_decode(src, &str_off, STR_NO_LIMIT) != 0)) { |
554 | while ((ch = str_decode(src, &str_off, STR_NO_LIMIT)) != 0) { |
562 | if (chr_encode(ch, dst, &dst_off, size) != EOK) |
555 | if (chr_encode(ch, dst, &dst_off, size) != EOK) |
563 | break; |
556 | break; |
564 | } |
557 | } |
565 | 558 | ||
566 | if (dst_off >= size) |
559 | if (dst_off >= size) |
Line 614... | Line 607... | ||
614 | const char *str_chr(const char *str, wchar_t ch) |
607 | const char *str_chr(const char *str, wchar_t ch) |
615 | { |
608 | { |
616 | wchar_t acc; |
609 | wchar_t acc; |
617 | size_t off = 0; |
610 | size_t off = 0; |
618 | 611 | ||
619 | while ((acc = str_decode(str, &off, STR_NO_LIMIT) != 0)) { |
612 | while ((acc = str_decode(str, &off, STR_NO_LIMIT)) != 0) { |
620 | if (acc == ch) |
613 | if (acc == ch) |
621 | return (str + off); |
614 | return (str + off); |
622 | } |
615 | } |
623 | 616 | ||
624 | return NULL; |
617 | return NULL; |