From: Dave Chinner <dchinner@xxxxxxxxxx> Signed-Off-By: Dave Chinner <dchinner@xxxxxxxxxx> --- mkfs/xfs_mkfs.c | 68 +++++++++++++++++++++++++-------------------------------- 1 file changed, 30 insertions(+), 38 deletions(-) diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c index 7b967ffe6893..e3ee1f1c87fc 100644 --- a/mkfs/xfs_mkfs.c +++ b/mkfs/xfs_mkfs.c @@ -1693,6 +1693,28 @@ naming_opts_parser( char *value, struct cli_params *cli) { + switch (subopt) { + case N_LOG: + cli->dirblocklog = getnum(value, opts, N_LOG); + break; + case N_SIZE: + cli->dirblocksize = getstr(value, opts, N_SIZE); + break; + case N_VERSION: + value = getstr(value, &nopts, N_VERSION); + if (!strcasecmp(value, "ci")) { + /* ASCII CI mode */ + cli->sb_feat.nci = true; + } else { + cli->sb_feat.dir_version = getnum(value, opts, N_VERSION); + } + break; + case N_FTYPE: + cli->sb_feat.dirftype = getnum(value, opts, N_FTYPE); + break; + default: + return -EINVAL; + } return 0; } @@ -2015,45 +2037,15 @@ main( /* end temp don't break code */ break; case 'n': - p = optarg; - while (*p != '\0') { - char **subopts = (char **)nopts.subopts; - char *value; + parse_subopts(c, optarg, &cli); - switch (getsubopt(&p, subopts, &value)) { - case N_LOG: - dirblocklog = getnum(value, &nopts, - N_LOG); - dirblocksize = 1 << dirblocklog; - nlflag = 1; - break; - case N_SIZE: - dirblocksize = getnum(value, &nopts, - N_SIZE); - dirblocklog = - libxfs_highbit32(dirblocksize); - nsflag = 1; - break; - case N_VERSION: - value = getstr(value, &nopts, N_VERSION); - if (!strcasecmp(value, "ci")) { - /* ASCII CI mode */ - sb_feat.nci = true; - } else { - sb_feat.dir_version = - getnum(value, &nopts, - N_VERSION); - } - nvflag = 1; - break; - case N_FTYPE: - sb_feat.dirftype = getnum(value, &nopts, - N_FTYPE); - break; - default: - unknown('n', value); - } - } + /* temp don't break code */ + if ((nsflag = cli_opt_set(&nopts, N_SIZE))) + dirblocksize = getnum(cli.dirblocksize, &nopts, N_SIZE); + dirblocklog = cli.dirblocklog; + + nlflag = cli_opt_set(&nopts, N_LOG); + /* end temp don't break code */ break; case 'N': Nflag = 1; -- 2.13.3 -- To unsubscribe from this list: send the line "unsubscribe linux-xfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html