diff options
author | Peter Rajnoha <prajnoha@redhat.com> | 2016-05-23 10:47:03 +0200 |
---|---|---|
committer | Peter Rajnoha <prajnoha@redhat.com> | 2016-06-02 14:08:11 +0200 |
commit | f63a0ddcb5516e68b3357138c00ef4dd24e2a2cf (patch) | |
tree | 845c4d1b33f470a5281fec14eca8d5f3109bce28 | |
parent | 72e6c6b531407c8f122f380588d8cd09bf395994 (diff) | |
download | lvm2-f63a0ddcb5516e68b3357138c00ef4dd24e2a2cf.tar.gz |
libdm: report: implement DM_REPORT_GROUP_EXTENDED for extended report output
-rw-r--r-- | libdm/libdm-report.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/libdm/libdm-report.c b/libdm/libdm-report.c index ab87ba7a2..831b36c44 100644 --- a/libdm/libdm-report.c +++ b/libdm/libdm-report.c @@ -4205,6 +4205,12 @@ static int _sort_rows(struct dm_report *rh) #define UNABLE_TO_EXTEND_OUTPUT_LINE_MSG "dm_report: Unable to extend output line" +static int _is_native_report(struct dm_report *rh) +{ + return rh->group_item && + (rh->group_item->group->type == DM_REPORT_GROUP_EXTENDED); +} + /* * Produce report output */ @@ -4475,6 +4481,12 @@ int dm_report_output(struct dm_report *rh) if ((rh->flags & RH_SORT_REQUIRED)) _sort_rows(rh); + if (_is_native_report(rh)) { + if (rh->group_item->parent->store.finished_count > 0) + log_print(""); + log_print("Report: %s", (const char *) rh->group_item->data); + } + if ((rh->flags & DM_REPORT_OUTPUT_COLUMNS_AS_ROWS)) r = _output_as_rows(rh); else @@ -4485,6 +4497,11 @@ out: return r; } +static int _report_group_create_native(struct dm_report_group *group) +{ + return 1; +} + struct dm_report_group *dm_report_group_create(dm_report_group_type_t type, void *data) { struct dm_report_group *group; @@ -4513,6 +4530,10 @@ struct dm_report_group *dm_report_group_create(dm_report_group_type_t type, void dm_list_add_h(&group->items, &item->list); switch (type) { + case DM_REPORT_GROUP_EXTENDED: + if (!_report_group_create_native(group)) + goto_bad; + break; default: goto_bad; } @@ -4523,6 +4544,11 @@ bad: return NULL; } +static int _report_group_push_native(struct report_group_item *item, const char *name) +{ + return 1; +} + int dm_report_group_push(struct dm_report_group *group, struct dm_report *report, void *data) { struct report_group_item *item, *tmp_item; @@ -4552,6 +4578,10 @@ int dm_report_group_push(struct dm_report_group *group, struct dm_report *report dm_list_add_h(&group->items, &item->list); switch (group->type) { + case DM_REPORT_GROUP_EXTENDED: + if (!_report_group_push_native(item, data)) + goto_bad; + break; default: goto_bad; } @@ -4563,6 +4593,11 @@ bad: return 0; } +static int _report_group_pop_native(struct report_group_item *item) +{ + return 1; +} + int dm_report_group_pop(struct dm_report_group *group) { struct report_group_item *item; @@ -4576,6 +4611,10 @@ int dm_report_group_pop(struct dm_report_group *group) } switch (group->type) { + case DM_REPORT_GROUP_EXTENDED: + if (!_report_group_pop_native(item)) + return_0; + break; default: return 0; } @@ -4594,6 +4633,11 @@ int dm_report_group_pop(struct dm_report_group *group) return 1; } +static int _report_group_destroy_native(void) +{ + return 1; +} + int dm_report_group_destroy(struct dm_report_group *group) { struct report_group_item *item, *tmp_item; @@ -4610,6 +4654,10 @@ int dm_report_group_destroy(struct dm_report_group *group) } switch (group->type) { + case DM_REPORT_GROUP_EXTENDED: + if (!_report_group_destroy_native()) + goto_out; + break; default: goto_out; } |