aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/args.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/lib/args.c b/lib/args.c
index e4b774b4..67c7788a 100644
--- a/lib/args.c
+++ b/lib/args.c
@@ -132,8 +132,10 @@ static int gotflag(struct getoptflagstate *gof, struct opts *opt)
struct opts *bad;
unsigned i = 1;
- for (bad=gof->opts; opt == bad || !(gof->excludes & i); bad = bad->next)
- i<<=1;
+ for (bad=gof->opts, i=1; ;bad = bad->next, i<<=1) {
+ if (opt == bad || !(i & toys.optflags)) continue;
+ if (toys.optflags & bad->dex[2]) break;
+ }
error_exit("No '%c' with '%c'", opt->c, bad->c);
}