@@ -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);
}
/*
@@ -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);
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@kernel.org> --- json_print.c | 20 ++++++++++---------- json_print.h | 4 ++-- 2 files changed, 12 insertions(+), 12 deletions(-)