diff mbox series

[iproute2-next,v5,03/11] lib: json_print: Add print_on_off()

Message ID cf31e4c2ea4108afea9516647316749ba4003b2f.1605218735.git.me@pmachata.org
State Superseded
Headers show
Series Add a tool for configuration of DCB | expand

Commit Message

Petr Machata Nov. 12, 2020, 10:24 p.m. UTC
The value of a number of booleans is shown as "on" and "off" in the plain
output, and as an actual boolean in JSON mode. Add a function that does
that.

RDMA tool already uses a function named print_on_off(). This function
always shows "on" and "off", even in JSON mode. Since there are probably
very few if any consumers of this interface at this point, migrate it to
the new central print_on_off() as well.

Signed-off-by: Petr Machata <me@pmachata.org>
Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
---

Notes:
    v3:
    - Rename to print_on_off(). [David Ahern]
    - Move over to json_print.c and make it a variant of print_bool().
      Convert RDMA tool over to print_on_off(). [Leon Romanovsky]

 include/json_print.h |  1 +
 lib/json_print.c     | 34 +++++++++++++++++++++++++++-------
 rdma/dev.c           |  2 +-
 rdma/rdma.h          |  1 -
 rdma/res-cq.c        |  2 +-
 rdma/utils.c         |  5 -----
 6 files changed, 30 insertions(+), 15 deletions(-)
diff mbox series

Patch

diff --git a/include/json_print.h b/include/json_print.h
index 50e71de443ab..096a999a4de4 100644
--- a/include/json_print.h
+++ b/include/json_print.h
@@ -65,6 +65,7 @@  void print_nl(void);
 _PRINT_FUNC(int, int)
 _PRINT_FUNC(s64, int64_t)
 _PRINT_FUNC(bool, bool)
+_PRINT_FUNC(on_off, bool)
 _PRINT_FUNC(null, const char*)
 _PRINT_FUNC(string, const char*)
 _PRINT_FUNC(uint, unsigned int)
diff --git a/lib/json_print.c b/lib/json_print.c
index fe0705bf6965..62eeb1f1fb31 100644
--- a/lib/json_print.c
+++ b/lib/json_print.c
@@ -191,11 +191,12 @@  int print_color_string(enum output_type type,
  * a value to it, you will need to use "is_json_context()" to have different
  * branch for json and regular output. grep -r "print_bool" for example
  */
-int print_color_bool(enum output_type type,
-		     enum color_attr color,
-		     const char *key,
-		     const char *fmt,
-		     bool value)
+static int __print_color_bool(enum output_type type,
+			      enum color_attr color,
+			      const char *key,
+			      const char *fmt,
+			      bool value,
+			      const char *str)
 {
 	int ret = 0;
 
@@ -205,13 +206,32 @@  int print_color_bool(enum output_type type,
 		else
 			jsonw_bool(_jw, value);
 	} else if (_IS_FP_CONTEXT(type)) {
-		ret = color_fprintf(stdout, color, fmt,
-				    value ? "true" : "false");
+		ret = color_fprintf(stdout, color, fmt, str);
 	}
 
 	return ret;
 }
 
+int print_color_bool(enum output_type type,
+		     enum color_attr color,
+		     const char *key,
+		     const char *fmt,
+		     bool value)
+{
+	return __print_color_bool(type, color, key, fmt, value,
+				  value ? "true" : "false");
+}
+
+int print_color_on_off(enum output_type type,
+		       enum color_attr color,
+		       const char *key,
+		       const char *fmt,
+		       bool value)
+{
+	return __print_color_bool(type, color, key, fmt, value,
+				  value ? "on" : "off");
+}
+
 /*
  * In JSON context uses hardcode %#x format: 42 -> 0x2a
  */
diff --git a/rdma/dev.c b/rdma/dev.c
index a11081b82170..c684dde4a56f 100644
--- a/rdma/dev.c
+++ b/rdma/dev.c
@@ -159,7 +159,7 @@  static void dev_print_dim_setting(struct rd *rd, struct nlattr **tb)
 	if (dim_setting > 1)
 		return;
 
-	print_on_off(rd, "adaptive-moderation", dim_setting);
+	print_on_off(PRINT_ANY, "adaptive-moderation", "adaptive-moderation %s ", dim_setting);
 
 }
 
diff --git a/rdma/rdma.h b/rdma/rdma.h
index fd1024123363..fc8bcf09274d 100644
--- a/rdma/rdma.h
+++ b/rdma/rdma.h
@@ -138,7 +138,6 @@  void print_driver_table(struct rd *rd, struct nlattr *tb);
 void print_raw_data(struct rd *rd, struct nlattr **nla_line);
 void newline(struct rd *rd);
 void newline_indent(struct rd *rd);
-void print_on_off(struct rd *rd, const char *key_str, bool on);
 void print_raw_data(struct rd *rd, struct nlattr **nla_line);
 #define MAX_LINE_LENGTH 80
 
diff --git a/rdma/res-cq.c b/rdma/res-cq.c
index 313f929a29b5..9e7c4f512b72 100644
--- a/rdma/res-cq.c
+++ b/rdma/res-cq.c
@@ -36,7 +36,7 @@  static void print_cq_dim_setting(struct rd *rd, struct nlattr *attr)
 	if (dim_setting > 1)
 		return;
 
-	print_on_off(rd, "adaptive-moderation", dim_setting);
+	print_on_off(PRINT_ANY, "adaptive-moderation", "adaptive-moderation %s ", dim_setting);
 }
 
 static int res_cq_line_raw(struct rd *rd, const char *name, int idx,
diff --git a/rdma/utils.c b/rdma/utils.c
index 4d3de4fadba2..2a201aa4aeb7 100644
--- a/rdma/utils.c
+++ b/rdma/utils.c
@@ -781,11 +781,6 @@  static int print_driver_string(struct rd *rd, const char *key_str,
 	return 0;
 }
 
-void print_on_off(struct rd *rd, const char *key_str, bool on)
-{
-	print_driver_string(rd, key_str, (on) ? "on":"off");
-}
-
 static int print_driver_s32(struct rd *rd, const char *key_str, int32_t val,
 			      enum rdma_nldev_print_type print_type)
 {