new function - catdupv()
This commit is contained in:
parent
333dd6026f
commit
e4713bf45d
|
@ -25,6 +25,9 @@
|
|||
*/
|
||||
|
||||
#include "../common.h"
|
||||
|
||||
#include <stdarg.h>
|
||||
|
||||
#include "catdup.h"
|
||||
|
||||
char * catdup(const char * s1, const char * s2)
|
||||
|
@ -104,3 +107,49 @@ char * catdup4(const char * s1, const char * s2, const char * s3, const char * s
|
|||
|
||||
return buffer;
|
||||
}
|
||||
|
||||
char * catdupv(const char * s1, const char * s2, ...)
|
||||
{
|
||||
va_list ap;
|
||||
const char * str;
|
||||
size_t len;
|
||||
char * buffer;
|
||||
char * p;
|
||||
|
||||
len = strlen(s1) + strlen(s2);
|
||||
va_start(ap, s2);
|
||||
while ((str = va_arg(ap, const char *)) != NULL)
|
||||
{
|
||||
len += strlen(str);
|
||||
}
|
||||
va_end(ap);
|
||||
len++;
|
||||
|
||||
buffer = malloc(len);
|
||||
if (buffer == NULL)
|
||||
{
|
||||
log_error("malloc(%zu) failed.", len);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
len = strlen(s1);
|
||||
memcpy(buffer, s1, len);
|
||||
p = buffer + len;
|
||||
|
||||
len = strlen(s2);
|
||||
memcpy(p, s2, len);
|
||||
p += len;
|
||||
|
||||
va_start(ap, s2);
|
||||
while ((str = va_arg(ap, const char *)) != NULL)
|
||||
{
|
||||
len = strlen(str);
|
||||
memcpy(p, str, len);
|
||||
p += len;
|
||||
}
|
||||
va_end(ap);
|
||||
|
||||
*p = 0;
|
||||
|
||||
return buffer;
|
||||
}
|
||||
|
|
|
@ -30,5 +30,6 @@
|
|||
char * catdup(const char * s1, const char * s2);
|
||||
char * catdup3(const char * s1, const char * s2, const char * s3);
|
||||
char * catdup4(const char * s1, const char * s2, const char * s3, const char * s4);
|
||||
char * catdupv(const char * s1, const char * s2, ...);
|
||||
|
||||
#endif /* #ifndef CATDUP_H__D42302F1_4D96_4EE4_AC09_E97ED5748277__INCLUDED */
|
||||
|
|
Loading…
Reference in New Issue