From: Rob Landley Date: Fri, 15 Aug 2014 23:53:01 +0000 (-0500) Subject: Fix bug reported by Ashwini Sharma: [-abc] syntax to switch off a command forget X-Git-Tag: 0.5.0~80 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=845c8da42a505835c67e2dff98353a7205e555a5;p=platform%2Fupstream%2Ftoybox.git Fix bug reported by Ashwini Sharma: [-abc] syntax to switch off a command forget s _all_ saved command line arguments in GLOBALS(), not just for the command bein g dropped. --- diff --git a/lib/args.c b/lib/args.c index 16eb48a..d0b483a 100644 --- a/lib/args.c +++ b/lib/args.c @@ -138,15 +138,18 @@ static int gotflag(struct getoptflagstate *gof, struct opts *opt) error_exit("Unknown option %s", gof->arg); } - // Set flags + // Might enabling this switch off something else? if (toys.optflags & opt->dex[0]) { struct opts *clr; unsigned i = 1; + // Forget saved argument for flag we switch back off for (clr=gof->opts, i=1; clr; clr = clr->next, i<<=1) - if (clr->arg && (i & toys.optflags)) *clr->arg = 0; + if (clr->arg && (i & toys.optflags & opt->dex[0])) *clr->arg = 0; toys.optflags &= ~opt->dex[0]; } + + // Set flags toys.optflags |= opt->dex[1]; gof->excludes |= opt->dex[2]; if (opt->flags&2) gof->stopearly=2;