1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-10-27 18:55:19 +03:00

toollib: introduce validate_lvname_param

Function for parsing and validating of lvname parameter.
This commit is contained in:
Zdenek Kabelac 2014-09-28 12:57:39 +02:00
parent 89e1190ef0
commit 0d4baeba18
2 changed files with 40 additions and 0 deletions

View File

@ -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;
}

View File

@ -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