[lvm-devel] master - refactor: move field width calculation and sort preparation from _do_report_object to dm_report_output

Peter Rajnoha prajnoha at fedoraproject.org
Mon Jun 20 09:41:11 UTC 2016


Gitweb:        http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=0ba5f4b8e977a6f2f45f95777da508b42d84c01a
Commit:        0ba5f4b8e977a6f2f45f95777da508b42d84c01a
Parent:        102cc4c1e241ee7c3f6cc8c863a06dd29f373fbc
Author:        Peter Rajnoha <prajnoha at redhat.com>
AuthorDate:    Thu May 12 14:07:05 2016 +0200
Committer:     Peter Rajnoha <prajnoha at redhat.com>
CommitterDate: Mon Jun 20 11:33:42 2016 +0200

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 fa4b9e6..7e98e1f 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 13f2027..7a5d6e5 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);
 




More information about the lvm-devel mailing list