]> www.infradead.org Git - users/sagi/nvme-cli.git/commitdiff
nvme-print-json: Add json output result function
authorTokunori Ikegami <ikegami.t@gmail.com>
Sun, 21 May 2023 15:51:52 +0000 (00:51 +0900)
committerDaniel Wagner <wagi@monom.org>
Wed, 24 May 2023 15:41:00 +0000 (17:41 +0200)
Signed-off-by: Tokunori Ikegami <ikegami.t@gmail.com>
nvme-print-json.c
nvme-print-json.h

index d9b19c96a8d64baf28b478737eb6d046313876aa..a379179291ad0fd9b764b3adb7a7163f4a6c7322 100644 (file)
@@ -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)
index d81ff019a15cff9ce835b7cbc9bf31c55d6606b9..f9b27174f189e4ce6e852e7b1bcb06553b0e23de 100644 (file)
@@ -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)