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 <sbel...@google.com>
---
 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.1.261.g0d9c4c1

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to