diff options
author | Junio C Hamano <gitster@pobox.com> | 2014-09-29 12:36:12 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2014-09-29 12:36:12 -0700 |
commit | 60dfd8461b11e419edecec1b7734442656ed9e06 (patch) | |
tree | 7927bfa0951019f2d2d15308b2e078e30f93d88b | |
parent | 0a2ba82c76e0c28d58595fbdc2c43120f821b239 (diff) | |
parent | 07bfa575c1ce741d0e33580c336596d3407129b6 (diff) | |
download | git-60dfd8461b11e419edecec1b7734442656ed9e06.tar.gz git-60dfd8461b11e419edecec1b7734442656ed9e06.tar.xz |
Merge branch 'rs/remote-simplify'
* rs/remote-simplify:
remote: simplify match_name_with_pattern() using strbuf
-rw-r--r-- | remote.c | 17 |
1 files changed, 5 insertions, 12 deletions
@@ -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; } |