X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=sbr%2Fbrkstring.c;h=4e71ab544ce6b6c1f2281c4c1880750bb9579cac;hb=849bead2b2f3f202280353636716ec7e83fc5645;hp=715aaf5e2b65a3bc394804861c9354e75c94ff68;hpb=1691e80890e5d8ba258c51c214a3e91880e1db2b;p=mmh diff --git a/sbr/brkstring.c b/sbr/brkstring.c index 715aaf5..4e71ab5 100644 --- a/sbr/brkstring.c +++ b/sbr/brkstring.c @@ -1,91 +1,91 @@ - /* - * brkstring.c -- (destructively) split a string into - * -- an array of substrings - * - * $Id$ - */ +** brkstring.c -- (destructively) split a string into +** -- an array of substrings +** +** This code is Copyright (c) 2002, by the authors of nmh. See the +** COPYRIGHT file in the root directory of the nmh distribution for +** complete copyright information. +*/ #include +#include /* allocate this number of pointers at a time */ #define NUMBROKEN 256 -static char **broken = NULL; /* array of substring start addresses */ -static int len = 0; /* current size of "broken" */ +static char **broken = NULL; /* array of substring start addresses */ +static int len = 0; /* current size of "broken" */ /* - * static prototypes - */ -static int brkany (char, char *); +** static prototypes +*/ +static int brkany(char, char *); char ** -brkstring (char *str, char *brksep, char *brkterm) +brkstring(char *str, char *brksep, char *brkterm) { - int i; - char c, *s; + int i; + char c, *s; - /* allocate initial space for pointers on first call */ - if (!broken) { - len = NUMBROKEN; - if (!(broken = (char **) malloc ((size_t) (len * sizeof(*broken))))) - adios (NULL, "unable to malloc array in brkstring"); - } + /* allocate initial space for pointers on first call */ + if (!broken) { + len = NUMBROKEN; + broken = (char **) mh_xmalloc((size_t) (len * sizeof(*broken))); + } - /* - * scan string, replacing separators with zeroes - * and enter start addresses in "broken". - */ - s = str; + /* + ** scan string, replacing separators with zeroes + ** and enter start addresses in "broken". + */ + s = str; - for (i = 0;; i++) { + for (i = 0;; i++) { /* enlarge pointer array, if necessary */ if (i >= len) { - len += NUMBROKEN; - if (!(broken = realloc (broken, (size_t) (len * sizeof(*broken))))) - adios (NULL, "unable to realloc array in brkstring"); + len += NUMBROKEN; + broken = mh_xrealloc(broken, (size_t) (len * sizeof(*broken))); } - while (brkany (c = *s, brksep)) - *s++ = '\0'; + 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; + ** 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 */ - } + while ((c = *++s) && !brkany(c, brksep) && !brkany(c, brkterm)) + ; /* empty body */ + } - return broken; /* NOT REACHED */ + return broken; /* NOT REACHED */ } /* - * If the character is in the string, - * return 1, else return 0. - */ +** If the character is in the string, +** return 1, else return 0. +*/ static int -brkany (char c, char *str) +brkany(char c, char *str) { - char *s; + char *s; - if (str) { + if (str) { for (s = str; *s; s++) - if (c == *s) + if (c == *s) return 1; - } - return 0; + } + return 0; }