[lvm-devel] master - report: add wrappers to set values and percents

Zdenek Kabelac zkabelac at fedoraproject.org
Fri Nov 15 11:39:26 UTC 2013


Gitweb:        http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=49ccf44f4505242262bf35f7e226d2791aad9397
Commit:        49ccf44f4505242262bf35f7e226d2791aad9397
Parent:        322e7b3060e79e62708f7936f140386d64704878
Author:        Zdenek Kabelac <zkabelac at redhat.com>
AuthorDate:    Mon Sep 23 10:02:01 2013 +0200
Committer:     Zdenek Kabelac <zkabelac at redhat.com>
CommitterDate: Fri Nov 15 11:05:00 2013 +0100

report: add wrappers to set values and percents

Add wrapper function for dm_report_field_set_value() which returns void
and return 1, so the code could be shorter.

Add wrapper function for percent display _field_set_percent().
---
 WHATS_NEW           |    1 +
 lib/report/report.c |   37 +++++++++++++++++++++++++++++++++++++
 2 files changed, 38 insertions(+), 0 deletions(-)

diff --git a/WHATS_NEW b/WHATS_NEW
index b6f51e1..b190ca4 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
 Version 2.02.105 -
 =====================================
+  Simplify reporting code.
 
 Version 2.02.104 - 13th November 2013
 =====================================
diff --git a/lib/report/report.c b/lib/report/report.c
index 46edf56..49a6b8a 100644
--- a/lib/report/report.c
+++ b/lib/report/report.c
@@ -38,6 +38,43 @@ static const uint64_t _minusone64 = UINT64_C(-1);
 static const int32_t _minusone32 = INT32_C(-1);
 static const uint64_t _zero64 = UINT64_C(0);
 
+static int _field_set_value(struct dm_report_field *field, const void *data, const void *sort)
+{
+	dm_report_field_set_value(field, data, sort);
+
+	return 1;
+}
+
+static int _field_set_percent(struct dm_report_field *field,
+			      struct dm_pool *mem,
+			      percent_t percent)
+{
+	char *repstr;
+	uint64_t *sortval;
+
+	if (percent == PERCENT_INVALID)
+		// FIXME  maybe use here '--'?
+		return _field_set_value(field, "", &_minusone64);
+
+	if (!(repstr = dm_pool_alloc(mem, 8)) ||
+	    !(sortval = dm_pool_alloc(mem, sizeof(uint64_t)))) {
+		if (repstr)
+			dm_pool_free(mem, repstr);
+		log_error("dm_pool_alloc failed.");
+		return 0;
+	}
+
+	if (dm_snprintf(repstr, 7, "%.2f", percent_to_float(percent)) < 0) {
+		dm_pool_free(mem, repstr);
+		log_error("Percentage too large.");
+		return 0;
+	}
+
+	*sortval = (uint64_t)(percent * 1000.f);
+
+	return _field_set_value(field, repstr, sortval);
+}
+
 /*
  * Data-munging functions to prepare each data type for display and sorting
  */




More information about the lvm-devel mailing list