]> git.ipfire.org Git - thirdparty/git.git/commitdiff
config: extract function to parse config pairs
authorPatrick Steinhardt <ps@pks.im>
Tue, 12 Jan 2021 12:26:54 +0000 (13:26 +0100)
committerJunio C Hamano <gitster@pobox.com>
Tue, 12 Jan 2021 20:03:18 +0000 (12:03 -0800)
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>
config.c

index ed89c557bd0f1ba6900e58325411cf70e5f39af0..4452277d1a31e2d4400a01d201302889e71bc431 100644 (file)
--- a/config.c
+++ b/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);
 }
 
+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;
 }