From: Michael Tremer Date: Thu, 18 Aug 2022 15:52:01 +0000 (+0000) Subject: string: Split format function so that it takes ... and va_list X-Git-Tag: 0.9.28~448 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cbedac261801b6a498eb38fddbe7a57ebc4fa99b;p=pakfire.git string: Split format function so that it takes ... and va_list Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/include/pakfire/string.h b/src/libpakfire/include/pakfire/string.h index b9fa7d1f3..d2b83ed26 100644 --- a/src/libpakfire/include/pakfire/string.h +++ b/src/libpakfire/include/pakfire/string.h @@ -28,8 +28,10 @@ */ #define pakfire_string_format(s, format, ...) \ __pakfire_string_format(s, sizeof(s), format, __VA_ARGS__) -int __pakfire_string_format(char* s, const size_t length, const char* format, ...) - __attribute__((format(printf, 3, 4)));;; +int __pakfire_string_format(char* s, const size_t length, + const char* format, ...) __attribute__((format(printf, 3, 4))); +int __pakfire_string_vformat(char* s, const size_t length, + const char* format, va_list args) __attribute__((format(printf, 3, 0))); /* Simpler version when a string needs to be copied. diff --git a/src/libpakfire/string.c b/src/libpakfire/string.c index 3e79c65c7..2f95abd42 100644 --- a/src/libpakfire/string.c +++ b/src/libpakfire/string.c @@ -29,12 +29,20 @@ int __pakfire_string_format(char* s, const size_t length, const char* format, ...) { va_list args; + int r; - // Write string to buffer + // Call __pakfire_string_vformat va_start(args, format); - const ssize_t required = vsnprintf(s, length, format, args); + r = __pakfire_string_vformat(s, length, format, args); va_end(args); + return r; +} + +int __pakfire_string_vformat(char* s, const size_t length, const char* format, va_list args) { + // Write string to buffer + const ssize_t required = vsnprintf(s, length, format, args); + // Catch any errors if (required < 0) return 1;