Re: [Tinyx-devel] [PATCH 2/2] LIBC: Implement more of string.c
Status: Planning
Brought to you by:
davidcohen
From: David C. <da...@gm...> - 2008-01-08 17:19:32
|
Hum, very small and simple implementation. I'll push it today. Br, David Cohen On Jan 8, 2008 12:52 PM, Felipe Balbi <me...@fe...> wrote: > Missing only mem*() functions. > > Signed-off-by: Felipe Balbi <me...@fe...> > --- > include/libc/string.h | 8 +++ > lib/libc/string.c | 141 ++++++++++++++++++++++++++++++++++++++++++++++++- > 2 files changed, 148 insertions(+), 1 deletions(-) > > diff --git a/include/libc/string.h b/include/libc/string.h > index 8815a86..9106e7a 100644 > --- a/include/libc/string.h > +++ b/include/libc/string.h > @@ -22,6 +22,14 @@ > #ifndef __TINYX_LIBC_STRING_H > #define __TINYX_LIBC_STRING_H > > +char *strcat(char *str1, const char *str2); > +char *strchr(const char *str, int ch); > +int strcoll(const char *str1, const char *str2); > int strcmp(const char *str1, const char *str2); > +char *strcpy(char *str1, const char *str2); > +size_t strlen(const char *str); > +char *strncat(char *str1, const char *str2, size_t count); > +int strncmp(const char *str1, const char *str2, size_t count); > +char *strncpy(char *str1, const char *str2, size_t count); > > #endif /* __TINYX_LIBC_STRING_H */ > diff --git a/lib/libc/string.c b/lib/libc/string.c > index d2e41a0..f54a876 100644 > --- a/lib/libc/string.c > +++ b/lib/libc/string.c > @@ -21,7 +21,41 @@ > > #include <libc/string.h> > > -int strcmp(const char *str1, const char *str2) > +/** > + * strcat - Apend one string to another > + * @str1: The destination string > + * @str2: The source string > + */ > +char *strcat(char *str1, const char *str2) > +{ > + char *tmp = str1; > + > + while (*str1) > + str1++; > + while ((*str1++ = *str2++) != '\0') > + ; > + return tmp; > +} > + > +/** > + * strchr - Find the first ocurrence of a character in a string > + * @str: The string to search into > + * @ch: The character to find > + */ > +char *strchr(const char *str, int ch) > +{ > + for (; *str != (char)ch; ++s) > + if (*str == '\0') > + return NULL; > + return (char *)str; > +} > + > +/** > + * strcoll - Compare two strings > + * @str1: First string > + * @str2: Second string > + */ > +int strcoll(const char *str1, const char *str2) > { > while ((*str1) == (*str2)) { > if (!*str1++) > @@ -32,3 +66,108 @@ int strcmp(const char *str1, const char *str2) > > return (*str1) ? 1 : -1; > } > + > +/** > + * strcmp - Lex comparation of two strings > + * @str1: First string > + * @str2: Second string > + */ > +int strcmp(const char *str1, const char *str2) > +{ > + signed char ret; > + > + while (1) { > + if ((ret = *str1 - *str2++) != 0 || !*str1++) > + break; > + } > + return ret; > +} > + > +/** > + * strcpy - Copy the contents of str2 into str1 > + * @str1: The destination string > + * @str2: The source string > + */ > +char *strcpy(char *str1, const char *str2) > +{ > + char *tmp = str1; > + > + while ((*str1++ = *str2++) != '\0') > + > + return tmp; > +} > + > +/** > + * strlen - Find the length of a string > + * @str: The string to be sized > + */ > +size_t strlen(const char *str) > +{ > + const char *tmp; > + > + for (tmp = str; *tmp != '\0'; ++tmp); > + > + return tmp - str; > +} > + > +/** > + * strncat - Append count characters of str2 into str1 > + * @str1: The destination string > + * @str2: The source string > + * @count: The number of characters to append > + */ > +char *strncat(char *str1, const char *str2, size_t count) > +{ > + char *tmp = str1; > + > + if (count) { > + while (*str1) > + str1++; > + while ((*str1++ = *str2++) != 0) { > + if (--count == 0) { > + *str1 = '\0'; > + break; > + } > + } > + } > + return tmp; > +} > + > +/** > + * strncmp - Comparison of count characters > + * @str1: The destination string > + * @str2: The source string > + * @count: The number of characters > + */ > +int strncmp(const char *str1, const char *str2, size_t count) > +{ > + signed char ret; > + > + while (count) { > + if ((ret = *str1 - *str2++) != 0 || !*str1++) > + break; > + count--; > + } > + return ret; > +} > + > +/** > + * strncpy - Copy count characters from str2 into str1 > + * @str1: The destination string > + * @str2: The source string > + * @count: The number of characters > + */ > +char *strncpy(char *str1, const char *str2, size_t count) > +{ > + char *tmp = str1; > + > + while (count) { > + if ((*tmp = *str2) != 0) > + str2++; > + tmp++; > + count--; > + } > + > + return str1; > +} > + > -- > 1.5.4.rc1.21.g0e545-dirty > > > ------------------------------------------------------------------------- > Check out the new SourceForge.net Marketplace. > It's the best place to buy or sell services for > just about anything Open Source. > http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace > _______________________________________________ > Tinyx-devel mailing list > Tin...@li... > https://lists.sourceforge.net/lists/listinfo/tinyx-devel > -- David Cohen Instituto Nokia de Tecnologia - INdT Manaus - Brazil |