@@ -728,6 +728,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)))
@@ -1329,10 +1332,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);
}
}
}
@@ -1357,13 +1359,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);
}
}
}
@@ -3430,12 +3431,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(
Checks are modified to work with cross-section conflicts (data, metada, log, ...). Signed-off-by: Jan Tulak <jtulak@redhat.com> --- mkfs/xfs_mkfs.c | 43 ++++++++++++++++++++++++++++++++++--------- 1 file changed, 34 insertions(+), 9 deletions(-)