On Wed, Oct 28, 2015 at 7:21 PM, Stefan Beller <sbeller@xxxxxxxxxx> wrote: > submodule-config: parse_config Um, what? > 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> > > # Conflicts: > # submodule-config.c Interesting. > Signed-off-by: Stefan Beller <sbeller@xxxxxxxxxx> > --- > diff --git a/submodule-config.c b/submodule-config.c > index 4d0563c..1cea404 100644 > --- a/submodule-config.c > +++ b/submodule-config.c > @@ -231,27 +231,23 @@ 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 *var, > + const char *key, > + const char *value) > { > - struct parse_config_parameter *me = data; > - struct submodule *submodule; > - int subsection_len, ret = 0; > - const char *subsection, *key; > - char *name; > - > - if (parse_config_key(var, "submodule", &subsection, > - &subsection_len, &key) < 0) > - return 0; > - > - if (!subsection_len) > - return 0; > + return 0; > +} > > - /* subsection is not null terminated */ > - name = xmemdupz(subsection, subsection_len); > - submodule = lookup_or_create_by_name(me->cache, > - me->gitmodules_sha1, > - name); > - free(name); > +static int parse_specific_submodule_config(struct parse_config_parameter *me, > + const char *name, > + const char *key, > + const char *value, > + const char *var) Minor: Are these 'key', 'value', 'var' arguments analogous to the like-named arguments of parse_generic_submodule_config()? If so, why is the order of arguments different? > +{ > + int ret = 0; > + struct submodule *submodule = lookup_or_create_by_name(me->cache, > + me->gitmodules_sha1, > + name); > > if (!strcmp(key, "path")) { > if (!value) > @@ -318,6 +314,30 @@ 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; > + char *name; > + > + if (parse_config_key(var, "submodule", &subsection, > + &subsection_len, &key) < 0) > + return 0; > + > + if (!subsection_len) > + return parse_generic_submodule_config(var, key, value); > + else { > + int ret; > + /* subsection is not null terminated */ > + name = xmemdupz(subsection, subsection_len); > + ret = parse_specific_submodule_config(me, name, key, value, var); > + free(name); > + return ret; > + } > +} Minor: You could drop the 'else' and outdent its body, thus losing one indentation level. if (!subsection_len) return parse_generic_submodule_config(...); int ret; ... return ret; This might give you a less noisy diff and would be a bit more consistent with the early part of the function where you don't bother giving the if (parse_config_key(...)) an 'else' body. -- 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