summaryrefslogtreecommitdiff
path: root/libdm
diff options
context:
space:
mode:
authorPeter Rajnoha <prajnoha@redhat.com>2022-06-29 16:00:25 +0200
committerPeter Rajnoha <prajnoha@redhat.com>2022-08-11 11:10:11 +0200
commit1e31621cebfb38f652233e2f80dd081cca5e8374 (patch)
tree75c055a7654fc4bf987f13b18edc50092ab08304 /libdm
parent99299eb728d29b996a5ddacef7bafff2029e7d2e (diff)
downloadlvm2-1e31621cebfb38f652233e2f80dd081cca5e8374.tar.gz
libdm: report: use 'null' for undefined numeric values in JSON_STD output
For JSON_STD format, use 'null' if a field has no value at all. In JSON format, we print undefined numeric values this way: "key" = "" while in JSON_STD format, we print undefined numeric values this way: "key" = null (Keep in mind that 'null' is different from 0 (zero value) which is a defined value.)
Diffstat (limited to 'libdm')
-rw-r--r--libdm/libdm-report.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/libdm/libdm-report.c b/libdm/libdm-report.c
index 122a911c8..df52ee088 100644
--- a/libdm/libdm-report.c
+++ b/libdm/libdm-report.c
@@ -4359,6 +4359,7 @@ static int _sort_rows(struct dm_report *rh)
#define JSON_ARRAY_START "["
#define JSON_ARRAY_END "]"
#define JSON_ESCAPE_CHAR "\\"
+#define JSON_NULL "null"
#define UNABLE_TO_EXTEND_OUTPUT_LINE_MSG "dm_report: Unable to extend output line"
@@ -4448,8 +4449,13 @@ static int _output_field(struct dm_report *rh, struct dm_report_field *field)
}
}
- repstr = field->report_string;
+ if (_is_json_std_report(rh) && _is_pure_numeric_field(field) && !*field->report_string)
+ repstr = JSON_NULL;
+ else
+ repstr = field->report_string;
+
width = field->props->width;
+
if (!(rh->flags & DM_REPORT_OUTPUT_ALIGNED)) {
if (_is_json_report(rh)) {
/* Escape any JSON_QUOTE that may appear in reported string. */