Btrfs-progs: clean up reduplicate parse_qgroupid() and replace atoi with strtoull
A message that is not in the archive (sent off-list or not yet received): [email protected]
PATCH 2/3 Btrfs-progs: clean up reduplicate parse_qgroupid() and replace atoi with strtoull
From: Wang Shilong <[email protected]>
1. parse_qgroupid() is implemented twice, clean up the reduplicate code.
2. atoi() can not detect errors, so use strtoull() instead of it.
Signed-off-by Wang Shilong <[email protected]>
Signed-off-by Miao Xie <[email protected]>
--- cmds-qgroup.c | 15 +-------------- qgroup.c | 22 ++++++++++++++++++---- qgroup.h | 2 ++ 3 files changed, 21 insertions(+), 18 deletions(-)
cmds-qgroup.c +1 -14
@@ -24,26 +24,13 @@#include "ioctl.h" #include "commands.h" +#include "qgroup.h" static const char *const qgroup_cmd_group_usage[] = {"btrfs qgroup <command> [options] <path>" ,NULL }; -static u64 parse_qgroupid (char *p) -{ -char *s =strchr (p,'/' ); -u64 level; -u64 id; - -if (!s) -return atoll (p); - level =atoll (p); - id =atoll (s +1 ); - -return (level <<48 ) | id; -} -static int qgroup_assign (int assign,int argc,char **argv) {int ret =0 ;
qgroup.c +18 -4
@@ -22,15 +22,29 @@u64 parse_qgroupid (char *p) {char *s =strchr (p,'/' ); +char *ptr_src_end = p +strlen (p); +char *ptr_parse_end =NULL ;u64 level;u64 id; -if (!s) -return atoll (p); - level =atoll (p); - id =atoll (s +1 ); +if (!s) { + id =strtoull (p, &ptr_parse_end,10 ); +if (ptr_parse_end != ptr_src_end) + goto err; +return id; + } + level =strtoull (p, &ptr_parse_end,10 ); +if (ptr_parse_end != s) + goto err; + + id =strtoull (s+1 , &ptr_parse_end,10 ); +if (ptr_parse_end != ptr_src_end) + goto err;return (level <<48 ) | id; +err: +fprintf (stderr,"ERROR:invalid qgroupid\n" ); +exit (-1 ); }int qgroup_inherit_size (struct btrfs_qgroup_inherit *p)
qgroup.h +2 -0
@@ -20,7 +20,9 @@#define _BTRFS_QGROUP_H#include "ioctl.h" +#include "kerncompat.h" +u64 parse_qgroupid (char *p);int qgroup_inherit_size (struct btrfs_qgroup_inherit *p);int qgroup_inherit_realloc (struct btrfs_qgroup_inherit **inherit,int incgroups,int inccopies);
-- 1.7.7.6