1 /* concatn.c: concatenate an arbitrary number of strings.
3 Copyright 1993, 1995, 2008, 2009 Karl Berry.
4 Copyright 1999, 2005 Olaf Weber.
6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Lesser General Public
8 License as published by the Free Software Foundation; either
9 version 2.1 of the License, or (at your option) any later version.
11 This library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Lesser General Public License for more details.
16 You should have received a copy of the GNU Lesser General Public License
17 along with this library; if not, see <http://www.gnu.org/licenses/>. */
19 #include <kpathsea/config.h>
21 #include <kpathsea/concatn.h>
24 /* OK, it would be epsilon more efficient to compute the total length
25 and then do the copying ourselves, but I doubt it matters in reality. */
28 concatn (const_string str1
, ...)
40 while ((arg
= va_arg (ap
, string
)) != NULL
)
42 string temp
= concat (ret
, arg
);
55 printf ("null = \"%s\"\n", concatn (NULL
));
56 printf ("\"a\" = \"%s\"\n", concatn ("a", NULL
));
57 printf ("\"ab\" = \"%s\"\n", concatn ("a", "b", NULL
));
58 printf ("\"abc\" = \"%s\"\n", concatn ("a", "b", "c", NULL
));
59 printf ("\"abcd\" = \"%s\"\n", concatn ("ab", "cd", NULL
));
60 printf ("\"abcde\" = \"%s\"\n", concatn ("ab", "c", "de", NULL
));
61 printf ("\"abcdef\" = \"%s\"\n", concatn ("", "a", "", "bcd", "ef", NULL
));
70 standalone-compile-command: "gcc -posix -g -I. -I.. -DTEST concatn.c kpathsea.a"