btrfs-progs: introduce test_issubvolname() for simplicity
PATCH v3 1/2 btrfs-progs: introduce test_issubvolname() for simplicity
From: Satoru Takeuchi <[email protected]>
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 <[email protected]>
Cc David Sterba <[email protected]>
Cc Mike Fleetwood <[email protected]>
---
changelog:
v2: Move test_issubvolname() to utils.c.
Change the target branch to integ-20140729.
v3: Change the type of the 1st argument
from "char *" to "const char *".
--- cmds-subvolume.c | 9 +++------ utils.c | 12 ++++++++++++ utils.h | 1 + 3 files changed, 16 insertions(+), 6 deletions(-)
cmds-subvolume.c +3 -6
@@ -127,8 +127,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: incorrect subvolume name '%s'\n" , newname); goto out;
@@ -302,8 +301,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 +709,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;
utils.c +12 -0
@@ -2685,3 +2685,15 @@ int btrfs_read_sysfs(char path[PATH_MAX])close (fd);return atoi ((const char *)&val); } + +/* +* 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 +*/ +int test_issubvolname (const char *name) +{ +return name[0 ] !='\0' && !strchr (name,'/' ) && +strcmp (name,"." ) &&strcmp (name,".." ); +}
utils.h +1 -0
@@ -133,6 +133,7 @@ int get_fslist(struct btrfs_ioctl_fslist **out_fslist, u64 *out_count);int fsid_to_mntpt (__u8 *fsid,char *mntpt,int *mnt_cnt);int test_minimum_size (const char *file,u32 leafsize); +int test_issubvolname (const char *name);/* * Btrfs minimum size calculation is complicated, it should include at least:
Signature · 1 line
1.9.3
PATCH 2/2 btrfs-progs: move test_isdir() to utils.c
From: Satoru Takeuchi <[email protected]>
Since test_isdir() is a utility function, it's better to move it to utils.c. In addition, "const char *" is more appropriate type as its "path" argument because this argument is not changed in this function.
Signed-off-by Satoru Takeuchi <[email protected]>
Cc David Sterba <[email protected]>
Cc Mike Fleetwood <[email protected]>
--- cmds-subvolume.c | 19 ------------------- utils.c | 19 +++++++++++++++++++ utils.h | 1 + 3 files changed, 20 insertions(+), 19 deletions(-)
cmds-subvolume.c +0 -19
@@ -42,25 +42,6 @@ static const char * const subvolume_cmd_group_usage[] = {NULL }; -/* -* test if path is a directory -* this function return -* 0-> path exists but it is not a directory -* 1-> path exists and it is a directory -* -1 -> path is unaccessible -*/ -static int test_isdir (char *path) -{ -struct stat st; -int res; - - res =stat (path, &st); -if (res <0 ) -return -1 ; - -return S_ISDIR (st.st_mode); -} -static const char *const cmd_subvol_create_usage[] = {"btrfs subvolume create [-i <qgroupid>] [<dest>/]<name>" ,"Create a subvolume" ,
utils.c +19 -0
@@ -2697,3 +2697,22 @@ int test_issubvolname(const 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 +* 1-> path exists and it is a directory +* -1 -> path is unaccessible +*/ +int test_isdir (const char *path) +{ +struct stat st; +int res; + + res =stat (path, &st); +if (res <0 ) +return -1 ; + +return S_ISDIR (st.st_mode); +}
utils.h +1 -0
@@ -134,6 +134,7 @@ int fsid_to_mntpt(__u8 *fsid, char *mntpt, int *mnt_cnt);int test_minimum_size (const char *file,u32 leafsize);int test_issubvolname (const char *name); +int test_isdir (const char *path);/* * Btrfs minimum size calculation is complicated, it should include at least:
Signature · 1 line
1.9.3