diff options
author | Zdenek Kabelac <zkabelac@redhat.com> | 2014-10-01 11:30:35 -0500 |
---|---|---|
committer | David Teigland <teigland@redhat.com> | 2014-10-01 11:30:35 -0500 |
commit | 372a88626ab692b0e81147f884197a4762a59ab0 (patch) | |
tree | 3b4ac6a90e93e66cbf37d17ef636c2333ac13870 | |
parent | fbe1c0091e4ec7767e5275978b96243f5748719a (diff) | |
download | lvm2-372a88626ab692b0e81147f884197a4762a59ab0.tar.gz |
toollib: introduce validate_lvname_param
Function for parsing and validating of lvname parameter.
-rw-r--r-- | tools/toollib.c | 37 | ||||
-rw-r--r-- | tools/toollib.h | 3 |
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 |