Satoru Takeuchi
2014-Jul-25 06:16 UTC
[PATCH 1/2] btrfs-progs: introduce test_issubvolname() for simplicity
From: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com> There are many duplicated codes to check if the given string is correct subvolume name. Introduce test_issubvolname() for this purpose for simplicity. Signed-off-by: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com> --- cmds-subvolume.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/cmds-subvolume.c b/cmds-subvolume.c index 639fb10..b7bfb3e 100644 --- a/cmds-subvolume.c +++ b/cmds-subvolume.c @@ -43,6 +43,18 @@ static const char * const subvolume_cmd_group_usage[] = { }; /* + * test if name is a correct subvolume name + * this function return + * 0-> name is not a correct subvolume name + * 1-> name is a correct subvolume name + */ +static int test_issubvolname(char *name) +{ + return name[0] != '\0' && !strchr(name, '/') && + strcmp(name, ".") && strcmp(name, ".."); +} + +/* * test if path is a directory * this function return * 0-> path exists but it is not a directory @@ -127,8 +139,7 @@ static int cmd_subvol_create(int argc, char **argv) dupdir = strdup(dst); dstdir = dirname(dupdir); - if (!strcmp(newname, ".") || !strcmp(newname, "..") || - strchr(newname, '/') ){ + if (!test_issubvolname(newname)) { fprintf(stderr, "ERROR: uncorrect subvolume name ('%s')\n", newname); goto out; @@ -302,8 +313,7 @@ again: vname = basename(dupvname); free(cpath); - if (!strcmp(vname, ".") || !strcmp(vname, "..") || - strchr(vname, '/')) { + if (!test_issubvolname(vname)) { fprintf(stderr, "ERROR: incorrect subvolume name ('%s')\n", vname); ret = 1; @@ -711,8 +721,7 @@ static int cmd_snapshot(int argc, char **argv) dstdir = dirname(dupdir); } - if (!strcmp(newname, ".") || !strcmp(newname, "..") || - strchr(newname, '/') ){ + if (!test_issubvolname(newname)) { fprintf(stderr, "ERROR: incorrect snapshot name ('%s')\n", newname); goto out; -- 1.9.3 -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html