git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 02/12] parse-options: add two helper functions

From
Junio C Hamano <gitster@pobox.com>
Date
Jun 27, 2010, 18:22 UTC
Message-ID
<7vaaqggwsh.fsf@alter.siamese.dyndns.org>
In-Reply-To
<1277558857-23103-3-git-send-email-struggleyb.nku@gmail.com>
Show 22 quoted lines
> diff --git a/parse-options.c b/parse-options.c
> index cbb49d3..013dbdb 100644
> --- a/parse-options.c
> +++ b/parse-options.c
> @@ -439,6 +439,27 @@ unknown:
>  	return PARSE_OPT_DONE;
>  }
>  
> +const char *parse_options_current(struct parse_opt_ctx_t *ctx)
> +{
> +	return ctx->argv[0];
> +}
> +
> +int parse_options_next(struct parse_opt_ctx_t *ctx, int retain)
> +{
> +	if (ctx->argc <= 0)
> +		return -1;
> +
> +	if (retain == 1)
> +	{
> +		ctx->out[ctx->cpidx++] = ctx->argv[0];
> +	}

Style. Either drop the unnecessary curly pair, or open the curly at the end of the line that has the closing parenthesis of "if" condition.

These two functions makes sense. You could then use parse-options-step to let the machinery mostly be driven by the usual table lookup, and when (and only when) the machinery says "I don't know what this is", you can check "current" to see what it is (e.g. it may be "-L"), handle it yourself, and if you need to do something different (e.g. eat the <path> that immedately follows "-L"), you can use "next" to skip it without ever showing that to the table based parseopt machinery.

I however wonder why you would need two passes if you have these two APIs into parse-options machinery, though...

Previous: Bo YangNext: Bo Yang
Message 4 of 19 in “The first version of line level log browser”
  1. 00/12 The first version of line level log browserBo Yang, Jun 26, 2010
  2. 01/12 parse-options: stop when encounter a non-optionBo Yang, Jun 26, 2010
  3. 02/12 parse-options: add two helper functionsBo Yang, Jun 26, 2010
  4. Junio C HamanoJun 27, 2010
  5. Bo YangJun 30, 2010
  6. 03/12 add the basic data structure for line level historyBo Yang, Jun 26, 2010
  7. Junio C HamanoJun 27, 2010
  8. Bo YangJun 30, 2010
  9. 04/12 parse the -L optionsBo Yang, Jun 26, 2010
  10. 05/12 export three functions from diff.cBo Yang, Jun 26, 2010
  11. 06/12 add range clone functionsBo Yang, Jun 26, 2010
  12. Junio C HamanoJun 27, 2010
  13. 07/12 map/take range to parentBo Yang, Jun 26, 2010
  14. 08/12 print the line logBo Yang, Jun 26, 2010
  15. Ramkumar RamachandraJun 27, 2010
  16. 09/12 map/print ranges along traversing the history topologicallyBo Yang, Jun 26, 2010
  17. 10/12 add --always-print optionBo Yang, Jun 26, 2010
  18. 11/12 add two test casesBo Yang, Jun 26, 2010
  19. 12/12 some document updateBo Yang, Jun 26, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.