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
}