]> diplodocus.org Git - nmh/blobdiff - sbr/concat.c
Fix flex 2.6.1's output regarding signed/unsigned comparisons.
[nmh] / sbr / concat.c
index 939a484f4579fc5ef2f0c4f209126e5f8e2b60df..234d17519987fc676c202ec91d2fa96eba7ee8b2 100644 (file)
@@ -3,14 +3,22 @@
  * concat.c -- concatenate a variable number (minimum of 1)
  *             of strings in managed memory
  *
- * $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>
 
 
+/* concat returns a non-NULL malloc'd pointer to the catenation of the
+ * argument strings less their NUL terminators other than the last.  The
+ * arguments are terminated by a NULL.
+ *
+ * Example:  concat("abc", "def", "", "g", NULL) returns "abcdefg". */
 char *
-concat (char *s1, ...)
+concat (const char *s1, ...)
 {
     char *cp, *dp, *sp;
     size_t len;
@@ -22,8 +30,7 @@ concat (char *s1, ...)
        len += strlen (cp);
     va_end(list);
 
-    if (!(dp = sp = malloc(len)))
-       adios (NULL, "unable to allocate string storage");
+    dp = sp = mh_xmalloc(len);
 
     sp = copy(s1, sp);