aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Chinner <dchinner@redhat.com>2017-12-06 17:14:27 -0600
committerEric Sandeen <sandeen@redhat.com>2017-12-06 17:14:27 -0600
commit85d6f03d43b2b4e7f20257faeeceaa39e262e517 (patch)
tree56dab76387d9cc327b1ef0afae0b9b8caa3bab82
parenta350bbc1808acc5ec28a477de5d811c4bc913b03 (diff)
downloadxfsprogs-dev-85d6f03d43b2b4e7f20257faeeceaa39e262e517.tar.gz
mkfs: factor block subopts parser
Signed-Off-By: Dave Chinner <dchinner@redhat.com> Reviewed-by: Eric Sandeen <sandeen@redhat.com> Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
-rw-r--r--mkfs/xfs_mkfs.c43
1 files changed, 22 insertions, 21 deletions
diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c
index 10a064cbe4..6bd2e74f57 100644
--- a/mkfs/xfs_mkfs.c
+++ b/mkfs/xfs_mkfs.c
@@ -1485,6 +1485,19 @@ block_opts_parser(
char *value,
struct cli_params *cli)
{
+ int blocklog;
+
+ switch (subopt) {
+ case B_LOG:
+ blocklog = getnum(value, opts, B_LOG);
+ cli->blocksize = 1 << blocklog;
+ break;
+ case B_SIZE:
+ cli->blocksize = getnum(value, opts, B_SIZE);
+ break;
+ default:
+ return -EINVAL;
+ }
return 0;
}
@@ -1717,6 +1730,7 @@ main(
.rmapbt = false,
.reflink = false,
};
+ struct cli_params cli = {};
platform_uuid_generate(&uuid);
progname = basename(argv[0]);
@@ -1756,27 +1770,14 @@ main(
force_overwrite = 1;
break;
case 'b':
- p = optarg;
- while (*p != '\0') {
- char **subopts = (char **)bopts.subopts;
- char *value;
-
- switch (getsubopt(&p, subopts, &value)) {
- case B_LOG:
- blocklog = getnum(value, &bopts, B_LOG);
- blocksize = 1 << blocklog;
- blflag = 1;
- break;
- case B_SIZE:
- blocksize = getnum(value, &bopts,
- B_SIZE);
- blocklog = libxfs_highbit32(blocksize);
- bsflag = 1;
- break;
- default:
- unknown('b', value);
- }
- }
+ parse_subopts(c, optarg, &cli);
+
+ /* temp don't break code */
+ blocksize = cli.blocksize;
+ blocklog = libxfs_highbit32(blocksize);
+ blflag = cli_opt_set(&bopts, B_LOG);
+ bsflag = cli_opt_set(&bopts, B_SIZE);
+ /* end temp don't break code */
break;
case 'd':
p = optarg;