From 233e32208ca96b406a6de3c620f1eb9f83806835 Mon Sep 17 00:00:00 2001 From: Nicolas Williams Date: Sat, 21 Jun 2014 18:01:00 -0500 Subject: [PATCH] Fix option stacking bug --- main.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/main.c b/main.c index d45aa68e..468f12ae 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();