remote: simplify match_name_with_pattern() using strbuf

Make the code simpler and shorter by avoiding repetitive use of string length variables and leaving memory allocation to strbuf functions. Signed-off-by: Rene Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>

René Scharfe committed Sep 21, 2014 at 10:23 UTC 07bfa575c1ce741d0e33580c336596d3407129b6
1 file changed +5 -12
remote.c
+5 -12
@@ -862,21 +862,14 @@ static int match_name_with_pattern(const char *key, const char *name,
862 ret = !strncmp(name, key, klen) && namelen >= klen + ksuffixlen &&
863 !memcmp(name + namelen - ksuffixlen, kstar + 1, ksuffixlen);
864 if (ret && value) {
865 + struct strbuf sb = STRBUF_INIT;
866 const char *vstar = strchr(value, '*');
866 - size_t vlen;
867 - size_t vsuffixlen;
867 if (!vstar)
868 die("Value '%s' of pattern has no '*'", value);
870 - vlen = vstar - value;
871 - vsuffixlen = strlen(vstar + 1);
872 - *result = xmalloc(vlen + vsuffixlen +
873 - strlen(name) -
874 - klen - ksuffixlen + 1);
875 - strncpy(*result, value, vlen);
876 - strncpy(*result + vlen,
877 - name + klen, namelen - klen - ksuffixlen);
878 - strcpy(*result + vlen + namelen - klen - ksuffixlen,
879 - vstar + 1);
869 + strbuf_add(&sb, value, vstar - value);
870 + strbuf_add(&sb, name + klen, namelen - klen - ksuffixlen);
871 + strbuf_addstr(&sb, vstar + 1);
872 + *result = strbuf_detach(&sb, NULL);
873 }
874 return ret;
875 }