summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZdenek Kabelac <zkabelac@redhat.com>2014-10-01 11:30:35 -0500
committerDavid Teigland <teigland@redhat.com>2014-10-01 11:30:35 -0500
commit372a88626ab692b0e81147f884197a4762a59ab0 (patch)
tree3b4ac6a90e93e66cbf37d17ef636c2333ac13870
parentfbe1c0091e4ec7767e5275978b96243f5748719a (diff)
downloadlvm2-372a88626ab692b0e81147f884197a4762a59ab0.tar.gz
toollib: introduce validate_lvname_param
Function for parsing and validating of lvname parameter.
-rw-r--r--tools/toollib.c37
-rw-r--r--tools/toollib.h3
2 files changed, 40 insertions, 0 deletions
diff --git a/tools/toollib.c b/tools/toollib.c
index 69da41bab..dbaaee772 100644
--- a/tools/toollib.c
+++ b/tools/toollib.c
@@ -1260,6 +1260,43 @@ int get_and_validate_major_minor(const struct cmd_context *cmd,
return 1;
}
+/*
+ * Validate lvname parameter
+ *
+ * If it contains vgname, it is extracted from lvname.
+ * If there is passed vgname, it is compared whether its the same name.
+ */
+int validate_lvname_param(struct cmd_context *cmd, const char **vg_name,
+ const char **lv_name)
+{
+ const char *vgname;
+ const char *lvname;
+
+ if (!lv_name || !*lv_name)
+ return 1; /* NULL lvname is ok */
+
+ /* If contains VG name, extract it. */
+ if (strchr(*lv_name, (int) '/')) {
+ if (!(vgname = _extract_vgname(cmd, *lv_name, &lvname)))
+ return_0;
+
+ if (!*vg_name)
+ *vg_name = vgname;
+ else if (strcmp(vgname, *vg_name)) {
+ log_error("Please use a single volume group name "
+ "(\"%s\" or \"%s\")", vgname, *vg_name);
+ return 0;
+ }
+
+ *lv_name = lvname;
+ }
+
+ if (!apply_lvname_restrictions(*lv_name))
+ return_0;
+
+ return 1;
+}
+
struct name_id_list {
struct dm_list list;
const char *name;
diff --git a/tools/toollib.h b/tools/toollib.h
index 152b15a2e..3f50db1cb 100644
--- a/tools/toollib.h
+++ b/tools/toollib.h
@@ -141,4 +141,7 @@ int get_and_validate_major_minor(const struct cmd_context *cmd,
const struct format_type *fmt,
int32_t *major, int32_t *minor);
+int validate_lvname_param(struct cmd_context *cmd, const char **vg_name,
+ const char **lv_name);
+
#endif