Re: [RFC] Re: Convert 'git blame' to parse_options()

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Pierre Habouzit
Date: Monday, June 23, 2008 - 2:09 pm

On Mon, Jun 23, 2008 at 07:16:17PM +0000, Linus Torvalds wrote:

  Let's see if I can catch it elegantly.

  Following is a series split into incremental patches to migrate the
parse_options API to an incremental one. Only the last step provides a
functional incremental API.

  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 =3D *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 =3D parse_options_end(&ctx);
}


It's slightly more involved than what Linus handwaved, but I believe
it's usable this way.

--=20
=C2=B7O=C2=B7  Pierre Habouzit
=C2=B7=C2=B7O                                                madcoder@debia=
n.org
OOO                                                http://www.madism.org
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
Convert 'git blame' to parse_options(), Linus Torvalds, (Sun Jun 22, 10:15 pm)
Re: Convert 'git blame' to parse_options(), Junio C Hamano, (Sun Jun 22, 11:35 pm)
[RFC] Re: Convert 'git blame' to parse_options(), Pierre Habouzit, (Mon Jun 23, 1:22 am)
Re: [RFC] Re: Convert 'git blame' to parse_options(), Johannes Schindelin, (Mon Jun 23, 5:26 am)
Re: Convert 'git blame' to parse_options(), Johannes Schindelin, (Mon Jun 23, 5:28 am)
Re: [RFC] Re: Convert 'git blame' to parse_options(), Pierre Habouzit, (Mon Jun 23, 8:53 am)
Re: [RFC] Re: Convert 'git blame' to parse_options(), Linus Torvalds, (Mon Jun 23, 9:11 am)
Re: [RFC] Re: Convert 'git blame' to parse_options(), Linus Torvalds, (Mon Jun 23, 9:25 am)
Re: [RFC] Re: Convert 'git blame' to parse_options(), Johannes Schindelin, (Mon Jun 23, 9:25 am)
Re: [RFC] Re: Convert 'git blame' to parse_options(), Johannes Schindelin, (Mon Jun 23, 10:04 am)
Re: [RFC] Re: Convert 'git blame' to parse_options(), Linus Torvalds, (Mon Jun 23, 10:06 am)
Re: [RFC] Re: Convert 'git blame' to parse_options(), Jeff King, (Mon Jun 23, 10:15 am)
Re: [RFC] Re: Convert 'git blame' to parse_options(), Linus Torvalds, (Mon Jun 23, 10:21 am)
Re: [RFC] Re: Convert 'git blame' to parse_options(), Jeff King, (Mon Jun 23, 10:26 am)
Re: [RFC] Re: Convert 'git blame' to parse_options(), Linus Torvalds, (Mon Jun 23, 10:32 am)
Re: [RFC] Re: Convert 'git blame' to parse_options(), Jeff King, (Mon Jun 23, 11:15 am)
Re: [RFC] Re: Convert 'git blame' to parse_options(), Linus Torvalds, (Mon Jun 23, 11:20 am)
Re: [RFC] Re: Convert 'git blame' to parse_options(), Jeff King, (Mon Jun 23, 11:33 am)
Re: [RFC] Re: Convert 'git blame' to parse_options(), Linus Torvalds, (Mon Jun 23, 11:36 am)
Re: [RFC] Re: Convert 'git blame' to parse_options(), Johannes Schindelin, (Mon Jun 23, 11:39 am)
Re: [RFC] Re: Convert 'git blame' to parse_options(), Johannes Schindelin, (Mon Jun 23, 11:41 am)
Re: [RFC] Re: Convert 'git blame' to parse_options(), Linus Torvalds, (Mon Jun 23, 11:47 am)
Re: [RFC] Re: Convert 'git blame' to parse_options(), Linus Torvalds, (Mon Jun 23, 12:16 pm)
Re: [RFC] Re: Convert 'git blame' to parse_options(), Pierre Habouzit, (Mon Jun 23, 12:24 pm)
Re: [RFC] Re: Convert 'git blame' to parse_options(), Jeff King, (Mon Jun 23, 12:53 pm)
Re: [RFC] Re: Convert 'git blame' to parse_options(), Pierre Habouzit, (Mon Jun 23, 1:04 pm)
Re: [RFC] Re: Convert 'git blame' to parse_options(), Linus Torvalds, (Mon Jun 23, 1:12 pm)
Re: [RFC] Re: Convert 'git blame' to parse_options(), Pierre Habouzit, (Mon Jun 23, 2:09 pm)
[PATCH] parse-opt: have parse_options_{start,end}., Pierre Habouzit, (Mon Jun 23, 2:11 pm)
[PATCH] parse-opt: Export a non NORETURN usage dumper., Pierre Habouzit, (Mon Jun 23, 2:11 pm)
[PATCH] parse-opt: create parse_options_step., Pierre Habouzit, (Mon Jun 23, 2:11 pm)
Re: [RFC] Re: Convert 'git blame' to parse_options(), Pierre Habouzit, (Mon Jun 23, 2:23 pm)
Re: [RFC] Re: Convert 'git blame' to parse_options(), Junio C Hamano, (Mon Jun 23, 2:23 pm)
Re: [RFC] Re: Convert 'git blame' to parse_options(), Linus Torvalds, (Mon Jun 23, 2:26 pm)
Re: [RFC] Re: Convert 'git blame' to parse_options(), Pierre Habouzit, (Mon Jun 23, 2:28 pm)
Re: [RFC] Re: Convert 'git blame' to parse_options(), Linus Torvalds, (Mon Jun 23, 2:41 pm)
Re: [RFC] Re: Convert 'git blame' to parse_options(), Pierre Habouzit, (Mon Jun 23, 2:47 pm)
Re: [RFC] Re: Convert 'git blame' to parse_options(), Junio C Hamano, (Mon Jun 23, 3:11 pm)
Re: [RFC] Re: Convert 'git blame' to parse_options(), Pierre Habouzit, (Mon Jun 23, 3:24 pm)
Re: [RFC] Re: Convert 'git blame' to parse_options(), Pierre Habouzit, (Mon Jun 23, 3:36 pm)
Re: [RFC] Re: Convert 'git blame' to parse_options(), Junio C Hamano, (Mon Jun 23, 5:30 pm)
Re: [RFC] Re: Convert 'git blame' to parse_options(), Jeff King, (Mon Jun 23, 10:35 pm)
Re: [RFC] Re: Convert 'git blame' to parse_options(), Pierre Habouzit, (Tue Jun 24, 1:24 am)
Making parse-opt incremental, reworked series, Pierre Habouzit, (Tue Jun 24, 2:12 am)
[PATCH 1/7] parse-opt: have parse_options_{start,end}., Pierre Habouzit, (Tue Jun 24, 2:12 am)
[PATCH 2/7] parse-opt: Export a non NORETURN usage dumper., Pierre Habouzit, (Tue Jun 24, 2:12 am)
[PATCH 3/7] parse-opt: create parse_options_step., Pierre Habouzit, (Tue Jun 24, 2:12 am)
[PATCH 7/7] Migrate git-blame to parse-option partially., Pierre Habouzit, (Tue Jun 24, 2:12 am)
Re: [RFC] Re: Convert 'git blame' to parse_options(), Linus Torvalds, (Tue Jun 24, 9:59 am)
Re: [RFC] Re: Convert 'git blame' to parse_options(), Linus Torvalds, (Tue Jun 24, 10:05 am)
Re: [RFC] Re: Convert 'git blame' to parse_options(), Johannes Schindelin, (Tue Jun 24, 10:13 am)
Re: [RFC] Re: Convert 'git blame' to parse_options(), Jeff King, (Tue Jun 24, 10:34 am)
Re: [RFC] Re: Convert 'git blame' to parse_options(), Linus Torvalds, (Tue Jun 24, 10:44 am)
Re: [PATCH 5/7] parse-opt: fake short strings for callers ..., Pierre Habouzit, (Tue Jun 24, 12:26 pm)
Re: [RFC] Re: Convert 'git blame' to parse_options(), Pierre Habouzit, (Tue Jun 24, 12:30 pm)
Re: [RFC] Re: Convert 'git blame' to parse_options(), Pierre Habouzit, (Tue Jun 24, 12:43 pm)
Re: [RFC] Re: Convert 'git blame' to parse_options(), Jeff King, (Tue Jun 24, 12:46 pm)
Re: [RFC] Re: Convert 'git blame' to parse_options(), Johannes Sixt, (Tue Jun 24, 11:09 pm)
Re: [PATCH 5/7] parse-opt: fake short strings for callers ..., Andreas Ericsson, (Wed Jun 25, 8:07 am)