threads / patch / 52344

patchshell: use skip_prefix() instead of starts_with()

Subject: [PATCH] shell: use skip_prefix() instead of starts_with()

## tl;dr

3 messages between Nov 26, 2019 and Nov 26, 2019. Diffs are folded; open one to read it.

replies: 2people: 2as markdown or json

René Scharfe· Nov 26, 2019, 15:00 UTC · lore

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

Signed-off-by: René Scharfe <l.s.r@web.de>
---
 shell.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
Show changes to shell.c +2 −3
diff --git a/shell.c b/shell.c
index 40084a3013..54cca7439d 100644
--- a/shell.c
+++ b/shell.c
@@ -16,10 +16,10 @@ static int do_generic_cmd(const char *me, char *arg)
 	setup_path();
 	if (!arg || !(arg = sq_dequote(arg)) || *arg == '-')
 		die("bad argument");
-	if (!starts_with(me, "git-"))
+	if (!skip_prefix(me, "git-", &me))
 		die("bad command");

-	my_argv[0] = me + 4;
+	my_argv[0] = me;
 	my_argv[1] = arg;
 	my_argv[2] = NULL;

--
2.24.0
Jeff King· Nov 26, 2019, 15:56 UTC · re: René Scharfe · lore

Re: [PATCH] shell: use skip_prefix() instead of starts_with()

On Tue, Nov 26, 2019 at 04:00:43PM +0100, René Scharfe wrote:
Show 24 quoted lines
> Get rid of a magic number by using skip_prefix() instead of
> starts_with().
> 
> Signed-off-by: René Scharfe <l.s.r@web.de>
> ---
>  shell.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/shell.c b/shell.c
> index 40084a3013..54cca7439d 100644
> --- a/shell.c
> +++ b/shell.c
> @@ -16,10 +16,10 @@ static int do_generic_cmd(const char *me, char *arg)
>  	setup_path();
>  	if (!arg || !(arg = sq_dequote(arg)) || *arg == '-')
>  		die("bad argument");
> -	if (!starts_with(me, "git-"))
> +	if (!skip_prefix(me, "git-", &me))
>  		die("bad command");
> 
> -	my_argv[0] = me + 4;
> +	my_argv[0] = me;
>  	my_argv[1] = arg;
>  	my_argv[2] = NULL;

The context makes this look obviously correct, but one thing to watch out for in these skip_prefix() conversions is that the value of "me" is now mutated. This one is fine, because nobody else looks at "me" after this (knowing you, I am pretty sure you checked that already, but I am making a mental note to myself and others as we review these).

-Peff
René Scharfe· Nov 26, 2019, 16:41 UTC · re: Jeff King · lore

Re: [PATCH] shell: use skip_prefix() instead of starts_with()

Am 26.11.19 um 16:56 schrieb Jeff King:
Show 30 quoted lines
> On Tue, Nov 26, 2019 at 04:00:43PM +0100, René Scharfe wrote:
>
>> Get rid of a magic number by using skip_prefix() instead of
>> starts_with().
>>
>> Signed-off-by: René Scharfe <l.s.r@web.de>
>> ---
>>  shell.c | 4 ++--
>>  1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/shell.c b/shell.c
>> index 40084a3013..54cca7439d 100644
>> --- a/shell.c
>> +++ b/shell.c
>> @@ -16,10 +16,10 @@ static int do_generic_cmd(const char *me, char *arg)
>>  	setup_path();
>>  	if (!arg || !(arg = sq_dequote(arg)) || *arg == '-')
>>  		die("bad argument");
>> -	if (!starts_with(me, "git-"))
>> +	if (!skip_prefix(me, "git-", &me))
>>  		die("bad command");
>>
>> -	my_argv[0] = me + 4;
>> +	my_argv[0] = me;
>>  	my_argv[1] = arg;
>>  	my_argv[2] = NULL;
>
> The context makes this look obviously correct, but one thing to watch
> out for in these skip_prefix() conversions is that the value of "me" is
> now mutated.

Ah, the one time I didn't use --function-context.. It would have looked like this:

---
 shell.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
Show changes to shell.c +2 −3
diff --git a/shell.c b/shell.c
index 40084a3013..54cca7439d 100644
--- a/shell.c
+++ b/shell.c
@@ -12,16 +12,16 @@
 static int do_generic_cmd(const char *me, char *arg)
 {
 	const char *my_argv[4];

 	setup_path();
 	if (!arg || !(arg = sq_dequote(arg)) || *arg == '-')
 		die("bad argument");
-	if (!starts_with(me, "git-"))
+	if (!skip_prefix(me, "git-", &me))
 		die("bad command");

-	my_argv[0] = me + 4;
+	my_argv[0] = me;
 	my_argv[1] = arg;
 	my_argv[2] = NULL;

 	return execv_git_cmd(my_argv);
 }
--
2.24.0

← back to recent threads