Btrfs-progs: clean up reduplicate parse_qgroupid() and replace atoi with strtoull
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 <wangsl-fnst@cn.fujitsu.com> Signed-off-by: Miao Xie <miaox@cn.fujitsu.com> Signed-off-by: Gene Czarcinski <gene@czarc.net>
This commit is contained in:
parent
f933e084ea
commit
9886166880
|
@ -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;
|
||||
|
|
22
qgroup.c
22
qgroup.c
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue