connect: simplify check_ref() using skip_prefix() and starts_with()
PATCH 1/1 connect: simplify check_ref() using skip_prefix() and starts_with()
Both callers of check_ref() pass in NUL-terminated strings for name. Remove the len parameter and then use skip_prefix() and starts_with() instead of memcmp() to check if it starts with certain strings. This gets rid of several magic string length constants and a strlen() call.
Signed-off-by Rene Scharfe <[email protected]>
--- connect.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-)
connect.c +6 -10
@@ -13,28 +13,24 @@static char *server_capabilities;static const char *parse_feature_value (const char *,const char *,int *); -static int check_ref (const char *name,int len,unsigned int flags) +static int check_ref (const char *name,unsigned int flags) {if (!flags)return 1 ; -if (len <5 ||memcmp (name,"refs/" ,5 )) +if (!skip_prefix (name,"refs/" , &name))return 0 ; -/* Skip the "refs/" part */ - name +=5 ; - len -=5 ; -/* REF_NORMAL means that we don't want the magic fake tag refs */ if ((flags &REF_NORMAL ) &&check_refname_format (name,0 ))return 0 ;/* REF_HEADS means that we want regular branch heads */ -if ((flags &REF_HEADS ) && !memcmp (name,"heads/" ,6 )) +if ((flags &REF_HEADS ) &&starts_with (name,"heads/" ))return 1 ;/* REF_TAGS means that we want tags */ -if ((flags &REF_TAGS ) && !memcmp (name,"tags/" ,5 )) +if ((flags &REF_TAGS ) &&starts_with (name,"tags/" ))return 1 ;/* All type bits clear means that we are ok with anything */
@@ -43,7 +39,7 @@ static int check_ref(const char *name, int len, unsigned int flags)int check_ref_type (const struct ref *ref,int flags) { -return check_ref (ref->name,strlen (ref->name), flags); +return check_ref (ref->name, flags); }static void die_initial_contact (int got_at_least_one_head)
@@ -167,7 +163,7 @@ struct ref **get_remote_heads(int in, char *src_buf, size_t src_len,continue ; } -if (!check_ref (name, name_len, flags)) +if (!check_ref (name, flags))continue ; ref =alloc_ref (buffer +41 );hashcpy (ref->old_sha1, old_sha1);
Signature · 1 line
2.1.0