diff options
author | René Scharfe <l.s.r@web.de> | 2014-09-21 10:23:37 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2014-09-22 12:40:27 -0700 |
commit | 07bfa575c1ce741d0e33580c336596d3407129b6 (patch) | |
tree | 54e569556bc3be3dde3e0aeaa89d74d3a378c06b /remote.c | |
parent | Update draft release notes to 2.2 (diff) | |
download | tgif-07bfa575c1ce741d0e33580c336596d3407129b6.tar.xz |
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>
Diffstat (limited to 'remote.c')
-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; } |