summaryrefslogtreecommitdiff
path: root/libdm
diff options
context:
space:
mode:
authorPeter Rajnoha <prajnoha@redhat.com>2022-06-27 09:29:55 +0200
committerPeter Rajnoha <prajnoha@redhat.com>2022-08-11 11:10:11 +0200
commit99299eb728d29b996a5ddacef7bafff2029e7d2e (patch)
treea8176d4a1b5191019aaab70b2eb3966066433577 /libdm
parent02f015990b2d077f304e19c9ff11728d4480bee8 (diff)
downloadlvm2-99299eb728d29b996a5ddacef7bafff2029e7d2e.tar.gz
libdm: report: remove double quotes around numeric values in JSON_STD output
In JSON format, we print numeric values this way: "key" = "N" while in JSON_STD format, we print numeric value this way: "key" = N (Where N is a numeric value.)
Diffstat (limited to 'libdm')
-rw-r--r--libdm/libdm-report.c27
1 files changed, 20 insertions, 7 deletions
diff --git a/libdm/libdm-report.c b/libdm/libdm-report.c
index b43ac4298..122a911c8 100644
--- a/libdm/libdm-report.c
+++ b/libdm/libdm-report.c
@@ -4381,6 +4381,11 @@ static int _is_json_report(struct dm_report *rh)
rh->group_item->group->type == DM_REPORT_GROUP_JSON_STD);
}
+static int _is_pure_numeric_field(struct dm_report_field *field)
+{
+ return field->props->flags & (DM_REPORT_FIELD_TYPE_NUMBER | DM_REPORT_FIELD_TYPE_PERCENT);
+}
+
/*
* Produce report output
*/
@@ -4400,10 +4405,16 @@ static int _output_field(struct dm_report *rh, struct dm_report_field *field)
if (!dm_pool_grow_object(rh->mem, JSON_QUOTE, 1) ||
!dm_pool_grow_object(rh->mem, fields[field->props->field_num].id, 0) ||
!dm_pool_grow_object(rh->mem, JSON_QUOTE, 1) ||
- !dm_pool_grow_object(rh->mem, JSON_PAIR, 1) ||
- !dm_pool_grow_object(rh->mem, JSON_QUOTE, 1)) {
- log_error("dm_report: Unable to extend output line");
- return 0;
+ !dm_pool_grow_object(rh->mem, JSON_PAIR, 1)) {
+ log_error(UNABLE_TO_EXTEND_OUTPUT_LINE_MSG);
+ goto bad;
+ }
+
+ if (!(_is_json_std_report(rh) && _is_pure_numeric_field(field))) {
+ if (!dm_pool_grow_object(rh->mem, JSON_QUOTE, 1)) {
+ log_error(UNABLE_TO_EXTEND_OUTPUT_LINE_MSG);
+ goto bad;
+ }
}
} else if (rh->flags & DM_REPORT_OUTPUT_FIELD_NAME_PREFIX) {
if (!(field_id = dm_strdup(fields[field->props->field_num].id))) {
@@ -4512,9 +4523,11 @@ static int _output_field(struct dm_report *rh, struct dm_report_field *field)
}
}
} else if (_is_json_report(rh)) {
- if (!dm_pool_grow_object(rh->mem, JSON_QUOTE, 1)) {
- log_error(UNABLE_TO_EXTEND_OUTPUT_LINE_MSG);
- goto bad;
+ if (!(_is_json_std_report(rh) && _is_pure_numeric_field(field))) {
+ if (!dm_pool_grow_object(rh->mem, JSON_QUOTE, 1)) {
+ log_error(UNABLE_TO_EXTEND_OUTPUT_LINE_MSG);
+ goto bad;
+ }
}
}