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
commit997136c64e88d8c42c7def05042b8a60691da13a (patch)
tree32fd776314546e7afd7188e0d5b8def92d5699f4
parentf3bc91a450e1e25cc99cd73fe6d5c4a14a013438 (diff)
downloadxfsprogs-dev-997136c64e88d8c42c7def05042b8a60691da13a.tar.gz
mkfs: factor meta 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.c61
1 files changed, 28 insertions, 33 deletions
diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c
index a4f3804880..87e7a2da26 100644
--- a/mkfs/xfs_mkfs.c
+++ b/mkfs/xfs_mkfs.c
@@ -1674,6 +1674,30 @@ meta_opts_parser(
char *value,
struct cli_params *cli)
{
+ switch (subopt) {
+ case M_CRC:
+ cli->sb_feat.crcs_enabled = getnum(value, &mopts, M_CRC);
+ if (cli->sb_feat.crcs_enabled)
+ cli->sb_feat.dirftype = true;
+ break;
+ case M_FINOBT:
+ cli->sb_feat.finobt = getnum(value, &mopts, M_FINOBT);
+ break;
+ case M_UUID:
+ if (!value || *value == '\0')
+ reqval('m', opts->subopts, M_UUID);
+ if (platform_uuid_parse(value, &cli->uuid))
+ illegal(value, "m uuid");
+ break;
+ case M_RMAPBT:
+ cli->sb_feat.rmapbt = getnum(value, &mopts, M_RMAPBT);
+ break;
+ case M_REFLINK:
+ cli->sb_feat.reflink = getnum(value, &mopts, M_REFLINK);
+ break;
+ default:
+ return -EINVAL;
+ }
return 0;
}
@@ -1999,40 +2023,11 @@ main(
label = optarg;
break;
case 'm':
- p = optarg;
- while (*p != '\0') {
- char **subopts = (char **)mopts.subopts;
- char *value;
+ parse_subopts(c, optarg, &cli);
- switch (getsubopt(&p, subopts, &value)) {
- case M_CRC:
- sb_feat.crcs_enabled =
- getnum(value, &mopts, M_CRC);
- if (sb_feat.crcs_enabled)
- sb_feat.dirftype = true;
- break;
- case M_FINOBT:
- sb_feat.finobt = getnum(
- value, &mopts, M_FINOBT);
- break;
- case M_UUID:
- if (!value || *value == '\0')
- reqval('m', (const char **)subopts, M_UUID);
- if (platform_uuid_parse(value, &uuid))
- illegal(optarg, "m uuid");
- break;
- case M_RMAPBT:
- sb_feat.rmapbt = getnum(
- value, &mopts, M_RMAPBT);
- break;
- case M_REFLINK:
- sb_feat.reflink = getnum(
- value, &mopts, M_REFLINK);
- break;
- default:
- unknown('m', value);
- }
- }
+ /* temp don't break code */
+ platform_uuid_copy(&uuid, &cli.uuid);
+ /* end temp don't break code */
break;
case 'n':
p = optarg;