diff options
author | Peter Rajnoha <prajnoha@redhat.com> | 2016-05-12 14:07:05 +0200 |
---|---|---|
committer | Peter Rajnoha <prajnoha@redhat.com> | 2016-06-20 11:33:42 +0200 |
commit | 0ba5f4b8e977a6f2f45f95777da508b42d84c01a (patch) | |
tree | 23712e292fe46f0797506ec95e1afcb0fed98d0d /libdm/libdm-report.c | |
parent | 102cc4c1e241ee7c3f6cc8c863a06dd29f373fbc (diff) | |
download | lvm2-0ba5f4b8e977a6f2f45f95777da508b42d84c01a.tar.gz |
refactor: move field width calculation and sort preparation from _do_report_object to dm_report_output
This also prepares code for repeated dm_report_output calls.
Diffstat (limited to 'libdm/libdm-report.c')
-rw-r--r-- | libdm/libdm-report.c | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/libdm/libdm-report.c b/libdm/libdm-report.c index 13f202735..7a5d6e564 100644 --- a/libdm/libdm-report.c +++ b/libdm/libdm-report.c @@ -1913,7 +1913,6 @@ static int _do_report_object(struct dm_report *rh, void *object, int do_output, struct row *row = NULL; struct dm_report_field *field; void *data = NULL; - int len; int r = 0; if (!rh) { @@ -2021,17 +2020,6 @@ static int _do_report_object(struct dm_report *rh, void *object, int do_output, dm_list_add(&rh->rows, &row->list); - dm_list_iterate_items(field, &row->fields) { - len = (int) strlen(field->report_string); - if ((len > field->props->width)) - field->props->width = len; - - if ((rh->flags & RH_SORT_REQUIRED) && - (field->props->flags & FLD_SORT_KEY)) { - (*row->sort_fields)[field->props->sort_posn] = field; - } - } - if (!(rh->flags & DM_REPORT_OUTPUT_BUFFERED)) return dm_report_output(rh); out: @@ -4627,6 +4615,9 @@ static int _print_basic_report_header(struct dm_report *rh) int dm_report_output(struct dm_report *rh) { + struct row *row; + struct dm_report_field *field; + size_t len; int r = 0; if (_is_json_report(rh) && @@ -4638,6 +4629,19 @@ int dm_report_output(struct dm_report *rh) goto out; } + dm_list_iterate_items(row, &rh->rows) { + dm_list_iterate_items(field, &row->fields) { + len = (int) strlen(field->report_string); + if ((len > field->props->width)) + field->props->width = len; + + if ((rh->flags & RH_SORT_REQUIRED) && + (field->props->flags & FLD_SORT_KEY)) { + (*row->sort_fields)[field->props->sort_posn] = field; + } + } + } + if ((rh->flags & RH_SORT_REQUIRED)) _sort_rows(rh); |