Subversion Repositories HelenOS

Rev

Rev 4264 | Rev 4266 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4264 Rev 4265
Line 533... Line 533...
533
 *
533
 *
534
 * @param str String to search.
534
 * @param str String to search.
535
 * @param ch  Character to look for.
535
 * @param ch  Character to look for.
536
 *
536
 *
537
 * @return Pointer to character in @a str or NULL if not found.
537
 * @return Pointer to character in @a str or NULL if not found.
538
 *
-
 
539
 */
538
 */
540
const char *str_chr(const char *str, wchar_t ch)
539
const char *str_chr(const char *str, wchar_t ch)
541
{
540
{
542
    wchar_t acc;
541
    wchar_t acc;
543
    size_t off = 0;
542
    size_t off = 0;
Line 548... Line 547...
548
    }
547
    }
549
   
548
   
550
    return NULL;
549
    return NULL;
551
}
550
}
552
 
551
 
-
 
552
/** Find last occurence of character in string.
-
 
553
 *
-
 
554
 * @param str String to search.
-
 
555
 * @param ch  Character to look for.
-
 
556
 *
-
 
557
 * @return Pointer to character in @a str or NULL if not found.
-
 
558
 */
-
 
559
const char *str_rchr(const char *str, wchar_t ch)
-
 
560
{
-
 
561
    wchar_t acc;
-
 
562
    size_t off = 0;
-
 
563
    char *res;
-
 
564
 
-
 
565
    res = NULL;
-
 
566
    while ((acc = str_decode(str, &off, STR_NO_LIMIT)) != 0) {
-
 
567
        if (acc == ch)
-
 
568
            res = (str + off);
-
 
569
    }
-
 
570
 
-
 
571
    return res;
-
 
572
}
-
 
573
 
553
/** Insert a wide character into a wide string.
574
/** Insert a wide character into a wide string.
554
 *
575
 *
555
 * Insert a wide character into a wide string at position
576
 * Insert a wide character into a wide string at position
556
 * @a pos. The characters after the position are shifted.
577
 * @a pos. The characters after the position are shifted.
557
 *
578
 *
Line 625... Line 646...
625
        c++;
646
        c++;
626
   
647
   
627
    return (tolower(a[c]) - tolower(b[c]));
648
    return (tolower(a[c]) - tolower(b[c]));
628
}
649
}
629
 
650
 
630
/** Return pointer to the first occurence of character c in string.
-
 
631
 *
-
 
632
 * @param str       Scanned string.
-
 
633
 * @param c     Searched character (taken as one byte).
-
 
634
 * @return      Pointer to the matched character or NULL if it is not
-
 
635
 *          found in given string.
-
 
636
 */
-
 
637
char *strchr(const char *str, int c)
-
 
638
{
-
 
639
    while (*str != '\0') {
-
 
640
        if (*str == (char) c)
-
 
641
            return (char *) str;
-
 
642
        str++;
-
 
643
    }
-
 
644
 
-
 
645
    return NULL;
-
 
646
}
-
 
647
 
-
 
648
/** Return pointer to the last occurence of character c in string.
-
 
649
 *
-
 
650
 * @param str       Scanned string.
-
 
651
 * @param c     Searched character (taken as one byte).
-
 
652
 * @return      Pointer to the matched character or NULL if it is not
-
 
653
 *          found in given string.
-
 
654
 */
-
 
655
char *strrchr(const char *str, int c)
-
 
656
{
-
 
657
    char *retval = NULL;
-
 
658
 
-
 
659
    while (*str != '\0') {
-
 
660
        if (*str == (char) c)
-
 
661
            retval = (char *) str;
-
 
662
        str++;
-
 
663
    }
-
 
664
 
-
 
665
    return (char *) retval;
-
 
666
}
-
 
667
 
-
 
668
/** Convert string to a number.
651
/** Convert string to a number.
669
 * Core of strtol and strtoul functions.
652
 * Core of strtol and strtoul functions.
670
 *
653
 *
671
 * @param nptr      Pointer to string.
654
 * @param nptr      Pointer to string.
672
 * @param endptr    If not NULL, function stores here pointer to the first
655
 * @param endptr    If not NULL, function stores here pointer to the first
Line 867... Line 850...
867
 
850
 
868
    if (s == NULL)
851
    if (s == NULL)
869
        s = *next;
852
        s = *next;
870
 
853
 
871
    /* Skip over leading delimiters. */
854
    /* Skip over leading delimiters. */
872
    while (*s && (strchr(delim, *s) != NULL)) ++s;
855
    while (*s && (str_chr(delim, *s) != NULL)) ++s;
873
    start = s;
856
    start = s;
874
 
857
 
875
    /* Skip over token characters. */
858
    /* Skip over token characters. */
876
    while (*s && (strchr(delim, *s) == NULL)) ++s;
859
    while (*s && (str_chr(delim, *s) == NULL)) ++s;
877
    end = s;
860
    end = s;
878
    *next = (*s ? s + 1 : s);
861
    *next = (*s ? s + 1 : s);
879
 
862
 
880
    if (start == end) {
863
    if (start == end) {
881
        return NULL;    /* No more tokens. */
864
        return NULL;    /* No more tokens. */