{"thread":{"id":"37607","subject":"[PATCH] remote: simplify match_name_with_pattern() using strbuf","startedAt":"2014-09-21T08:23:37Z","lastAt":"2014-09-21T08:23:37Z","messageCount":1,"participants":["René Scharfe"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"249715","messageId":"541E8B09.80502@web.de","threadId":"37607","inReplyTo":null,"subject":"[PATCH] remote: simplify match_name_with_pattern() using strbuf","fromName":"René Scharfe","fromEmail":"l.s.r@web.de","sentAt":"2014-09-21T08:23:37Z","receivedAt":"2014-09-21T08:23:37Z","isPatch":true,"sender":{"key":"l.s.r@web.de","avatar":"https://avatars.githubusercontent.com/u/26122331?v=4"},"body":"Make the code simpler and shorter by avoiding repetitive use of\nstring length variables and leaving memory allocation to strbuf\nfunctions.\n\nSigned-off-by: Rene Scharfe <l.s.r@web.de>\n---\n remote.c | 17 +++++------------\n 1 file changed, 5 insertions(+), 12 deletions(-)\n\ndiff --git a/remote.c b/remote.c\nindex 35e62ee..ce785f8 100644\n--- a/remote.c\n+++ b/remote.c\n@@ -862,21 +862,14 @@ static int match_name_with_pattern(const char *key, const char *name,\n \tret = !strncmp(name, key, klen) && namelen >= klen + ksuffixlen &&\n \t\t!memcmp(name + namelen - ksuffixlen, kstar + 1, ksuffixlen);\n \tif (ret && value) {\n+\t\tstruct strbuf sb = STRBUF_INIT;\n \t\tconst char *vstar = strchr(value, '*');\n-\t\tsize_t vlen;\n-\t\tsize_t vsuffixlen;\n \t\tif (!vstar)\n \t\t\tdie(\"Value '%s' of pattern has no '*'\", value);\n-\t\tvlen = vstar - value;\n-\t\tvsuffixlen = strlen(vstar + 1);\n-\t\t*result = xmalloc(vlen + vsuffixlen +\n-\t\t\t\t  strlen(name) -\n-\t\t\t\t  klen - ksuffixlen + 1);\n-\t\tstrncpy(*result, value, vlen);\n-\t\tstrncpy(*result + vlen,\n-\t\t\tname + klen, namelen - klen - ksuffixlen);\n-\t\tstrcpy(*result + vlen + namelen - klen - ksuffixlen,\n-\t\t       vstar + 1);\n+\t\tstrbuf_add(&sb, value, vstar - value);\n+\t\tstrbuf_add(&sb, name + klen, namelen - klen - ksuffixlen);\n+\t\tstrbuf_addstr(&sb, vstar + 1);\n+\t\t*result = strbuf_detach(&sb, NULL);\n \t}\n \treturn ret;\n }\n-- \n2.1.1\n"}]}