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>
This commit is contained in:
parent
97b8860c07
commit
07bfa575c1
17
remote.c
17
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 &&
|
ret = !strncmp(name, key, klen) && namelen >= klen + ksuffixlen &&
|
||||||
!memcmp(name + namelen - ksuffixlen, kstar + 1, ksuffixlen);
|
!memcmp(name + namelen - ksuffixlen, kstar + 1, ksuffixlen);
|
||||||
if (ret && value) {
|
if (ret && value) {
|
||||||
|
struct strbuf sb = STRBUF_INIT;
|
||||||
const char *vstar = strchr(value, '*');
|
const char *vstar = strchr(value, '*');
|
||||||
size_t vlen;
|
|
||||||
size_t vsuffixlen;
|
|
||||||
if (!vstar)
|
if (!vstar)
|
||||||
die("Value '%s' of pattern has no '*'", value);
|
die("Value '%s' of pattern has no '*'", value);
|
||||||
vlen = vstar - value;
|
strbuf_add(&sb, value, vstar - value);
|
||||||
vsuffixlen = strlen(vstar + 1);
|
strbuf_add(&sb, name + klen, namelen - klen - ksuffixlen);
|
||||||
*result = xmalloc(vlen + vsuffixlen +
|
strbuf_addstr(&sb, vstar + 1);
|
||||||
strlen(name) -
|
*result = strbuf_detach(&sb, NULL);
|
||||||
klen - ksuffixlen + 1);
|
|
||||||
strncpy(*result, value, vlen);
|
|
||||||
strncpy(*result + vlen,
|
|
||||||
name + klen, namelen - klen - ksuffixlen);
|
|
||||||
strcpy(*result + vlen + namelen - klen - ksuffixlen,
|
|
||||||
vstar + 1);
|
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user