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

Re: [PATCH v9 5/8] config: add `git_die_config()` to the config-set API

From
Junio C Hamano <gitster@pobox.com>
Date
Aug 7, 2014, 18:55 UTC
Message-ID
<xmqqd2ccku3m.fsf@gitster.dls.corp.google.com>
In-Reply-To
<1407412759-13833-6-git-send-email-tanayabh@gmail.com>
Tanay Abhra <tanayabh@gmail.com> writes:
Show 13 quoted lines
> diff --git a/Documentation/technical/api-config.txt b/Documentation/technical/api-config.txt
> index 21f280c..0d8b99b 100644
> --- a/Documentation/technical/api-config.txt
> +++ b/Documentation/technical/api-config.txt
> @@ -155,6 +155,19 @@ as well as retrieval for the queried variable, including:
>  	Similar to `git_config_get_string`, but expands `~` or `~user` into
>  	the user's home directory when found at the beginning of the path.
>  
> +`git_die_config(const char *key, const char *err, ...)`::
> +
> +	First prints the error message specified by the caller in `err` and then
> +	dies printing the line number and the file name of the highest priority
> +	value for the configuration variable `key`.

Reviewed with a wider context, I notice that this entry alone lacks the return type. I am assuming that this is just an oversight, and adding 'void ' in front of the filename to match the next entry is simple enough.

Show 7 quoted lines
> +`void git_die_config_linenr(const char *key, const char *filename, int linenr)`::
> + ...
> +extern NORETURN void git_die_config(const char *key, const char *err, ...) __attribute__((format(printf, 2, 3)));
> ...
> +NORETURN __attribute__((format(printf, 2, 3)))
> +void git_die_config(const char *key, const char *err, ...)
> +{

My first reaction was that it might make the compiler unhappy to declare that the "err" is a printf-like format string and then to allow some callers to pass NULL to the function. My build however does not seem to complain, so perhaps this is OK.

Show 15 quoted lines
> +	const struct string_list *values;
> +	struct key_value_info *kv_info;
> +
> +	if (err) {
> +		va_list params;
> +		va_start(params, err);
> +		vreportf("error: ", err, params);
> +		va_end(params);
> +	}
> +	values = git_config_get_value_multi(key);
> +	kv_info = values->items[values->nr - 1].util;
> +	git_die_config_linenr(key, kv_info->filename, kv_info->linenr);
>  }
>  
>  /*
Previous: Tanay AbhraNext: Tanay Abhra
Message 11 of 16 in “Rewrite `git_config()` using config-set API”
  1. 0/8 Rewrite `git_config()` using config-set APITanay Abhra, Aug 7, 2014
  2. 1/8 config.c: mark error and warnings strings for translationTanay Abhra, Aug 7, 2014
  3. 2/8 config.c: fix accuracy of line number in errorsTanay Abhra, Aug 7, 2014
  4. 3/8 add line number and file name info to `config_set`Tanay Abhra, Aug 7, 2014
  5. Ramsay JonesAug 7, 2014
  6. Matthieu MoyAug 7, 2014
  7. Junio C HamanoAug 7, 2014
  8. Matthieu MoyAug 7, 2014
  9. 4/8 change `git_config()` return value to voidTanay Abhra, Aug 7, 2014
  10. 5/8 config: add `git_die_config()` to the config-set APITanay Abhra, Aug 7, 2014
  11. Junio C HamanoAug 7, 2014
  12. Tanay AbhraAug 8, 2014
  13. 6/8 rewrite git_config() to use the config-set APITanay Abhra, Aug 7, 2014
  14. 7/8 add a test for semantic errors in config filesTanay Abhra, Aug 7, 2014
  15. 8/8 add tests for `git_config_get_string_const()`Tanay Abhra, Aug 7, 2014
  16. Matthieu MoyAug 7, 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.