]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
mkfs: factor meta subopts parser
authorDave Chinner <dchinner@redhat.com>
Wed, 6 Dec 2017 23:14:27 +0000 (17:14 -0600)
committerEric Sandeen <sandeen@redhat.com>
Wed, 6 Dec 2017 23:14:27 +0000 (17:14 -0600)
Signed-Off-By: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
mkfs/xfs_mkfs.c

index a4f38048803317efa5e939af07be9dcd080085b2..87e7a2da26bf36fc964166410c7e08a2251a9f66 100644 (file)
@@ -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;