[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
[dm-devel] [PATCH v4 10/12] string: factorize skip_spaces and export it to be generally available
- From: André Goddard Rosa <andre goddard gmail com>
- To: Martin Schwidefsky <schwidefsky de ibm com>, Heiko Carstens <heiko carstens de ibm com>, linux390 de ibm com, Michael Holzheu <holzheu linux vnet ibm com>, Andrew Morton <akpm linux-foundation org>, Stoyan Gaydarov <stoyboyker gmail com>, Julia Lawall <julia diku dk>, Jeff Dike <jdike addtoit com>, James Morris <jmorris namei org>, WANG Cong <wangcong zeuux org>, Pekka Enberg <penberg cs helsinki fi>, David Howells <dhowells redhat com>, Thomas Gleixner <tglx linutronix de>, Ingo Molnar <mingo redhat com>, "H . Peter Anvin" <hpa zytor com>, x86 kernel org, Alexey Dobriyan <adobriyan gmail com>, Joe Perches <joe perches com>, Alan Cox <alan lxorguk ukuu org uk>, Arjan van de Ven <arjan linux intel com>, Neil Brown <neilb suse de>, Alasdair G Kergon <agk redhat com>, Mike Snitzer <snitzer redhat com>, Mikulas Patocka <mpatocka redhat com>, Jens Axboe <jens axboe oracle com>, "Martin K . Petersen" <martin petersen oracle com>, Andre Noll <maan systemlinux org>, Kyle McMartin <kyle mcmartin ca>, Helge Deller <deller gmx de>, "James E . J . Bottomley" <jejb parisc-linux org>, Roel Kluin <roel kluin gmail com>, Henrique de Moraes Holschuh <ibm-acpi hmh eng br>, Len Brown <len brown intel com>, Adam Belay <abelay mit edu>, Bjorn Helgaas <bjorn helgaas hp com>, Stefan Haberland <stefan haberland de ibm com>, Stefan Weinhuber <wein de ibm com>, Richard Purdie <rpurdie rpsys net>, Andrea Righi <righi andrea gmail com>, Greg Kroah-Hartman <gregkh suse de>, Pavel Roskin <proski gnu org>, Andrey Borzenkov <arvidjaar mail ru>, Steve Dickson <steved redhat com>, Trond Myklebust <Trond Myklebust netapp com>, Daire Byrne <Daire Byrne framestore com>, Al Viro <viro zeniv linux org uk>, "Theodore Ts'o" <tytso mit edu>, Andreas Dilger <adilger sun com>, Eric Sandeen <sandeen redhat com>, Jan Kara <jack suse cz>, Rusty Russell <rusty rustcorp com au>, Takashi Iwai <tiwai suse de>, Frederic Weisbecker <fweisbec gmail com>, Sitsofe Wheeler <sitsofe yahoo com>, Christof Schmitt <christof schmitt de ibm com>, Greg Banks <gnb melbourne sgi com>, Jason Baron <jbaron redhat com>, "David S . Miller" <davem davemloft net>, Steven Rostedt <rostedt goodmis org>, Samuel Ortiz <samuel sortiz org>, Patrick McHardy <kaber trash net>, Jan Engelhardt <jengelh medozas de>, Roman Hoog Antink <rha open ch>, Jaroslav Kysela <perex perex cz>, linux-s390 vger kernel org, linux-kernel vger kernel org, user-mode-linux-devel lists sourceforge net, user-mode-linux-user lists sourceforge net, dm-devel redhat com, linux-raid vger kernel org, linux-parisc vger kernel org, ibm-acpi-devel lists sourceforge net, linux-cachefs redhat com, linux-ext4 vger kernel org, netdev vger kernel org, netfilter-devel vger kernel org, netfilter vger kernel org, coreteam netfilter org, alsa-devel alsa-project org
- Cc: André Goddard Rosa <andre goddard gmail com>
- Subject: [dm-devel] [PATCH v4 10/12] string: factorize skip_spaces and export it to be generally available
- Date: Sat, 7 Nov 2009 13:16:18 -0200
On the following sentence:
while (*s && isspace(*s))
s++;
If *s == 0, isspace() evaluates to ((_ctype[*s] & 0x20) != 0), which
evaluates to ((0x08 & 0x20) != 0) which equals to 0 as well.
If *s == 1, we depend on isspace() result anyway.
In other words, "a char equals zero is never a space". So remove this check.
Also, *s != 0 is by far the most common case (non-empty string).
Signed-off-by: André Goddard Rosa <andre goddard gmail com>
---
include/linux/string.h | 1 +
lib/string.c | 19 +++++++++++++++----
2 files changed, 16 insertions(+), 4 deletions(-)
diff --git a/include/linux/string.h b/include/linux/string.h
index b850886..3bba9ee 100644
--- a/include/linux/string.h
+++ b/include/linux/string.h
@@ -62,6 +62,7 @@ extern char * strnchr(const char *, size_t, int);
#ifndef __HAVE_ARCH_STRRCHR
extern char * strrchr(const char *,int);
#endif
+extern const char * __must_check skip_spaces(const char *);
extern char * __must_check strstrip(char *);
#ifndef __HAVE_ARCH_STRSTR
extern char * strstr(const char *,const char *);
diff --git a/lib/string.c b/lib/string.c
index b19b87a..d9a51d5 100644
--- a/lib/string.c
+++ b/lib/string.c
@@ -330,6 +330,20 @@ EXPORT_SYMBOL(strnchr);
#endif
/**
+ * skip_spaces - Removes leading whitespace from @s.
+ * @s: The string to be stripped.
+ *
+ * Returns a pointer to the first non-whitespace character in @s.
+ */
+const char *skip_spaces(const char *str)
+{
+ while (isspace(*str))
+ ++str;
+ return str;
+}
+EXPORT_SYMBOL(skip_spaces);
+
+/**
* strstrip - Removes leading and trailing whitespace from @s.
* @s: The string to be stripped.
*
@@ -352,10 +366,7 @@ char *strstrip(char *s)
end--;
*(end + 1) = '\0';
- while (*s && isspace(*s))
- s++;
-
- return s;
+ return (char *)skip_spaces(s);
}
EXPORT_SYMBOL(strstrip);
--
1.6.5.2.153.g6e31f.dirty
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]