From cbedac261801b6a498eb38fddbe7a57ebc4fa99b Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 18 Aug 2022 15:52:01 +0000 Subject: [PATCH] string: Split format function so that it takes ... and va_list Signed-off-by: Michael Tremer --- src/libpakfire/include/pakfire/string.h | 6 ++++-- src/libpakfire/string.c | 12 ++++++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) 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; -- 2.47.3