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

Re: [PATCH v3 6/6] notes-util.c: replace `git_config()` with `git_config_get_value()`

From
Jeff King <peff@peff.net>
Date
Jul 22, 2014, 11:23 UTC
Message-ID
<20140722112311.GB386@peff.net>
In-Reply-To
<1405941145-12120-7-git-send-email-tanayabh@gmail.com>
On Mon, Jul 21, 2014 at 04:12:25AM -0700, Tanay Abhra wrote:
Show 13 quoted lines
> -static int notes_rewrite_config(const char *k, const char *v, void *cb)
> +static void notes_rewrite_config(struct notes_rewrite_cfg *c)
>  {
> -	struct notes_rewrite_cfg *c = cb;
> -	if (starts_with(k, "notes.rewrite.") && !strcmp(k+14, c->cmd)) {
> -		c->enabled = git_config_bool(k, v);
> -		return 0;
> -	} else if (!c->mode_from_env && !strcmp(k, "notes.rewritemode")) {
> +	const char *v;
> +	struct strbuf key = STRBUF_INIT;
> +	strbuf_addf(&key, "notes.rewrite.%s", c->cmd);
> +	git_config_get_bool(key.buf, &c->enabled);
> +	strbuf_release(&key);

I wonder if it is worth teaching the accessors to form such strings themselves, like:

  void git_config_get_bool(int *out, const char *fmt, ...);
so you could do:
  git_config_get_bool(&c->enabled, "notes.rewrite.%s", c->cmd);

The "normal" cases where we do not need any run-time modification could be used as-is (I swapped the parameter order above, but you would not have to do so). But I guess that would require us doing extra work in the common "normal" case to print the string into a buffer, even though it does not have any expansions (or to do a strchr, I guess, to look for "%"). It's probably not worth it considering how few config keys have computed values like this.

-Peff
Previous: Tanay AbhraNext: Tanay Abhra
Message 15 of 27 in “git_config callers rewritten with the new config cache API”
  1. 0/6 git_config callers rewritten with the new config cache APITanay Abhra, Jul 21, 2014
  2. 1/6 alias.c: replace `git_config()` with `git_config_get_string()`Tanay Abhra, Jul 21, 2014
  3. Matthieu MoyJul 21, 2014
  4. Ramsay JonesJul 21, 2014
  5. Samuel BronsonJul 31, 2014
  6. 2/6 branch.c: replace `git_config()` with `git_config_get_string()`Tanay Abhra, Jul 21, 2014
  7. Junio C HamanoJul 21, 2014
  8. Matthieu MoyJul 21, 2014
  9. Tanay AbhraJul 21, 2014
  10. 3/6 imap-send.c: replace `git_config()` with `git_config_get_*()` familyTanay Abhra, Jul 21, 2014
  11. Junio C HamanoJul 21, 2014
  12. 4/6 notes.c: replace `git_config()` with `git_config_get_value()`Tanay Abhra, Jul 21, 2014
  13. 5/6 pager.c: replace `git_config()` with `git_config_get_value()`Tanay Abhra, Jul 21, 2014
  14. 6/6 notes-util.c: replace `git_config()` with `git_config_get_value()`Tanay Abhra, Jul 21, 2014
  15. Jeff KingJul 22, 2014
  16. rewrite `git_default_config()` using config-set API functionsTanay Abhra, Jul 21, 2014
  17. Matthieu MoyJul 21, 2014
  18. Tanay AbhraJul 21, 2014
  19. Matthieu MoyJul 21, 2014
  20. Junio C HamanoJul 21, 2014
  21. Matthieu MoyJul 22, 2014
  22. Ramsay JonesJul 21, 2014
  23. Matthieu MoyJul 21, 2014
  24. Tanay AbhraJul 21, 2014
  25. Matthieu MoyJul 21, 2014
  26. Tanay AbhraJul 21, 2014
  27. Matthieu MoyJul 21, 2014

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.