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>maint
parent
13c44953fb
commit
b342ae61b3
24
config.c
24
config.c
|
@ -462,11 +462,26 @@ int git_config_key_is_valid(const char *key)
|
||||||
return !git_config_parse_key_1(key, NULL, NULL, 1);
|
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,
|
int git_config_parse_parameter(const char *text,
|
||||||
config_fn_t fn, void *data)
|
config_fn_t fn, void *data)
|
||||||
{
|
{
|
||||||
const char *value;
|
const char *value;
|
||||||
char *canonical_name;
|
|
||||||
struct strbuf **pair;
|
struct strbuf **pair;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
@ -487,12 +502,7 @@ int git_config_parse_parameter(const char *text,
|
||||||
return error(_("bogus config parameter: %s"), text);
|
return error(_("bogus config parameter: %s"), text);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (git_config_parse_key(pair[0]->buf, &canonical_name, NULL)) {
|
ret = config_parse_pair(pair[0]->buf, value, fn, data);
|
||||||
ret = -1;
|
|
||||||
} else {
|
|
||||||
ret = (fn(canonical_name, value, data) < 0) ? -1 : 0;
|
|
||||||
free(canonical_name);
|
|
||||||
}
|
|
||||||
strbuf_list_free(pair);
|
strbuf_list_free(pair);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue