This rewrites parse_config to distinguish between configs specific to one submodule and configs which apply generically to all submodules. We do not have generic submodule configs yet, but the next patch will introduce "submodule.jobs". Signed-off-by: Stefan Beller <sbeller@xxxxxxxxxx> --- submodule-config.c | 41 ++++++++++++++++++++++++++++++++--------- 1 file changed, 32 insertions(+), 9 deletions(-) diff --git a/submodule-config.c b/submodule-config.c index b826841..29e21b2 100644 --- a/submodule-config.c +++ b/submodule-config.c @@ -234,17 +234,22 @@ struct parse_config_parameter { int overwrite; }; -static int parse_config(const char *var, const char *value, void *data) +static int parse_generic_submodule_config(const char *key, + const char *var, + const char *value, + struct parse_config_parameter *me) { - struct parse_config_parameter *me = data; - struct submodule *submodule; - int subsection_len, ret = 0; - const char *subsection, *key; - - if (parse_config_key(var, "submodule", &subsection, - &subsection_len, &key) < 0 || !subsection_len) - return 0; + return 0; +} +static int parse_specific_submodule_config(const char *subsection, int subsection_len, + const char *key, + const char *var, + const char *value, + struct parse_config_parameter *me) +{ + int ret = 0; + struct submodule *submodule; submodule = lookup_or_create_by_name(me->cache, me->gitmodules_sha1, subsection, subsection_len); @@ -314,6 +319,24 @@ static int parse_config(const char *var, const char *value, void *data) return ret; } +static int parse_config(const char *var, const char *value, void *data) +{ + struct parse_config_parameter *me = data; + int subsection_len; + const char *subsection, *key; + + if (parse_config_key(var, "submodule", &subsection, + &subsection_len, &key) < 0) + return 0; + + if (!subsection_len) + return parse_generic_submodule_config(key, var, value, me); + else + return parse_specific_submodule_config(subsection, + subsection_len, key, + var, value, me); +} + static int gitmodule_sha1_from_commit(const unsigned char *commit_sha1, unsigned char *gitmodules_sha1) { -- 2.6.4.443.ge094245.dirty -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html