git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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

From
Jeff King <peff@peff.net>
Date
Nov 26, 2019, 15:56 UTC
Message-ID
<20191126155647.GA25729@sigill.intra.peff.net>
In-Reply-To
<0a4dfbcc-9eb5-6b39-6b93-0014f5c475de@web.de>
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
Previous: René ScharfeNext: René Scharfe
Message 2 of 3 in “shell: use skip_prefix() instead of starts_with()”
  1. shell: use skip_prefix() instead of starts_with()René Scharfe, Nov 26, 2019
  2. Jeff KingNov 26, 2019
  3. René ScharfeNov 26, 2019

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.