On Mon, Feb 15, 2016 at 11:39:41PM +0100, Thomas Gummerer wrote:
> - if (!starts_with(key, "remote."))
> + if (parse_config_key(key, "remote", &name, &namelen, &subkey) < 0)
> return 0;
> - name = key + 7;
>
> /* Handle remote.* variables */
> - if (!strcmp(name, "pushdefault"))
> + if (!strcmp(subkey, "pushdefault"))
> return git_config_string(&pushremote_name, key, value);
I think this needs to become:
if (!name && !strcmp(subkey, "pushdefault"))
so that we do not match "remote.foo.pushdefault", which is nonsense. The
original avoided it by conflating "name" and "subkey" at various points,
and not parsing out the subkey until later. Making that more explicit is
one of the things that I think is improved by your patch. :)
> /* Handle remote.<name>.* variables */
> - if (*name == '/') {
> + if (*(name ? name : subkey) == '/') {
> warning("Config remote shorthand cannot begin with '/': %s",
> - name);
> + name ? name : subkey);
> return 0;
> }
> - subkey = strrchr(name, '.');
> - if (!subkey)
> + if (!name)
> return 0;
I think you can bump the "if (!name)" check earlier. If it is empty, we
know that it does not start with "/". And then you can avoid the extra
NULL-checks.
The rest of the patch looks good to me. I hadn't realized initially that
all of the subkey compares would become "foo" and not ".foo". That makes
the diff noisier, but IMHO the result is much better.
-Peff
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html