From: Petr Machata Date: Tue, 18 Jan 2022 11:09:30 +0000 (+0100) Subject: dcb: Rewrite array-formatting code to not cause warnings with Clang X-Git-Tag: v5.17.0~27 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c556f577843b7c1eaf65853f0d0ceab29aa9f4ef;p=thirdparty%2Fiproute2.git dcb: Rewrite array-formatting code to not cause warnings with Clang 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 Signed-off-by: Petr Machata Signed-off-by: Stephen Hemminger --- diff --git a/dcb/dcb.c b/dcb/dcb.c index 696f00e4e..b7c2df546 100644 --- 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); } }