On Wed, Dec 07, 2016 at 02:27:13PM +0100, Jan Tulak wrote: > Checks are modified to work with cross-section conflicts (data, metada, log, ...). > > Signed-off-by: Jan Tulak <jtulak@xxxxxxxxxx> Reviewed-by: Bill O'Donnell <billodo@xxxxxxxxxx> > --- > mkfs/xfs_mkfs.c | 43 ++++++++++++++++++++++++++++++++++--------- > 1 file changed, 34 insertions(+), 9 deletions(-) > > diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c > index 3bb9f09..e46b55c 100644 > --- a/mkfs/xfs_mkfs.c > +++ b/mkfs/xfs_mkfs.c > @@ -744,6 +744,9 @@ struct opt_params { > }, > }; > > +static void conflict_struct(struct opt_params *opt, struct subopt_param *subopt, > + struct subopt_conflict *conflict); > + > #define TERABYTES(count, blog) ((__uint64_t)(count) << (40 - (blog))) > #define GIGABYTES(count, blog) ((__uint64_t)(count) << (30 - (blog))) > #define MEGABYTES(count, blog) ((__uint64_t)(count) << (20 - (blog))) > @@ -1351,10 +1354,9 @@ check_opt( > break; > if (conflict_opt.test_values) > break; > - if (opt->subopt_params[conflict_opt.subopt].seen || > - opt->subopt_params[conflict_opt.subopt].str_seen) { > - conflict(opt->name, (char **)opt->subopts, > - conflict_opt.subopt, index); > + if (opts[conflict_opt.opt].subopt_params[conflict_opt.subopt].seen || > + opts[conflict_opt.opt].subopt_params[conflict_opt.subopt].str_seen) { > + conflict_struct(opt, sp, &conflict_opt); > } > } > } > @@ -1379,13 +1381,12 @@ check_opt_value( > break; > if (!conflict_opt.test_values) > break; > - if ((opt->subopt_params[conflict_opt.subopt].seen || > - opt->subopt_params[conflict_opt.subopt].str_seen) && > - opt->subopt_params[conflict_opt.subopt].value > + if ((opts[conflict_opt.opt].subopt_params[conflict_opt.subopt].seen || > + opts[conflict_opt.opt].subopt_params[conflict_opt.subopt].str_seen) && > + opts[conflict_opt.opt].subopt_params[conflict_opt.subopt].value > == conflict_opt.invalid_value && > value == conflict_opt.at_value) { > - conflict(opt->name, (char **)opt->subopts, > - conflict_opt.subopt, index); > + conflict_struct(opt, sp, &conflict_opt); > } > } > } > @@ -3586,12 +3587,36 @@ conflict( > char *tab[], > int oldidx, > int newidx) > + > { > fprintf(stderr, _("Cannot specify both -%c %s and -%c %s\n"), > opt, tab[oldidx], opt, tab[newidx]); > usage(); > } > > +static void > +conflict_struct( > + struct opt_params *opt, > + struct subopt_param *subopt, > + struct subopt_conflict *conflict) > +{ > + if(conflict->message) { > + fprintf(stderr, _("Cannot specify both -%c %s and -%c %s: %s\n"), > + opt->name, > + opt->subopts[subopt->index], > + opts[conflict->opt].name, > + opts[conflict->opt].subopts[conflict->subopt], > + _(conflict->message)); > + } else { > + fprintf(stderr, _("Cannot specify both -%c %s and -%c %s\n"), > + opt->name, > + opt->subopts[subopt->index], > + opts[conflict->opt].name, > + opts[conflict->opt].subopts[conflict->subopt]); > + } > + usage(); > +} > + > > static void > illegal( > -- > 2.8.1 > > -- > 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 -- 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