# [PATCH] push: use skip_prefix() instead of starts_with()

2 messages from 2019-11-26 to 2019-11-26. Participants: René Scharfe, Jeff King.
Thread: https://gitlist.dev/t/52345

## René Scharfe, 2019-11-26 15:18

Subject: [PATCH] push: use skip_prefix() instead of starts_with()
Message-ID: <90f94e4b-6cf3-58cc-01dc-c3d731037217@web.de>
URL: https://gitlist.dev/e/90f94e4b-6cf3-58cc-01dc-c3d731037217%40web.de

```
Get rid of a magic number by using skip_prefix().

Signed-off-by: René Scharfe <l.s.r@web.de>
---
 builtin/push.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/builtin/push.c b/builtin/push.c
index 843f5b22a2..6dbf0f0bb7 100644
--- a/builtin/push.c
+++ b/builtin/push.c
@@ -64,6 +64,7 @@ static struct string_list push_options_config = STRING_LIST_INIT_DUP;
 static const char *map_refspec(const char *ref,
 			       struct remote *remote, struct ref *local_refs)
 {
+	const char *branch_name;
 	struct ref *matched = NULL;

 	/* Does "ref" uniquely name our ref? */
@@ -84,8 +85,8 @@ static const char *map_refspec(const char *ref,
 	}

 	if (push_default == PUSH_DEFAULT_UPSTREAM &&
-	    starts_with(matched->name, "refs/heads/")) {
-		struct branch *branch = branch_get(matched->name + 11);
+	    skip_prefix(matched->name, "refs/heads/", &branch_name)) {
+		struct branch *branch = branch_get(branch_name);
 		if (branch->merge_nr == 1 && branch->merge[0]->src) {
 			struct strbuf buf = STRBUF_INIT;
 			strbuf_addf(&buf, "%s:%s",
--
2.24.0

```

## Jeff King, 2019-11-26 15:57

Subject: Re: [PATCH] push: use skip_prefix() instead of starts_with()
Message-ID: <20191126155741.GB25729@sigill.intra.peff.net>
URL: https://gitlist.dev/e/20191126155741.GB25729%40sigill.intra.peff.net
In-Reply-To: <90f94e4b-6cf3-58cc-01dc-c3d731037217@web.de>

```
On Tue, Nov 26, 2019 at 04:18:28PM +0100, René Scharfe wrote:

> diff --git a/builtin/push.c b/builtin/push.c
> index 843f5b22a2..6dbf0f0bb7 100644
> --- a/builtin/push.c
> +++ b/builtin/push.c
> @@ -64,6 +64,7 @@ static struct string_list push_options_config = STRING_LIST_INIT_DUP;
>  static const char *map_refspec(const char *ref,
>  			       struct remote *remote, struct ref *local_refs)
>  {
> +	const char *branch_name;
>  	struct ref *matched = NULL;
> 
>  	/* Does "ref" uniquely name our ref? */
> @@ -84,8 +85,8 @@ static const char *map_refspec(const char *ref,
>  	}
> 
>  	if (push_default == PUSH_DEFAULT_UPSTREAM &&
> -	    starts_with(matched->name, "refs/heads/")) {
> -		struct branch *branch = branch_get(matched->name + 11);
> +	    skip_prefix(matched->name, "refs/heads/", &branch_name)) {
> +		struct branch *branch = branch_get(branch_name);

Yep, obviously correct because you introduce a new variable instead of
mutating an existing one. Looks good.

-Peff

```
