diff options
Diffstat (limited to 'lib_generic')
-rw-r--r-- | lib_generic/string.c | 47 | ||||
-rw-r--r-- | lib_generic/vsprintf.c | 9 |
2 files changed, 56 insertions, 0 deletions
diff --git a/lib_generic/string.c b/lib_generic/string.c index b375b8124..6e69457e5 100644 --- a/lib_generic/string.c +++ b/lib_generic/string.c @@ -307,6 +307,53 @@ char * strpbrk(const char * cs,const char * ct) } #endif +#ifndef __HAVE_ARCH_STRTOK_R +/** + * strtok - Split a string into tokens + * @s: The string to be searched + * @ct: The characters to search for + * + * Dumped from rockbox-3.1 strok.c: + * Copyright (C) 2002 by Daniel Stenberg + * $Id: strtok.c 17847 2008-06-28 18:10:04Z bagder $ + */ +char * +strtok_r(char *ptr, const char *sep, char **end) +{ + if (!ptr) + /* we got NULL input so then we get our last position instead */ + ptr = *end; + + /* pass all letters that are including in the separator string */ + while (*ptr && strchr(sep, *ptr)) + ++ptr; + + if (*ptr) { + /* so this is where the next piece of string starts */ + char *start = ptr; + + /* set the end pointer to the first byte after the start */ + *end = start + 1; + + /* scan through the string to find where it ends, it ends on a + null byte or a character that exists in the separator string */ + while (**end && !strchr(sep, **end)) + ++*end; + + if (**end) { + /* the end is not a null byte */ + **end = '\0'; /* zero terminate it! */ + ++*end; /* advance last pointer to beyond the null byte */ + } + + return start; /* return the position where the string starts */ + } + + /* we ended up on a null byte, there are no more strings to find! */ + return NULL; +} +#endif + #ifndef __HAVE_ARCH_STRTOK /** * strtok - Split a string into tokens diff --git a/lib_generic/vsprintf.c b/lib_generic/vsprintf.c index 8c58a9366..3b282f130 100644 --- a/lib_generic/vsprintf.c +++ b/lib_generic/vsprintf.c @@ -133,6 +133,15 @@ static int skip_atoi(const char **s) return i; } +int atoi(const char *s) +{ + int i=0; + + while (is_digit(*s)) + i = i*10 + *(s++) - '0'; + return i; +} + /* Decimal conversion is by far the most typical, and is used * for /proc and /sys data. This directly impacts e.g. top performance * with many processes running. We optimize it for speed |