]> diplodocus.org Git - nmh/blobdiff - sbr/brkstring.c
mhlsbr.c: Don't strchr(3) non-string NUL-less buffer.
[nmh] / sbr / brkstring.c
index 27f187e2e72daaf9ff2b3a1b96e740a7977ee115..f0f43693695c26287ad9817c98027a00b035de56 100644 (file)
@@ -1,16 +1,13 @@
-
-/*
- * brkstring.c -- (destructively) split a string into
+/* brkstring.c -- (destructively) split a string into
  *             -- an array of substrings
  *
- * $Id$
- *
  * 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 <h/mh.h>
+#include <h/utils.h>
 
 /* allocate this number of pointers at a time */
 #define NUMBROKEN 256
@@ -33,8 +30,7 @@ brkstring (char *str, char *brksep, char *brkterm)
     /* 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");
+       broken = (char **) mh_xmalloc ((size_t) (len * sizeof(*broken)));
     }
 
     /*
@@ -48,8 +44,7 @@ brkstring (char *str, char *brksep, char *brkterm)
        /* 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");
+           broken = mh_xrealloc (broken, (size_t) (len * sizeof(*broken)));
        }
 
        while (brkany (c = *s, brksep))
@@ -62,7 +57,7 @@ brkstring (char *str, char *brksep, char *brkterm)
        if (!c || brkany (c, brkterm)) {
            *s = '\0';
            broken[i] = NULL;
-           return broken;
+           break;
        }
 
        /* set next start addr */
@@ -72,7 +67,7 @@ brkstring (char *str, char *brksep, char *brkterm)
            ;   /* empty body */
     }
 
-    return broken;     /* NOT REACHED */
+    return broken;
 }
 
 
@@ -84,12 +79,5 @@ brkstring (char *str, char *brksep, char *brkterm)
 static int
 brkany (char c, char *str)
 {
-    char *s;
-
-    if (str) {
-       for (s = str; *s; s++)
-           if (c == *s)
-               return 1;
-    }
-    return 0;
+    return str && c && strchr(str, c);
 }