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

Re: [PATCH] git.c: simplify striping extension of a file in handle_builtin()

From
Eric Sunshine <sunshine@sunshineco.com>
Date
Feb 22, 2016, 00:20 UTC
Message-ID
<CAPig+cTiZ17Fb-d+9n_F2PM5+4Q4NAc0xC3xVogwv5+P6aCE9A@mail.gmail.com>
In-Reply-To
<1455978468-14387-1-git-send-email-kuleshovmail@gmail.com>

On Sat, Feb 20, 2016 at 9:27 AM, Alexander Kuleshov <kuleshovmail@gmail.com> wrote:

> git.c: simplify striping extension of a file in handle_builtin()
s/striping/stripping/g
(Note the '/g' above.)
The patch itself looks okay.
Show 66 quoted lines
> The handle_builtin() starts from striping of command extension if
> STRIP_EXTENSION is enabled. Actually STRIP_EXTENSION does not used
> anywhere else.
>
> This patch introduces strip_extension() helper to strip STRIP_EXTENSION
> extension from argv[0] with the strip_suffix() instead of manually
> striping.
>
> Signed-off-by: Alexander Kuleshov <kuleshovmail@gmail.com>
> Helped-by: Jeff King <peff@peff.net>
> ---
> diff --git a/git-compat-util.h b/git-compat-util.h
> @@ -333,10 +333,6 @@ extern char *gitdirname(char *);
>  #define _PATH_DEFPATH "/usr/local/bin:/usr/bin:/bin"
>  #endif
>
> -#ifndef STRIP_EXTENSION
> -#define STRIP_EXTENSION ""
> -#endif
> -
>  #ifndef has_dos_drive_prefix
>  static inline int git_has_dos_drive_prefix(const char *path)
>  {
> diff --git a/git.c b/git.c
> index 087ad31..6cc0c07 100644
> --- a/git.c
> +++ b/git.c
> @@ -509,21 +509,25 @@ int is_builtin(const char *s)
>         return !!get_builtin(s);
>  }
>
> +#ifdef STRIP_EXTENSION
> +static void strip_extension(const char **argv)
> +{
> +       size_t len;
> +
> +       if (strip_suffix(argv[0], STRIP_EXTENSION, &len))
> +               argv[0] = xmemdupz(argv[0], len);
> +}
> +#else
> +#define strip_extension(cmd)
> +#endif
> +
>  static void handle_builtin(int argc, const char **argv)
>  {
> -       const char *cmd = argv[0];
> -       int i;
> -       static const char ext[] = STRIP_EXTENSION;
> +       const char *cmd;
>         struct cmd_struct *builtin;
>
> -       if (sizeof(ext) > 1) {
> -               i = strlen(argv[0]) - strlen(ext);
> -               if (i > 0 && !strcmp(argv[0] + i, ext)) {
> -                       char *argv0 = xstrdup(argv[0]);
> -                       argv[0] = cmd = argv0;
> -                       argv0[i] = '\0';
> -               }
> -       }
> +       strip_extension(argv);
> +       cmd = argv[0];
>
>         /* Turn "git cmd --help" into "git help cmd" */
>         if (argc > 1 && !strcmp(argv[1], "--help")) {
> --
> 2.5.0
Previous: Alexander Kuleshov
Message 2 of 2 in “git.c: simplify striping extension of a file in handle_builtin()”
  1. git.c: simplify striping extension of a file in handle_builtin()Alexander Kuleshov, Feb 20, 2016
  2. Eric SunshineFeb 22, 2016

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.