From: Nicolas Williams Date: Sat, 21 Jun 2014 23:01:00 +0000 (-0500) Subject: Fix option stacking bug X-Git-Tag: jq-1.5rc1~164 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=233e32208ca96b406a6de3c620f1eb9f83806835;p=jq Fix option stacking bug --- diff --git a/main.c b/main.c index d45aa68..468f12a 100644 --- a/main.c +++ b/main.c @@ -57,10 +57,15 @@ static int isoption(const char* text, char shortopt, const char* longopt, size_t if (text[0] != '-' || text[1] == '-') *short_opts = 0; if (text[0] != '-') return 0; + + // check long option if (text[1] == '-' && !strcmp(text+2, longopt)) return 1; + else if (text[1] == '-') return 0; + + // must be short option; check it and... if (!shortopt) return 0; if (strchr(text, shortopt) != NULL) { - (*short_opts)++; + (*short_opts)++; // ...count it (for option stacking) return 1; } return 0; @@ -293,6 +298,7 @@ int main(int argc, char* argv[]) { ret = 0; goto out; } + // check for unknown options... if this argument was a short option if (strlen(argv[i]) != short_opts + 1) { fprintf(stderr, "%s: Unknown option %s\n", progname, argv[i]); die();