BLI_string_utils: add BLI_string_join_array_by_sep_char
Utility to join strings into a fixed size buffer.
This commit is contained in:
parent
38ed95fe8d
commit
0baae18375
@ -48,6 +48,11 @@ char *BLI_string_join_array(char *result,
|
||||
size_t result_len,
|
||||
const char *strings[],
|
||||
uint strings_len) ATTR_NONNULL();
|
||||
char *BLI_string_join_array_by_sep_char(char *result,
|
||||
size_t result_len,
|
||||
char sep,
|
||||
const char *strings[],
|
||||
uint strings_len) ATTR_NONNULL();
|
||||
|
||||
char *BLI_string_join_arrayN(const char *strings[], uint strings_len) ATTR_WARN_UNUSED_RESULT
|
||||
ATTR_NONNULL();
|
||||
|
@ -434,6 +434,29 @@ char *BLI_string_join_array(char *result,
|
||||
return c;
|
||||
}
|
||||
|
||||
/**
|
||||
* A version of #BLI_string_join that takes a separator which can be any character including '\0'.
|
||||
*/
|
||||
char *BLI_string_join_array_by_sep_char(
|
||||
char *result, size_t result_len, char sep, const char *strings[], uint strings_len)
|
||||
{
|
||||
char *c = result;
|
||||
char *c_end = &result[result_len - 1];
|
||||
for (uint i = 0; i < strings_len; i++) {
|
||||
if (i != 0) {
|
||||
if (c < c_end) {
|
||||
*c++ = sep;
|
||||
}
|
||||
}
|
||||
const char *p = strings[i];
|
||||
while (*p && (c < c_end)) {
|
||||
*c++ = *p++;
|
||||
}
|
||||
}
|
||||
*c = '\0';
|
||||
return c;
|
||||
}
|
||||
|
||||
/**
|
||||
* Join an array of strings into a newly allocated, null terminated string.
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user