diff options
author | Klaus Schmidinger <vdr@tvdr.de> | 2007-07-21 13:39:02 +0200 |
---|---|---|
committer | Klaus Schmidinger <vdr@tvdr.de> | 2007-07-21 13:39:02 +0200 |
commit | 4c90306502f858ec95683baf2bfeb9b1fe669c66 (patch) | |
tree | 36089396af32aa217f75c32619bbd2a58a1edd80 | |
parent | 214c12289f58c90369fce58af20ae50a22fda34d (diff) | |
download | vdr-4c90306502f858ec95683baf2bfeb9b1fe669c66.tar.gz vdr-4c90306502f858ec95683baf2bfeb9b1fe669c66.tar.bz2 |
Made skipspace() an inline function and changed it to handle the most common case of 'no leading space' very fast, and avoid calling isspace()
-rw-r--r-- | CONTRIBUTORS | 1 | ||||
-rw-r--r-- | HISTORY | 5 | ||||
-rw-r--r-- | tools.c | 9 | ||||
-rw-r--r-- | tools.h | 11 |
4 files changed, 15 insertions, 11 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 937e2a59..6ea33dcc 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -2114,3 +2114,4 @@ Patrice Staudt <staudt@engsystem.net> Tobias Bratfisch <tobias@reel-multimedia.com> for improving numdigits(), isnumber() and strreplace() + for suggesting to make skipspace() an inline function @@ -5276,7 +5276,7 @@ Video Disk Recorder Revision History - Improved performance of the SVDRP commands LSTC and CHAN when used with a channel name. -2007-07-20: Version 1.5.6 +2007-07-21: Version 1.5.6 - Fixed a buffer overflow in initializing the system character table (thanks to Marco Schlüßler). @@ -5290,3 +5290,6 @@ Video Disk Recorder Revision History - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg). - Improved cControl::Launch() to keep 'control' from pointing to uninitialized memory (thanks to Rolf Ahrenberg). +- Made skipspace() an inline function (suggested by Tobias Bratfisch) and changed + it to handle the most common case of 'no leading space' very fast, and avoid + calling isspace(), which made the whole function a lot faster. @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: tools.c 1.133 2007/07/20 14:25:46 kls Exp $ + * $Id: tools.c 1.134 2007/07/21 13:02:45 kls Exp $ */ #include "tools.h" @@ -167,13 +167,6 @@ char *strreplace(char *s, const char *s1, const char *s2) return s; } -char *skipspace(const char *s) -{ - while (*s && isspace(*s)) - s++; - return (char *)s; -} - char *stripspace(char *s) { if (s && *s) { @@ -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); |