From: Stephen Boyd Date: Thu, 21 May 2009 21:27:25 GMT Subject: Re: [PATCHv2 1/2] parse-options: add PARSE_OPT_LITERAL_ARGHELP for complicated argh's Message-ID: <4A15C73D.3010301@gmail.com> In-Reply-To: <780e0a6b0905211203g3223fe3fp5eed27ebf244394a@mail.gmail.com> Stephen Boyd wrote: > On Thu, May 21, 2009 at 9:51 AM, René Scharfe > wrote: >> Junio C Hamano schrieb: >>> Hmmm, why does this break t0040 (I am queuing this on top of 5acb3e5)? >> Probably because it changes this: >> >>     pos += fprintf(...); >> >> into this (simplified, usage_argh() expanded): >> >>     pos += pos + fprintf(...); >> >> usage_argh() doesn't need the parameter pos. >> >> René >> > > Woops. I thought I ran the tests but I guess I didn't. This is the > correct fix, thanks. And here's the patch you can squash in. diff --git a/parse-options.c b/parse-options.c index 2b880b1..e8955be 100644 --- a/parse-options.c +++ b/parse-options.c @@ -361,7 +361,7 @@ int parse_options(int argc, const char **argv, const struct option *options, return parse_options_end(&ctx); } -static int usage_argh(const struct option *opts, int pos) +static int usage_argh(const struct option *opts) { const char *s; int literal = opts->flags & PARSE_OPT_LITERAL_ARGHELP; @@ -372,7 +372,7 @@ static int usage_argh(const struct option *opts, int pos) s = literal ? "[%s]" : "[<%s>]"; else s = literal ? " %s" : " <%s>"; - return pos + fprintf(stderr, s, opts->argh); + return fprintf(stderr, s, opts->argh); } #define USAGE_OPTS_WIDTH 24 @@ -436,7 +436,7 @@ int usage_with_options_internal(const char * const *usagestr, /* FALLTHROUGH */ case OPTION_STRING: if (opts->argh) - pos += usage_argh(opts, pos); + pos += usage_argh(opts); else { if (opts->flags & PARSE_OPT_OPTARG) if (opts->long_name)