remote: simplify match_name_with_pattern() using strbuf
PATCH 1/1 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 <[email protected]>
--- remote.c | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-)
remote.c +5 -12
@@ -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; }
Signature · 1 line
2.1.1