From b25e57753f3f4fb3fdde4240e0f617ef8dbea043 Mon Sep 17 00:00:00 2001 From: markus schnalke Date: Wed, 4 Jan 2012 09:54:43 +0100 Subject: [PATCH] sbr/brkstring.c: replaced static brkany() with call to strchr(); plus cleanups --- sbr/brkstring.c | 83 +++++++++++++++++++++---------------------------------- 1 file changed, 31 insertions(+), 52 deletions(-) diff --git a/sbr/brkstring.c b/sbr/brkstring.c index 4e71ab5..68c7b70 100644 --- a/sbr/brkstring.c +++ b/sbr/brkstring.c @@ -16,12 +16,10 @@ static char **broken = NULL; /* array of substring start addresses */ static int len = 0; /* current size of "broken" */ + /* -** static prototypes +** returns pointer to static memory */ -static int brkany(char, char *); - - char ** brkstring(char *str, char *brksep, char *brkterm) { @@ -31,7 +29,7 @@ brkstring(char *str, char *brksep, char *brkterm) /* allocate initial space for pointers on first call */ if (!broken) { len = NUMBROKEN; - broken = (char **) mh_xmalloc((size_t) (len * sizeof(*broken))); + broken = (char **)mh_xmalloc((size_t)(len * sizeof(*broken))); } /* @@ -39,53 +37,34 @@ brkstring(char *str, char *brksep, char *brkterm) ** and enter start addresses in "broken". */ s = str; - for (i = 0;; i++) { - - /* enlarge pointer array, if necessary */ - if (i >= len) { - len += NUMBROKEN; - broken = mh_xrealloc(broken, (size_t) (len * sizeof(*broken))); - } - - while (brkany(c = *s, brksep)) - *s++ = '\0'; - - /* - ** we are either at the end of the string, or the - ** terminator found has been found, so finish up. - */ - if (!c || brkany(c, brkterm)) { - *s = '\0'; - broken[i] = NULL; - return broken; - } - - /* set next start addr */ - broken[i] = s; - - while ((c = *++s) && !brkany(c, brksep) && !brkany(c, brkterm)) - ; /* empty body */ - } - - return broken; /* NOT REACHED */ -} - - -/* -** If the character is in the string, -** return 1, else return 0. -*/ - -static int -brkany(char c, char *str) -{ - char *s; - - if (str) { - for (s = str; *s; s++) - if (c == *s) - return 1; + /* enlarge pointer array, if necessary */ + if (i >= len) { + len += NUMBROKEN; + broken = mh_xrealloc(broken, + (size_t)(len * sizeof(*broken))); + } + + /* handle separators */ + while (strchr(brksep, c = *s)) { + *s++ = '\0'; + } + + /* + ** we are either at the end of the string, or the + ** terminator found has been found, so finish up. + */ + if (!c || strchr(brkterm, c)) { + *s = '\0'; + broken[i] = NULL; + return broken; + } + + /* set next start addr and walk over word */ + broken[i] = s; + while ((c=*++s) && !strchr(brksep, c) && !strchr(brkterm, c)) { + continue; + } } - return 0; + adios("brkstring()", "reached unreachable point"); } -- 1.7.10.4