From 99ee3a8f13fc032cce1b964cdbc37a567a944428 Mon Sep 17 00:00:00 2001 From: DJ Delorie Date: Mon, 24 Sep 2001 23:37:52 +0000 Subject: merge from gcc --- libiberty/concat.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'libiberty/concat.c') diff --git a/libiberty/concat.c b/libiberty/concat.c index feed0df..136e8be 100644 --- a/libiberty/concat.c +++ b/libiberty/concat.c @@ -171,6 +171,31 @@ concat VPARAMS ((const char *first, ...)) return newstr; } +char * +reconcat VPARAMS ((char *optr, const char *first, ...)) +{ + char *newstr; + + /* First compute the size of the result and get sufficient memory. */ + VA_OPEN (args, first); + VA_FIXEDARG (args, char *, optr); + VA_FIXEDARG (args, const char *, first); + newstr = (char *) xmalloc (vconcat_length (first, args) + 1); + VA_CLOSE (args); + + /* Now copy the individual pieces to the result string. */ + VA_OPEN (args, first); + VA_FIXEDARG (args, char *, optr); + VA_FIXEDARG (args, const char *, first); + vconcat_copy (newstr, first, args); + VA_CLOSE (args); + + if (optr) + free (optr); + + return newstr; +} + #ifdef MAIN #define NULLP (char *)0 -- cgit v1.1