Subject: Re: [PATCH] fetch: convert strncmp() with strlen() to starts_with()

From: Junio C Hamano <[email-masked]>
Date: Sat, 24 Feb 2024 15:45:28 -0800

René Scharfe <[email-masked]> writes:

> Using strncmp() and strlen() to check whether a string starts with
> another one requires repeating the prefix candidate.  Use starts_with()
> instead, which reduces repetition and is more readable.
>
> Signed-off-by: René Scharfe <[email-masked]>
> ---
>  builtin/fetch.c | 5 ++---
>  1 file changed, 2 insertions(+), 3 deletions(-)
>
> diff --git a/builtin/fetch.c b/builtin/fetch.c
> index 3aedfd1bb6..0a7a1a3476 100644
> --- a/builtin/fetch.c
> +++ b/builtin/fetch.c
> @@ -448,9 +448,8 @@ static void filter_prefetch_refspec(struct refspec *rs)
>  			continue;
>  		if (!rs->items[i].dst ||
>  		    (rs->items[i].src &&
> -		     !strncmp(rs->items[i].src,
> -			      ref_namespace[NAMESPACE_TAGS].ref,
> -			      strlen(ref_namespace[NAMESPACE_TAGS].ref)))) {
> +		     starts_with(rs->items[i].src,
> +				 ref_namespace[NAMESPACE_TAGS].ref))) {

The original tries to check that "namespace" fully matches the
initial part of .src string, which is exactly what starts_with()
does.  Makes sense.

>  			int j;
>  			free(rs->items[i].src);
> --
> 2.44.0