On Mon, Jun 23, 2008 at 09:23:58PM +0000, Junio C Hamano wrote: > Pierre Habouzit <madcoder@xxxxxxxxxx> 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@xxxxxxxxxx OOO http://www.madism.org
Attachment:
pgp2FufTEb8Re.pgp
Description: PGP signature