зеркало из https://github.com/microsoft/git.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 <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
97b8860c07
Коммит
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 &&
|
||||
!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;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче