config: extract function to parse config pairs

The function `git_config_parse_parameter` is responsible for parsing a
`foo.bar=baz`-formatted configuration key, sanitizing the key and then
processing it via the given callback function. Given that we're about to
add a second user which is going to process keys which already has keys
and values separated, this commit extracts a function
`config_parse_pair` which only does the sanitization and processing
part as a preparatory step.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Patrick Steinhardt 2021-01-12 13:26:54 +01:00 committed by Junio C Hamano
parent 13c44953fb
commit b342ae61b3

View File

@ -462,11 +462,26 @@ int git_config_key_is_valid(const char *key)
return !git_config_parse_key_1(key, NULL, NULL, 1);
}
static int config_parse_pair(const char *key, const char *value,
config_fn_t fn, void *data)
{
char *canonical_name;
int ret;
if (!strlen(key))
return error(_("empty config key"));
if (git_config_parse_key(key, &canonical_name, NULL))
return -1;
ret = (fn(canonical_name, value, data) < 0) ? -1 : 0;
free(canonical_name);
return ret;
}
int git_config_parse_parameter(const char *text,
config_fn_t fn, void *data)
{
const char *value;
char *canonical_name;
struct strbuf **pair;
int ret;
@ -487,12 +502,7 @@ int git_config_parse_parameter(const char *text,
return error(_("bogus config parameter: %s"), text);
}
if (git_config_parse_key(pair[0]->buf, &canonical_name, NULL)) {
ret = -1;
} else {
ret = (fn(canonical_name, value, data) < 0) ? -1 : 0;
free(canonical_name);
}
ret = config_parse_pair(pair[0]->buf, value, fn, data);
strbuf_list_free(pair);
return ret;
}