Am 23.01.2013 07:25, schrieb Jeff King:
> This makes the code a lot simpler to read by dropping a
> whole bunch of constant offsets.
> 
> As a bonus, it means we also feed the whole config variable
> name to our error functions:
> 
>   [before]
>   $ git -c submodule.foo.fetchrecursesubmodules=bogus checkout
>   fatal: bad foo.fetchrecursesubmodules argument: bogus
> 
>   [after]
>   $ git -c submodule.foo.fetchrecursesubmodules=bogus checkout
>   fatal: bad submodule.foo.fetchrecursesubmodules argument: bogus

Thanks, that makes lots of sense!

Acked-by: Jens Lehmann <jens.lehm...@web.de>

> Signed-off-by: Jeff King <p...@peff.net>
> ---
>  submodule.c | 19 ++++++++++---------
>  1 file changed, 10 insertions(+), 9 deletions(-)
> 
> diff --git a/submodule.c b/submodule.c
> index 2f55436..25413de 100644
> --- a/submodule.c
> +++ b/submodule.c
> @@ -126,15 +126,16 @@ int parse_submodule_config_option(const char *var, 
> const char *value)
>  
>  int parse_submodule_config_option(const char *var, const char *value)
>  {
> -     int len;
>       struct string_list_item *config;
>       struct strbuf submodname = STRBUF_INIT;
> +     const char *name, *key;
> +     int namelen;
>  
> -     var += 10;              /* Skip "submodule." */
> +     if (parse_config_key(var, "submodule", &name, &namelen, &key) < 0 || 
> !name)
> +             return 0;
>  
> -     len = strlen(var);
> -     if ((len > 5) && !strcmp(var + len - 5, ".path")) {
> -             strbuf_add(&submodname, var, len - 5);
> +     if (!strcmp(key, "path")) {
> +             strbuf_add(&submodname, name, namelen);
>               config = unsorted_string_list_lookup(&config_name_for_path, 
> value);
>               if (config)
>                       free(config->util);
> @@ -142,22 +143,22 @@ int parse_submodule_config_option(const char *var, 
> const char *value)
>                       config = string_list_append(&config_name_for_path, 
> xstrdup(value));
>               config->util = strbuf_detach(&submodname, NULL);
>               strbuf_release(&submodname);
> -     } else if ((len > 23) && !strcmp(var + len - 23, 
> ".fetchrecursesubmodules")) {
> -             strbuf_add(&submodname, var, len - 23);
> +     } else if (!strcmp(key, "fetchrecursesubmodules")) {
> +             strbuf_add(&submodname, name, namelen);
>               config = 
> unsorted_string_list_lookup(&config_fetch_recurse_submodules_for_name, 
> submodname.buf);
>               if (!config)
>                       config = 
> string_list_append(&config_fetch_recurse_submodules_for_name,
>                                                   strbuf_detach(&submodname, 
> NULL));
>               config->util = (void 
> *)(intptr_t)parse_fetch_recurse_submodules_arg(var, value);
>               strbuf_release(&submodname);
> -     } else if ((len > 7) && !strcmp(var + len - 7, ".ignore")) {
> +     } else if (!strcmp(key, "ignore")) {
>               if (strcmp(value, "untracked") && strcmp(value, "dirty") &&
>                   strcmp(value, "all") && strcmp(value, "none")) {
>                       warning("Invalid parameter \"%s\" for config option 
> \"submodule.%s.ignore\"", value, var);
>                       return 0;
>               }
>  
> -             strbuf_add(&submodname, var, len - 7);
> +             strbuf_add(&submodname, name, namelen);
>               config = unsorted_string_list_lookup(&config_ignore_for_name, 
> submodname.buf);
>               if (config)
>                       free(config->util);
> 

--
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