From 0ba5f4b8e977a6f2f45f95777da508b42d84c01a Mon Sep 17 00:00:00 2001 From: Peter Rajnoha Date: Thu, 12 May 2016 14:07:05 +0200 Subject: [PATCH] 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. --- WHATS_NEW_DM | 1 + libdm/libdm-report.c | 28 ++++++++++++++++------------ 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/WHATS_NEW_DM b/WHATS_NEW_DM index fa4b9e617..7e98e1f33 100644 --- a/WHATS_NEW_DM +++ b/WHATS_NEW_DM @@ -1,5 +1,6 @@ Version 1.02.128 - ================================= + Move field width handling/sort init from dm_report_object to dm_report_output. Add _LOG_BYPASS_REPORT flag for bypassing any log report currently set. Introduce DM_REPORT_GROUP_JSON for report group with JSON output format. Introduce DM_REPORT_GROUP_BASIC for report group with basic report output. 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); -- 2.43.5