Remove unused code
[mmh] / sbr / brkstring.c
index 1e78b17..a9446fe 100644 (file)
@@ -1,12 +1,13 @@
 /*
- * 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.
- */
-
+** 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 <sysexits.h>
 #include <h/mh.h>
 #include <h/utils.h>
 
 static char **broken = NULL;    /* array of substring start addresses */
 static int len = 0;             /* current size of "broken"           */
 
-/*
- * static prototypes
- */
-static int brkany (char, char *);
-
 
+/*
+** returns pointer to static memory
+*/
 char **
-brkstring (char *str, char *brksep, char *brkterm)
+brkstring(char *str, char *brksep, char *brkterm)
 {
        int i;
        char c, *s;
@@ -31,61 +30,46 @@ 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 = mh_xcalloc(len, sizeof(*broken));
        }
 
        /*
-        * scan string, replacing separators with zeroes
-        * and enter start addresses in "broken".
-        */
+       ** scan string, replacing separators with zeroes
+       ** 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, len * sizeof(*broken));
+               }
+
+               /* handle separators */
+               while ((c=*s) && brksep && strchr(brksep, c)) {
+                       *s++ = '\0';
+               }
+
+               /*
+               ** we are either at the end of the string, or the
+               ** terminator found has been found, so finish up.
+               */
+               if (!c || (brkterm && strchr(brkterm, c))) {
+                       *s = '\0';
+                       broken[i] = NULL;
+                       return broken;
+               }
+
+               /* set next start addr and walk over word */
+               broken[i] = s;
+               while ((c = *++s)) {
+                       if (brksep && strchr(brksep, c)) {
+                               break;
+                       }
+                       if (brkterm && strchr(brkterm, c)) {
+                               break;
+                       }
+               }
        }
-       return 0;
+       adios(EX_SOFTWARE, "brkstring()", "reached unreachable point");
 }