[lvm-devel] master - report: also recognize variants without underscores for <prefix>_all fields

Peter Rajnoha prajnoha at fedoraproject.org
Tue Aug 4 07:05:01 UTC 2015


Gitweb:        http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=6ac5689ce4d4f86c4b3985d73a0fdb4af04c298d
Commit:        6ac5689ce4d4f86c4b3985d73a0fdb4af04c298d
Parent:        d11f8d42287025ff8584b9d6f1d5e70a0d78371b
Author:        Peter Rajnoha <prajnoha at redhat.com>
AuthorDate:    Tue Aug 4 09:03:31 2015 +0200
Committer:     Peter Rajnoha <prajnoha at redhat.com>
CommitterDate: Tue Aug 4 09:03:31 2015 +0200

report: also recognize variants without underscores for <prefix>_all fields

For example: "pvs -o pv_all" and pvs -o pvall" are same.
---
 libdm/libdm-report.c |   11 ++++++++---
 1 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/libdm/libdm-report.c b/libdm/libdm-report.c
index 5b94311..225da90 100644
--- a/libdm/libdm-report.c
+++ b/libdm/libdm-report.c
@@ -876,15 +876,20 @@ static void _all_match_combine(const struct dm_report_object_type *types,
 			       const char *field, size_t flen,
 			       uint32_t *report_types)
 {
+	char field_canon[DM_REPORT_FIELD_TYPE_ID_LEN];
 	const struct dm_report_object_type *t;
 	size_t prefix_len;
 
+	if (!_get_canonical_field_name(field, flen, field_canon, DM_REPORT_FIELD_TYPE_ID_LEN, NULL))
+		return;
+	flen = strlen(field_canon);
+
 	for (t = types; t->data_fn; t++) {
-		prefix_len = strlen(t->prefix);
+		prefix_len = strlen(t->prefix) - 1;
 
-		if (!strncasecmp(t->prefix, field, prefix_len) &&
+		if (!strncasecmp(t->prefix, field_canon, prefix_len) &&
 		    ((unprefixed_all_matched && (flen == prefix_len)) ||
-		     (!strncasecmp(field + prefix_len, "all", 3) &&
+		     (!strncasecmp(field_canon + prefix_len, "all", 3) &&
 		      (flen == prefix_len + 3))))
 			*report_types |= t->id;
 	}




More information about the lvm-devel mailing list