aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRon Diskin <rondi@mellanox.com>2020-01-23 12:32:26 +0200
committerStephen Hemminger <stephen@networkplumber.org>2020-01-27 05:43:54 -0800
commit31ca29b2bec4020929686eb240fa1abd963819a4 (patch)
treec10801662c79c5b24c2bbecd555059d56012a82f
parent919046d326bacd3d5fd76801cc71294fe2cfcbc7 (diff)
downloadiproute2-31ca29b2bec4020929686eb240fa1abd963819a4.tar.gz
json_print: Introduce print_#type_name_value
Until now print_#type functions supported printing constant names and unknown (variable) values only. Add functions to allow printing when the name is also sent to the function as a variable. Signed-off-by: Ron Diskin <rondi@mellanox.com> Reviewed-by: Moshe Shemesh <moshe@mellanox.com> Reviewed-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
-rw-r--r--include/json_print.h7
-rw-r--r--lib/json_print.c13
2 files changed, 20 insertions, 0 deletions
diff --git a/include/json_print.h b/include/json_print.h
index 6695654f7..fcc28d5e2 100644
--- a/include/json_print.h
+++ b/include/json_print.h
@@ -72,4 +72,11 @@ _PRINT_FUNC(lluint, unsigned long long)
_PRINT_FUNC(float, double)
#undef _PRINT_FUNC
+#define _PRINT_NAME_VALUE_FUNC(type_name, type, format_char) \
+ void print_##type_name##_name_value(const char *name, type value) \
+
+_PRINT_NAME_VALUE_FUNC(uint, unsigned int, u);
+_PRINT_NAME_VALUE_FUNC(string, const char*, s);
+#undef _PRINT_NAME_VALUE_FUNC
+
#endif /* _JSON_PRINT_H_ */
diff --git a/lib/json_print.c b/lib/json_print.c
index 43ea69bbf..fb5f0e5d9 100644
--- a/lib/json_print.c
+++ b/lib/json_print.c
@@ -127,6 +127,19 @@ _PRINT_FUNC(lluint, unsigned long long);
_PRINT_FUNC(float, double);
#undef _PRINT_FUNC
+#define _PRINT_NAME_VALUE_FUNC(type_name, type, format_char) \
+ void print_##type_name##_name_value(const char *name, type value)\
+ { \
+ SPRINT_BUF(format); \
+ \
+ snprintf(format, SPRINT_BSIZE, \
+ "%s %%"#format_char, name); \
+ print_##type_name(PRINT_ANY, name, format, value); \
+ }
+_PRINT_NAME_VALUE_FUNC(uint, unsigned int, u);
+_PRINT_NAME_VALUE_FUNC(string, const char*, s);
+#undef _PRINT_NAME_VALUE_FUNC
+
void print_color_string(enum output_type type,
enum color_attr color,
const char *key,