X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/fccdde7866bf77774afabfdb32370f1123dac2cc..fbd0002a92c15b70b8bfda4c48fff5ded89c7f04:/sbr/concat.c?ds=inline diff --git a/sbr/concat.c b/sbr/concat.c index f5cf1aea..b99f0c02 100644 --- a/sbr/concat.c +++ b/sbr/concat.c @@ -1,6 +1,4 @@ - -/* - * concat.c -- concatenate a variable number (minimum of 1) +/* concat.c -- concatenate a variable number (minimum of 1) * of strings in managed memory * * This code is Copyright (c) 2002, by the authors of nmh. See the @@ -8,10 +6,16 @@ * complete copyright information. */ -#include -#include +#include "h/mh.h" +#include "concat.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 (const char *s1, ...) { @@ -27,11 +31,11 @@ concat (const char *s1, ...) dp = sp = mh_xmalloc(len); - sp = copy(s1, sp); + sp = stpcpy(sp, s1); va_start(list, s1); while ((cp = va_arg (list, char *))) - sp = copy(cp, sp); + sp = stpcpy(sp, cp); va_end(list); return dp;