X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/5dd6771b28c257af405d7248639ed0e3bcdce38b..b3d4a4452c332fc3550db3fbdf9e02027b41e985:/sbr/concat.c?ds=sidebyside diff --git a/sbr/concat.c b/sbr/concat.c index 82979f5a..262b93f5 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,12 +6,17 @@ * complete copyright information. */ -#include -#include +#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; @@ -27,11 +30,11 @@ concat (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;