[lvm-devel] master - toollib: introduce validate_lvname_param

Zdenek Kabelac zkabelac at fedoraproject.org
Sun Sep 28 11:56:44 UTC 2014


Gitweb:        http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=0d4baeba18646478e1edb7b26a9f9c74d6add1f5
Commit:        0d4baeba18646478e1edb7b26a9f9c74d6add1f5
Parent:        89e1190ef01943b59207c2093e643a6b06dc9be6
Author:        Zdenek Kabelac <zkabelac at redhat.com>
AuthorDate:    Sun Sep 28 12:57:39 2014 +0200
Committer:     Zdenek Kabelac <zkabelac at redhat.com>
CommitterDate: Sun Sep 28 13:49:01 2014 +0200

toollib: introduce validate_lvname_param

Function for parsing and validating of lvname parameter.
---
 tools/toollib.c |   37 +++++++++++++++++++++++++++++++++++++
 tools/toollib.h |    3 +++
 2 files changed, 40 insertions(+), 0 deletions(-)

diff --git a/tools/toollib.c b/tools/toollib.c
index eb7f058..ec9a95c 100644
--- a/tools/toollib.c
+++ b/tools/toollib.c
@@ -1949,3 +1949,40 @@ 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;
+}
diff --git a/tools/toollib.h b/tools/toollib.h
index b4fc24c..8aa82e0 100644
--- a/tools/toollib.h
+++ b/tools/toollib.h
@@ -144,4 +144,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




More information about the lvm-devel mailing list