summaryrefslogtreecommitdiff
path: root/libdm/libdm-report.c
diff options
context:
space:
mode:
authorPeter Rajnoha <prajnoha@redhat.com>2016-08-04 13:50:45 +0200
committerPeter Rajnoha <prajnoha@redhat.com>2016-08-09 18:24:45 +0200
commit7d1125e5b785014d3bae34acd158c528a4222871 (patch)
tree9dd0a02dbdaaea7067c286542acc1d4ef3f53f5c /libdm/libdm-report.c
parentd86caf952ee208ef2b3b56937af670c76db75ba0 (diff)
downloadlvm2-7d1125e5b785014d3bae34acd158c528a4222871.tar.gz
libdm: report: add dm_report_group_output_and_pop_all
The dm_report_group_output_and_pop_all calls dm_report_output and dm_report_group_pop for all the items that are currently in report group. This is just a shortcut that makes it easier to output and pop group's content so the group handle can be reused again without a need to initialize and configure it again. The functionality of dm_report_group_output_and_pop_all is the same as dm_report_destroy but without destroying the report group handle.
Diffstat (limited to 'libdm/libdm-report.c')
-rw-r--r--libdm/libdm-report.c59
1 files changed, 21 insertions, 38 deletions
diff --git a/libdm/libdm-report.c b/libdm/libdm-report.c
index d1f2dd844..fed79d472 100644
--- a/libdm/libdm-report.c
+++ b/libdm/libdm-report.c
@@ -5028,57 +5028,40 @@ int dm_report_group_pop(struct dm_report_group *group)
return 1;
}
-static int _report_group_destroy_single(void)
+int dm_report_group_output_and_pop_all(struct dm_report_group *group)
{
- return 1;
-}
+ struct report_group_item *item, *tmp_item;
-static int _report_group_destroy_basic(void)
-{
- return 1;
-}
+ dm_list_iterate_items_safe(item, tmp_item, &group->items) {
+ if (!item->parent) {
+ item->store.finished_count = 0;
+ continue;
+ }
+ if (item->report && !dm_report_output(item->report))
+ return_0;
+ if (!dm_report_group_pop(group))
+ return_0;
+ }
+
+ if (group->type == DM_REPORT_GROUP_JSON) {
+ _json_output_start(group);
+ log_print(JSON_OBJECT_END);
+ group->indent -= JSON_INDENT_UNIT;
+ }
-static int _report_group_destroy_json(struct dm_report_group *group)
-{
- _json_output_start(group);
- log_print(JSON_OBJECT_END);
return 1;
}
int dm_report_group_destroy(struct dm_report_group *group)
{
- struct report_group_item *item, *tmp_item;
- int r = 0;
+ int r = 1;
if (!group)
return 1;
- dm_list_iterate_items_safe(item, tmp_item, &group->items) {
- if (item->report && !dm_report_output(item->report))
- goto_out;
- if (!dm_report_group_pop(group))
- goto_out;
- }
-
- switch (group->type) {
- case DM_REPORT_GROUP_SINGLE:
- if (!_report_group_destroy_single())
- goto_out;
- break;
- case DM_REPORT_GROUP_BASIC:
- if (!_report_group_destroy_basic())
- goto_out;
- break;
- case DM_REPORT_GROUP_JSON:
- if (!_report_group_destroy_json(group))
- goto_out;
- break;
- default:
- goto_out;
- }
+ if (!dm_report_group_output_and_pop_all(group))
+ r = 0;
- r = 1;
-out:
dm_pool_destroy(group->mem);
return r;
}