[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20210416160252.2830567-3-kuba@kernel.org>
Date: Fri, 16 Apr 2021 09:02:48 -0700
From: Jakub Kicinski <kuba@...nel.org>
To: netdev@...r.kernel.org, idosch@...dia.com
Cc: mkubecek@...e.cz, Jakub Kicinski <kuba@...nel.org>
Subject: [RFC ethtool 2/6] json: simplify array print API
In ethtool when we print an array we usually have a label (non-JSON)
and a key (JSON), because arrays are most often printed on a single
line (unlike iproute2 where the output has multiple params
on a line to cater to multi-interface dumps well).
Build this into the json array API.
Signed-off-by: Jakub Kicinski <kuba@...nel.org>
---
json_print.c | 20 ++++++++++----------
json_print.h | 4 ++--
2 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/json_print.c b/json_print.c
index 56d5b4337e49..4f62767bdbc9 100644
--- a/json_print.c
+++ b/json_print.c
@@ -73,15 +73,15 @@ void close_json_object(void)
/*
* Start json array or string array using
* the provided string as json key (if not null)
- * or as array delimiter in non-json context.
+ * or array delimiter in non-json context.
*/
-void open_json_array(enum output_type type, const char *str)
+void open_json_array(const char *key, const char *str)
{
- if (_IS_JSON_CONTEXT(type)) {
- if (str)
- jsonw_name(_jw, str);
+ if (is_json_context()) {
+ if (key)
+ jsonw_name(_jw, key);
jsonw_start_array(_jw);
- } else if (_IS_FP_CONTEXT(type)) {
+ } else {
printf("%s", str);
}
}
@@ -89,12 +89,12 @@ void open_json_array(enum output_type type, const char *str)
/*
* End json array or string array
*/
-void close_json_array(enum output_type type, const char *str)
+void close_json_array(const char *delim)
{
- if (_IS_JSON_CONTEXT(type))
+ if (is_json_context())
jsonw_end_array(_jw);
- else if (_IS_FP_CONTEXT(type))
- printf("%s", str);
+ else
+ printf("%s", delim);
}
/*
diff --git a/json_print.h b/json_print.h
index cc0c2ea19b59..df15314bafe2 100644
--- a/json_print.h
+++ b/json_print.h
@@ -37,8 +37,8 @@ void fflush_fp(void);
void open_json_object(const char *str);
void close_json_object(void);
-void open_json_array(enum output_type type, const char *delim);
-void close_json_array(enum output_type type, const char *delim);
+void open_json_array(const char *key, const char *str);
+void close_json_array(const char *delim);
void print_nl(void);
--
2.30.2
Powered by blists - more mailing lists