#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, ...)
{
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;