[lvm-devel] master - report: add _get_report_idx_from_name and _should_process_report_idx helper fns
Peter Rajnoha
prajnoha at fedoraproject.org
Mon Jun 20 09:40:50 UTC 2016
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=80ffaefb88917f77eafdf36dd4f882cc65706050
Commit: 80ffaefb88917f77eafdf36dd4f882cc65706050
Parent: 28b4c48e2ae66b87bbb5d8fd29b761edba63a90e
Author: Peter Rajnoha <prajnoha at redhat.com>
AuthorDate: Thu May 26 15:50:52 2016 +0200
Committer: Peter Rajnoha <prajnoha at redhat.com>
CommitterDate: Mon Jun 20 11:33:42 2016 +0200
report: add _get_report_idx_from_name and _should_process_report_idx helper fns
Prepare for recognition of cmd line options for each subreport within
one command.
---
tools/reporter.c | 41 +++++++++++++++++++++++++++++++++++++++++
1 files changed, 41 insertions(+), 0 deletions(-)
diff --git a/tools/reporter.c b/tools/reporter.c
index 408d410..103ae2c 100644
--- a/tools/reporter.c
+++ b/tools/reporter.c
@@ -723,6 +723,47 @@ static void _del_option_from_list(struct dm_list *sll, const char *prefix,
}
}
+#define _get_report_idx(report_type,single_report_type) \
+ (((report_type != FULL) && (report_type == single_report_type)) ? REPORT_IDX_SINGLE : REPORT_IDX_FULL_ ## single_report_type)
+
+static report_idx_t _get_report_idx_from_name(report_type_t report_type, const char *name)
+{
+ report_idx_t idx;
+
+ if (!name || !*name)
+ return REPORT_IDX_NULL;
+
+ if (!strcasecmp(name, "log"))
+ idx = REPORT_IDX_LOG;
+ else if (!strcasecmp(name, "vg"))
+ idx = _get_report_idx(report_type, VGS);
+ else if (!strcasecmp(name, "pv"))
+ idx = _get_report_idx(report_type, PVS);
+ else if (!strcasecmp(name, "lv"))
+ idx = _get_report_idx(report_type, LVS);
+ else if (!strcasecmp(name, "pvseg"))
+ idx = _get_report_idx(report_type, PVSEGS);
+ else if (!strcasecmp(name, "seg"))
+ idx = _get_report_idx(report_type, SEGS);
+ else {
+ idx = REPORT_IDX_NULL;
+ log_error("Unknonwn report specifier in "
+ "report option list: %s.", name);
+ }
+
+ return idx;
+}
+
+static int _should_process_report_idx(report_type_t report_type, report_idx_t idx)
+{
+ if (((idx == REPORT_IDX_LOG) && (report_type != CMDLOG)) ||
+ ((idx == REPORT_IDX_SINGLE) && ((report_type == FULL) || (report_type == CMDLOG))) ||
+ ((idx > REPORT_IDX_LOG) && report_type != FULL))
+ return 0;
+
+ return 1;
+}
+
static int _get_report_options(struct cmd_context *cmd,
struct report_args *args,
struct single_report_args *single_args)
More information about the lvm-devel
mailing list