diff --git a/catdup.c b/catdup.c index ce69dd73..a1072e2b 100644 --- a/catdup.c +++ b/catdup.c @@ -76,3 +76,31 @@ char * catdup3(const char * s1, const char * s2, const char * s3) return buffer; } + +char * catdup4(const char * s1, const char * s2, const char * s3, const char * s4) +{ + char * buffer; + size_t s1_len, s2_len, s3_len, s4_len; + + ASSERT(s1 != NULL && s2 != NULL && s3 != NULL && s4 != NULL); + + s1_len = strlen(s1); + s2_len = strlen(s2); + s3_len = strlen(s3); + s4_len = strlen(s4); + + buffer = malloc(s1_len + s2_len + s3_len + s4_len + 1); + if (buffer == NULL) + { + log_error("malloc() failed."); + return NULL; + } + + memcpy(buffer, s1, s1_len); + memcpy(buffer + s1_len, s2, s2_len); + memcpy(buffer + s1_len + s2_len, s3, s3_len); + memcpy(buffer + s1_len + s2_len + s3_len, s4, s4_len); + buffer[s1_len + s2_len + s3_len + s4_len] = 0; + + return buffer; +} diff --git a/catdup.h b/catdup.h index 465ec9b3..9e74970b 100644 --- a/catdup.h +++ b/catdup.h @@ -29,5 +29,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); #endif /* #ifndef CATDUP_H__D42302F1_4D96_4EE4_AC09_E97ED5748277__INCLUDED */