From patchwork Mon Aug 20 21:42:15 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mahesh Bandewar X-Patchwork-Id: 959994 X-Patchwork-Delegate: shemminger@vyatta.com Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=bandewar.net Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=bandewar-net.20150623.gappssmtp.com header.i=@bandewar-net.20150623.gappssmtp.com header.b="SrNFF40w"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 41vS2R2GwMz9s5b for ; Tue, 21 Aug 2018 07:42:23 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726618AbeHUA7j (ORCPT ); Mon, 20 Aug 2018 20:59:39 -0400 Received: from mail-pf1-f195.google.com ([209.85.210.195]:35782 "EHLO mail-pf1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726461AbeHUA7i (ORCPT ); Mon, 20 Aug 2018 20:59:38 -0400 Received: by mail-pf1-f195.google.com with SMTP id p12-v6so7426981pfh.2 for ; Mon, 20 Aug 2018 14:42:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bandewar-net.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=GuxLpp6Ptcc7BlUlIOPeYYmoV4U+HvmHPCLI1Oyochw=; b=SrNFF40wGffEx12FwdEYMaggRahkdjKGZ86INSmACGKx5EAvstlV0dHpda9vPppyu/ LId5XPOpTlO4UsbbE/654TBBmg3RpClnvatmHQDi13MZ3Pwr1BY4bvjE3MDCQr7zACyn M5iiR++mfPrwhu8UErcaDTSO/eLfdVxGv9mXeGIbkkli6O4oqqZjO19rvj4o8/qWHvbT SS3DNqeZJK/hfzNG56KwrRhkiORYWZcvMOlt/T8UXBrLMEwd5E90dr+GFZVvE3Ka4oZB q8tJPxG4s1g+72QuK5gRZQYo9cZdylsDDwfIrfUVNAWAnVbDeoTglAEFEfK0t13x+rPs X7uA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=GuxLpp6Ptcc7BlUlIOPeYYmoV4U+HvmHPCLI1Oyochw=; b=Isr7IryQ96mOJ8NlbQ79atkbAsFoworC1M4Dghu912DeGHb5iFXpmnvfisYiv6UrVJ CQXbDiGKix0dObnf4XUzzNIcesFnJpI1iDlrE4NkX7IRjdEl1EvUwJHzDnMzJimEGbvi PieAIYZbWIxL8Z2uNER3vLtnXFua8oRtTdaqcuMEL8sDStXifDqaLPkI5M5XZyUptk3r 7kgBgfry7zdxsCWw+FNqLDNIvG35A73qgXIgYiz5x/9ZSbeRxJohrHtUT9J6pPqWq/ix WCVoiYWPqz7DNlUqSRnUI89E2fVEK6K6Ht97SMzEFLoNI/yu7Kr0HHtatXcetQXdKwmI QSuA== X-Gm-Message-State: AOUpUlE54WBNxOjOJdOg0DcL+SxuyCMHXd0XtIbgYuPNnarQDznSyIlV uV9xruzFp5rFimoENmQLVxorrdTj2XA= X-Google-Smtp-Source: AA+uWPzuTc5TMZswHv0ctTXE46ysBsiB+cwZBYx5sZa6dhWgbIwEnjc/oNYIq4FB5+pZnRtwf0EFvg== X-Received: by 2002:a63:df04:: with SMTP id u4-v6mr44898092pgg.434.1534801339908; Mon, 20 Aug 2018 14:42:19 -0700 (PDT) Received: from localhost ([2620:15c:2c4:201:c7f9:6225:a527:f3a4]) by smtp.gmail.com with ESMTPSA id s14-v6sm18848892pfj.105.2018.08.20.14.42.19 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 20 Aug 2018 14:42:19 -0700 (PDT) From: Mahesh Bandewar To: Stephen Hemminger Cc: netdev , Mahesh Bandewar Subject: [PATCH iproute2] iproute: make clang happy Date: Mon, 20 Aug 2018 14:42:15 -0700 Message-Id: <20180820214215.218127-1-mahesh@bandewar.net> X-Mailer: git-send-email 2.18.0.865.gffc8e1a3cd6-goog MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Mahesh Bandewar These are primarily fixes for "string is not string literal" warnings / errors (with -Werror -Wformat-nonliteral). This should be a no-op change. I had to replace couple of print helper functions with the code they call as it was becoming harder to eliminate these warnings, however these helpers were used only at couple of places, so no major change as such. Signed-off-by: Mahesh Bandewar --- include/json_writer.h | 2 -- ip/iplink_can.c | 19 ++++++++++++------- lib/color.c | 1 + lib/json_print.c | 1 + lib/json_writer.c | 15 +-------------- misc/ss.c | 3 ++- tc/m_ematch.c | 1 + 7 files changed, 18 insertions(+), 24 deletions(-) diff --git a/include/json_writer.h b/include/json_writer.h index 9ab88e1dbdd9..a111cc62e7b2 100644 --- a/include/json_writer.h +++ b/include/json_writer.h @@ -59,8 +59,6 @@ void jsonw_luint_field(json_writer_t *self, const char *prop, unsigned long int num); void jsonw_lluint_field(json_writer_t *self, const char *prop, unsigned long long int num); -void jsonw_float_field_fmt(json_writer_t *self, const char *prop, - const char *fmt, double val); /* Collections */ void jsonw_start_object(json_writer_t *self); diff --git a/ip/iplink_can.c b/ip/iplink_can.c index 587413da15c4..c0deeb1f1fcf 100644 --- a/ip/iplink_can.c +++ b/ip/iplink_can.c @@ -316,11 +316,14 @@ static void can_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[]) struct can_bittiming *bt = RTA_DATA(tb[IFLA_CAN_BITTIMING]); if (is_json_context()) { + json_writer_t *jw; + open_json_object("bittiming"); print_int(PRINT_ANY, "bitrate", NULL, bt->bitrate); - jsonw_float_field_fmt(get_json_writer(), - "sample_point", "%.3f", - (float) bt->sample_point / 1000.); + jw = get_json_writer(); + jsonw_name(jw, "sample_point"); + jsonw_printf(jw, "%.3f", + (float) bt->sample_point / 1000); print_int(PRINT_ANY, "tq", NULL, bt->tq); print_int(PRINT_ANY, "prop_seg", NULL, bt->prop_seg); print_int(PRINT_ANY, "phase_seg1", @@ -415,12 +418,14 @@ static void can_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[]) RTA_DATA(tb[IFLA_CAN_DATA_BITTIMING]); if (is_json_context()) { + json_writer_t *jw; + open_json_object("data_bittiming"); print_int(PRINT_JSON, "bitrate", NULL, dbt->bitrate); - jsonw_float_field_fmt(get_json_writer(), - "sample_point", - "%.3f", - (float) dbt->sample_point / 1000.); + jw = get_json_writer(); + jsonw_name(jw, "sample_point"); + jsonw_printf(jw, "%.3f", + (float) dbt->sample_point / 1000.); print_int(PRINT_JSON, "tq", NULL, dbt->tq); print_int(PRINT_JSON, "prop_seg", NULL, dbt->prop_seg); print_int(PRINT_JSON, "phase_seg1", diff --git a/lib/color.c b/lib/color.c index eaf69e74d673..e5406294dfc4 100644 --- a/lib/color.c +++ b/lib/color.c @@ -132,6 +132,7 @@ void set_color_palette(void) is_dark_bg = 1; } +__attribute__((format(printf, 3, 4))) int color_fprintf(FILE *fp, enum color_attr attr, const char *fmt, ...) { int ret = 0; diff --git a/lib/json_print.c b/lib/json_print.c index 5dc41bfabfd4..77902824a738 100644 --- a/lib/json_print.c +++ b/lib/json_print.c @@ -100,6 +100,7 @@ void close_json_array(enum output_type type, const char *str) * functions handling different types */ #define _PRINT_FUNC(type_name, type) \ + __attribute__((format(printf, 4, 0))) \ void print_color_##type_name(enum output_type t, \ enum color_attr color, \ const char *key, \ diff --git a/lib/json_writer.c b/lib/json_writer.c index aa9ce1c65e51..68890b34ee92 100644 --- a/lib/json_writer.c +++ b/lib/json_writer.c @@ -152,6 +152,7 @@ void jsonw_name(json_writer_t *self, const char *name) putc(' ', self->out); } +__attribute__((format(printf, 2, 3))) void jsonw_printf(json_writer_t *self, const char *fmt, ...) { va_list ap; @@ -205,11 +206,6 @@ void jsonw_null(json_writer_t *self) jsonw_printf(self, "null"); } -void jsonw_float_fmt(json_writer_t *self, const char *fmt, double num) -{ - jsonw_printf(self, fmt, num); -} - void jsonw_float(json_writer_t *self, double num) { jsonw_printf(self, "%g", num); @@ -274,15 +270,6 @@ void jsonw_float_field(json_writer_t *self, const char *prop, double val) jsonw_float(self, val); } -void jsonw_float_field_fmt(json_writer_t *self, - const char *prop, - const char *fmt, - double val) -{ - jsonw_name(self, prop); - jsonw_float_fmt(self, fmt, val); -} - void jsonw_uint_field(json_writer_t *self, const char *prop, unsigned int num) { jsonw_name(self, prop); diff --git a/misc/ss.c b/misc/ss.c index 41e7762bb61f..93b1baf5dc40 100644 --- a/misc/ss.c +++ b/misc/ss.c @@ -976,6 +976,7 @@ static int buf_update(int len) } /* Append content to buffer as part of the current field */ +__attribute__((format(printf, 1, 2))) static void out(const char *fmt, ...) { struct column *f = current_field; @@ -1093,7 +1094,7 @@ static void print_header(void) { while (!field_is_last(current_field)) { if (!current_field->disabled) - out(current_field->header); + out("%s", current_field->header); field_next(); } } diff --git a/tc/m_ematch.c b/tc/m_ematch.c index ace4b3dd738b..a524b520b276 100644 --- a/tc/m_ematch.c +++ b/tc/m_ematch.c @@ -277,6 +277,7 @@ static int flatten_tree(struct ematch *head, struct ematch *tree) return count; } +__attribute__((format(printf, 5, 6))) int em_parse_error(int err, struct bstr *args, struct bstr *carg, struct ematch_util *e, char *fmt, ...) {