summaryrefslogtreecommitdiff
path: root/libdm/libdm-report.c
diff options
context:
space:
mode:
authorPeter Rajnoha <prajnoha@redhat.com>2016-05-12 14:07:05 +0200
committerPeter Rajnoha <prajnoha@redhat.com>2016-06-20 11:33:42 +0200
commit0ba5f4b8e977a6f2f45f95777da508b42d84c01a (patch)
tree23712e292fe46f0797506ec95e1afcb0fed98d0d /libdm/libdm-report.c
parent102cc4c1e241ee7c3f6cc8c863a06dd29f373fbc (diff)
downloadlvm2-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.c28
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);