From b74d0dffb11c929c88e8ce7805f7aa6b370522b5 Mon Sep 17 00:00:00 2001 From: Jeff Mahoney Date: Tue, 13 Aug 2019 21:04:00 -0400 Subject: [PATCH] btrfs-progs: qgroups: use parse_size instead of open coding it The only difference between parse_limit and parse_size is that parse_limit accepts "none" as a valid input. That's easy enough to handle as a special case and lets us drop the duplicate code. Reviewed-by: Qu Wenruo Signed-off-by: Jeff Mahoney Signed-off-by: David Sterba --- cmds/qgroup.c | 58 ++++----------------------------------------------- 1 file changed, 4 insertions(+), 54 deletions(-) diff --git a/cmds/qgroup.c b/cmds/qgroup.c index 59b43c98..ba81052a 100644 --- a/cmds/qgroup.c +++ b/cmds/qgroup.c @@ -159,56 +159,6 @@ static int _cmd_qgroup_create(int create, int argc, char **argv) return 0; } -static int parse_limit(const char *p, unsigned long long *s) -{ - char *endptr; - unsigned long long size; - unsigned long long CLEAR_VALUE = -1; - - if (strcasecmp(p, "none") == 0) { - *s = CLEAR_VALUE; - return 1; - } - - if (p[0] == '-') - return 0; - - size = strtoull(p, &endptr, 10); - if (p == endptr) - return 0; - - switch (*endptr) { - case 'T': - case 't': - size *= 1024; - /* fallthrough */ - case 'G': - case 'g': - size *= 1024; - /* fallthrough */ - case 'M': - case 'm': - size *= 1024; - /* fallthrough */ - case 'K': - case 'k': - size *= 1024; - ++endptr; - break; - case 0: - break; - default: - return 0; - } - - if (*endptr) - return 0; - - *s = size; - - return 1; -} - static const char * const cmd_qgroup_assign_usage[] = { "btrfs qgroup assign [options] ", "Assign SRC as the child qgroup of DST", @@ -455,10 +405,10 @@ static int cmd_qgroup_limit(const struct cmd_struct *cmd, int argc, char **argv) if (check_argc_min(argc - optind, 2)) return 1; - if (!parse_limit(argv[optind], &size)) { - error("invalid size argument: %s", argv[optind]); - return 1; - } + if (!strcasecmp(argv[optind], "none")) + size = -1ULL; + else + size = parse_size(argv[optind]); memset(&args, 0, sizeof(args)); if (compressed)