From: René Scharfe Date: Sun, 21 Sep 2014 08:23:37 +0000 (+0200) Subject: remote: simplify match_name_with_pattern() using strbuf X-Git-Tag: v2.2.0-rc0~75^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=07bfa575c1ce741d0e33580c336596d3407129b6;p=thirdparty%2Fgit.git 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 Signed-off-by: Junio C Hamano --- diff --git a/remote.c b/remote.c index 35e62ee0f5..ce785f8953 100644 --- a/remote.c +++ b/remote.c @@ -862,21 +862,14 @@ static int match_name_with_pattern(const char *key, const char *name, ret = !strncmp(name, key, klen) && namelen >= klen + ksuffixlen && !memcmp(name + namelen - ksuffixlen, kstar + 1, ksuffixlen); if (ret && value) { + struct strbuf sb = STRBUF_INIT; const char *vstar = strchr(value, '*'); - size_t vlen; - size_t vsuffixlen; if (!vstar) die("Value '%s' of pattern has no '*'", value); - vlen = vstar - value; - vsuffixlen = strlen(vstar + 1); - *result = xmalloc(vlen + vsuffixlen + - strlen(name) - - klen - ksuffixlen + 1); - strncpy(*result, value, vlen); - strncpy(*result + vlen, - name + klen, namelen - klen - ksuffixlen); - strcpy(*result + vlen + namelen - klen - ksuffixlen, - vstar + 1); + strbuf_add(&sb, value, vstar - value); + strbuf_add(&sb, name + klen, namelen - klen - ksuffixlen); + strbuf_addstr(&sb, vstar + 1); + *result = strbuf_detach(&sb, NULL); } return ret; }