]> git.ipfire.org Git - thirdparty/iproute2.git/commitdiff
dcb: Rewrite array-formatting code to not cause warnings with Clang
authorPetr Machata <petrm@nvidia.com>
Tue, 18 Jan 2022 11:09:30 +0000 (12:09 +0100)
committerStephen Hemminger <stephen@networkplumber.org>
Wed, 19 Jan 2022 20:41:33 +0000 (12:41 -0800)
Some installation of Clang are unhappy about the use of a hand-rolled
formatting strings, and emit warnings such as this one:

dcb.c:334:31: warning: format string is not a string literal
[-Wformat-nonliteral]

Rewrite the impacted code so that it always uses literal format strings.

Reported-by: Stephen Hemminger <stephen@networkplumber.org>
Signed-off-by: Petr Machata <petrm@nvidia.com>
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
dcb/dcb.c

index 696f00e4e38c0992a34be197cb81a0de75760620..b7c2df546a4185ef425637e3f83968af2a901009 100644 (file)
--- a/dcb/dcb.c
+++ b/dcb/dcb.c
@@ -326,51 +326,51 @@ int dcb_set_attribute_bare(struct dcb *dcb, int command, const char *dev,
 
 void dcb_print_array_u8(const __u8 *array, size_t size)
 {
-       SPRINT_BUF(b);
        size_t i;
 
        for (i = 0; i < size; i++) {
-               snprintf(b, sizeof(b), "%zd:%%d ", i);
-               print_uint(PRINT_ANY, NULL, b, array[i]);
+               print_uint(PRINT_JSON, NULL, NULL, array[i]);
+               print_uint(PRINT_FP, NULL, "%zd:", i);
+               print_uint(PRINT_FP, NULL, "%d ", array[i]);
        }
 }
 
 void dcb_print_array_u64(const __u64 *array, size_t size)
 {
-       SPRINT_BUF(b);
        size_t i;
 
        for (i = 0; i < size; i++) {
-               snprintf(b, sizeof(b), "%zd:%%" PRIu64 " ", i);
-               print_u64(PRINT_ANY, NULL, b, array[i]);
+               print_u64(PRINT_JSON, NULL, NULL, array[i]);
+               print_uint(PRINT_FP, NULL, "%zd:", i);
+               print_u64(PRINT_FP, NULL, "%" PRIu64 " ", array[i]);
        }
 }
 
 void dcb_print_array_on_off(const __u8 *array, size_t size)
 {
-       SPRINT_BUF(b);
        size_t i;
 
        for (i = 0; i < size; i++) {
-               snprintf(b, sizeof(b), "%zd:%%s ", i);
-               print_on_off(PRINT_ANY, NULL, b, array[i]);
+               print_on_off(PRINT_JSON, NULL, NULL, array[i]);
+               print_uint(PRINT_FP, NULL, "%zd:", i);
+               print_on_off(PRINT_FP, NULL, "%s ", array[i]);
        }
 }
 
 void dcb_print_array_kw(const __u8 *array, size_t array_size,
                        const char *const kw[], size_t kw_size)
 {
-       SPRINT_BUF(b);
        size_t i;
 
        for (i = 0; i < array_size; i++) {
+               const char *str = "???";
                __u8 emt = array[i];
 
-               snprintf(b, sizeof(b), "%zd:%%s ", i);
                if (emt < kw_size && kw[emt])
-                       print_string(PRINT_ANY, NULL, b, kw[emt]);
-               else
-                       print_string(PRINT_ANY, NULL, b, "???");
+                       str = kw[emt];
+               print_string(PRINT_JSON, NULL, NULL, str);
+               print_uint(PRINT_FP, NULL, "%zd:", i);
+               print_string(PRINT_FP, NULL, "%s ", str);
        }
 }