Mercurial > dovecot > original-hg > dovecot-1.2
changeset 3038:2f7ffdcd7d67 HEAD
Added strarray_join().
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Thu, 06 Jan 2005 20:09:08 +0200 |
parents | 2beaee54e942 |
children | d6910d273852 |
files | src/lib/strfuncs.c src/lib/strfuncs.h |
diffstat | 2 files changed, 30 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib/strfuncs.c Thu Jan 06 19:05:13 2005 +0200 +++ b/src/lib/strfuncs.c Thu Jan 06 20:09:08 2005 +0200 @@ -558,6 +558,34 @@ return count; } +const char *strarray_join(const char *const *arr, const char *separator) +{ + size_t alloc_len, sep_len, len, pos, needed_space; + char *str; + + alloc_len = 64; + str = t_buffer_get(alloc_len); + + for (pos = 0; *arr != NULL; arr++) { + len = strlen(*arr); + needed_space = pos + len + sep_len + 1; + if (needed_space < alloc_len) { + alloc_len = nearest_power(needed_space); + str = t_buffer_reget(str, alloc_len); + } + + if (pos != 0) { + memcpy(str + pos, separator, sep_len); + pos += sep_len; + } + + memcpy(str + pos, *arr, len); + pos += len; + } + str[pos] = '\0'; + return str; +} + const char *dec2str(uintmax_t number) { char *buffer;
--- a/src/lib/strfuncs.h Thu Jan 06 19:05:13 2005 +0200 +++ b/src/lib/strfuncs.h Thu Jan 06 20:09:08 2005 +0200 @@ -67,6 +67,8 @@ /* Return length of NULL-terminated list string array */ unsigned int strarray_length(const char *const *arr); +/* Return all strings from array joined into one string. */ +const char *strarray_join(const char *const *arr, const char *separator); /* INTERNAL */ const char *_vstrconcat(const char *str1, va_list args, size_t *ret_len);