From: Tokunori Ikegami <ikegami.t@gmail.com>
Date: Sun, 21 May 2023 15:51:52 +0000 (+0900)
Subject: nvme-print-json: Add json output result function
X-Git-Tag: v2.5~91
X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=e853da696ea4bdcad0e1e03f46f128940e236aa4;p=users%2Fsagi%2Fnvme-cli.git

nvme-print-json: Add json output result function

Signed-off-by: Tokunori Ikegami <ikegami.t@gmail.com>
---

diff --git a/nvme-print-json.c b/nvme-print-json.c
index d9b19c96..a3791792 100644
--- a/nvme-print-json.c
+++ b/nvme-print-json.c
@@ -2857,22 +2857,23 @@ void json_output_status(int status)
 	json_output_object(root);
 }
 
-void json_output_error(const char *msg, va_list ap)
+void json_output_message(bool error, const char *msg, va_list ap)
 {
 	struct json_object *root = json_create_object();
-	char *error;
+	char *value;
+	const char *key = error ? "error" : "result";
 
-	if (vasprintf(&error, msg, ap) < 0)
-		error = NULL;
+	if (vasprintf(&value, msg, ap) < 0)
+		value = NULL;
 
-	if (error)
-		json_object_add_value_string(root, "error", error);
+	if (value)
+		json_object_add_value_string(root, key, value);
 	else
-		json_object_add_value_string(root, "error", "Could not allocate string");
+		json_object_add_value_string(root, key, "Could not allocate string");
 
 	json_output_object(root);
 
-	free(error);
+	free(value);
 }
 
 void json_output_perror(const char *msg)
diff --git a/nvme-print-json.h b/nvme-print-json.h
index d81ff019..f9b27174 100644
--- a/nvme-print-json.h
+++ b/nvme-print-json.h
@@ -5,6 +5,9 @@
 
 #ifdef CONFIG_JSONC
 
+#define json_output_error(msg, ap) json_output_message(true, msg, ap)
+#define json_output_result(msg, ap) json_output_message(false, msg, ap)
+
 void json_simple_topology(nvme_root_t r);
 void json_print_list_items(nvme_root_t r,
 			   enum nvme_print_flags flags);
@@ -79,7 +82,7 @@ void json_predictable_latency_per_nvmset(
 	struct nvme_nvmset_predictable_lat_log *plpns_log,
 	__u16 nvmset_id);
 void json_output_status(int status);
-void json_output_error(const char *msg, va_list ap);
+void json_output_message(bool error, const char *msg, va_list ap);
 void json_output_perror(const char *msg);
 
 /* fabrics.c */
@@ -142,6 +145,7 @@ void json_connect_msg(nvme_ctrl_t c);
 #define json_output_status(status)
 #define json_output_error(const char *msg, va_list ap)
 #define json_output_perror(const char *msg)
+#define json_output_result(const char *msg, va_list ap)
 
 /* fabrics.c */
 #define json_discovery_log(log, numrec)