Re: [RFC] Re: Convert 'git blame' to parse_options()
- From
Pierre Habouzit <madcoder@debian.org>
- Date
- Jun 23, 2008, 21:28 UTC
- Message-ID
- <20080623212855.GE13395@artemis.madism.org>
- In-Reply-To
- <7vprq7hmkx.fsf@gitster.siamese.dyndns.org>
On Mon, Jun 23, 2008 at 09:23:58PM +0000, Junio C Hamano wrote:
Show 41 quoted lines
> Pierre Habouzit <madcoder@debian.org> writes:
>
> > With that, you write parsers this way:
> >
> > {
> > struct parse_opt_ctx_t ctx;
> >
> > parse_options_start(&ctx, argc, argv, 0);
> >
> > for (;;) {
> > const char *arg;
> >
> > switch (parse_options_step(&ctx, options, usagestr)) {
> > case PARSE_OPT_HELP:
> > /* dump your help here, the one for options/usagestr is already dumped */
> > exit(129);
> > case PARSE_OPT_DONE:
> > goto done;
> > }
> >
> > arg = *ctx->argv++;
> > ctx->argc--;
> >
> > if (strcmp(arg, "-")) {
> > /* you're on baby ! */
> > } else if ....
> > } else {
> > error("unknown option %s", arg);
> > parse_options_usage(options, usagestr);
> > /* dump your help here */
> > exit(129);
> > }
> > }
> >
> > done:
> > argc = parse_options_end(&ctx);
> > }
>
> Nice. I have started doing the same (insignificant details are different;
> e.g. I used "positive is unknown" convention instead ) and then the
> solution is sitting in my mbox ;-)Well it's still rough on the edges, totally untested (I didn't bother to run the testsuite), but I wanted some feedback before I cook this to something nicer.
-- ·O· Pierre Habouzit ··O madcoder@debian.org OOO http://www.madism.org