]> git.ipfire.org Git - pakfire.git/commitdiff
string: Split format function so that it takes ... and va_list
authorMichael Tremer <michael.tremer@ipfire.org>
Thu, 18 Aug 2022 15:52:01 +0000 (15:52 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Thu, 18 Aug 2022 15:52:01 +0000 (15:52 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/include/pakfire/string.h
src/libpakfire/string.c

index b9fa7d1f3c6162b01a6bd9ad6578bdb79d9a144a..d2b83ed26e7b855c8d992c5bf78a4e4612b0222d 100644 (file)
 */
 #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.
index 3e79c65c74f6668fd064d4aa992f215fa01375b7..2f95abd4287fb115b02591330ee0524ea75eb3e6 100644 (file)
 
 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;