From 7baead578db7e47aedfcd3a5a21a69b9f37630d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eric=20B=C3=A9nard?= Date: Thu, 5 Jul 2012 12:22:45 +0200 Subject: [PATCH] string: add strim for ONFI code MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Eric BĂ©nard Signed-off-by: Sascha Hauer --- include/linux/string.h | 3 +++ lib/string.c | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/include/linux/string.h b/include/linux/string.h index 62d743ee5..afd0aa603 100644 --- a/include/linux/string.h +++ b/include/linux/string.h @@ -93,6 +93,9 @@ extern int memcmp(const void *,const void *,__kernel_size_t); #ifndef __HAVE_ARCH_MEMCHR extern void * memchr(const void *,int,__kernel_size_t); #endif +extern char * skip_spaces(const char *); + +extern char *strim(char *); #ifdef __cplusplus } diff --git a/lib/string.c b/lib/string.c index 28650883c..db4f2ae7d 100644 --- a/lib/string.c +++ b/lib/string.c @@ -567,3 +567,42 @@ void *memchr(const void *s, int c, size_t n) #endif EXPORT_SYMBOL(memchr); +/** + * skip_spaces - Removes leading whitespace from @str. + * @str: The string to be stripped. + * + * Returns a pointer to the first non-whitespace character in @str. + */ +char *skip_spaces(const char *str) +{ + while (isspace(*str)) + ++str; + return (char *)str; +} + +/** + * strim - Removes leading and trailing whitespace from @s. + * @s: The string to be stripped. + * + * Note that the first trailing whitespace is replaced with a %NUL-terminator + * in the given string @s. Returns a pointer to the first non-whitespace + * character in @s. + */ +char *strim(char *s) +{ + size_t size; + char *end; + + s = skip_spaces(s); + size = strlen(s); + if (!size) + return s; + + end = s + size - 1; + while (end >= s && isspace(*end)) + end--; + *(end + 1) = '\0'; + + return s; +} +EXPORT_SYMBOL(strim);