[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20210422154050.3339628-3-kuba@kernel.org>
Date: Thu, 22 Apr 2021 08:40:45 -0700
From: Jakub Kicinski <kuba@...nel.org>
To: mkubecek@...e.cz
Cc: netdev@...r.kernel.org, idosch@...sch.org,
Jakub Kicinski <kuba@...nel.org>
Subject: [PATCH ethtool-next v2 2/7] json: improve 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 entry-per-line
(unlike iproute2 where the output has multiple params on a line
to cater well to multi-interface dumps).
Use this knowledge in the json array API to make it simpler to use.
At the same time (similarly to open_json_object()) do not require
specifying output type. Users can pass an empty string if they
want nothing printed for non-JSON output.
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