From: Michael Tremer Date: Sat, 22 Feb 2025 16:00:36 +0000 (+0000) Subject: strings: Add function to add formatted strings to a buffer X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=760b49be6b5f2c571cae792989f074ef3a03527b;p=pakfire.git strings: Add function to add formatted strings to a buffer Signed-off-by: Michael Tremer --- diff --git a/src/pakfire/string.c b/src/pakfire/string.c index 31aea956..6db0cf63 100644 --- a/src/pakfire/string.c +++ b/src/pakfire/string.c @@ -381,6 +381,26 @@ int __pakfire_string_append(char* buffer, size_t length, const char* appendix) { return __pakfire_string_set(buffer + l, length - l, appendix); } +int __pakfire_string_appendf(char* buffer, size_t length, const char* format, ...) { + char* appendix = NULL; + va_list args; + int r; + + va_start(args, format); + r = vasprintf(&appendix, format, args); + va_end(args); + + // Return on error + if (r < 0) + return r; + + // Append the string + r = __pakfire_string_append(buffer, length, appendix); + free(appendix); + + return r; +} + int pakfire_string_search(const char* haystack, ssize_t lhaystack, const char* needle, ssize_t lneedle) { // Check inputs diff --git a/src/pakfire/string.h b/src/pakfire/string.h index 33a6ce6b..7f96dd9f 100644 --- a/src/pakfire/string.h +++ b/src/pakfire/string.h @@ -91,6 +91,11 @@ static inline int pakfire_string_contains_whitespace(const char* s) { __pakfire_string_append(s, sizeof(s), appendix) int __pakfire_string_append(char* buffer, size_t length, const char* appendix); +#define pakfire_string_appendf(s, format, ...) \ + __pakfire_string_appendf(s, sizeof(s), format, __VA_ARGS__) +int __pakfire_string_appendf(char* buffer, size_t length, const char* format, ...) + __attribute__((format(printf, 3, 4))); + int pakfire_string_search(const char* haystack, ssize_t lhaystack, const char* needle, ssize_t lneedle);