From 4c90306502f858ec95683baf2bfeb9b1fe669c66 Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Sat, 21 Jul 2007 13:39:02 +0200 Subject: Made skipspace() an inline function and changed it to handle the most common case of 'no leading space' very fast, and avoid calling isspace() --- tools.h | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'tools.h') diff --git a/tools.h b/tools.h index fc9c87bf..a0c5a528 100644 --- a/tools.h +++ b/tools.h @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: tools.h 1.103 2007/06/23 13:34:28 kls Exp $ + * $Id: tools.h 1.104 2007/07/21 13:35:45 kls Exp $ */ #ifndef __TOOLS_H @@ -173,7 +173,14 @@ char *strcpyrealloc(char *dest, const char *src); char *strn0cpy(char *dest, const char *src, size_t n); char *strreplace(char *s, char c1, char c2); char *strreplace(char *s, const char *s1, const char *s2); ///< re-allocates 's' and deletes the original string if necessary! -char *skipspace(const char *s); +inline char *skipspace(const char *s) +{ + if (*s > ' ') // most strings don't have any leading space, so handle this case as fast as possible + return (char *)s; + while (*s && *s <= ' ') // avoiding isspace() here, because it is much slower + s++; + return (char *)s; +} char *stripspace(char *s); char *compactspace(char *s); cString strescape(const char *s, const char *chars); -- cgit v1.2.3