Skip to content

Commit

Permalink
git.c: simplify stripping extension of a file in handle_builtin()
Browse files Browse the repository at this point in the history
The handle_builtin() starts from stripping 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
stripping.

Signed-off-by: Alexander Kuleshov <kuleshovmail@gmail.com>
Helped-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Alexander Kuleshov authored and Junio C Hamano committed Feb 22, 2016
1 parent be08dee commit 63ca1c0
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 15 deletions.
4 changes: 0 additions & 4 deletions git-compat-util.h
Original file line number Diff line number Diff line change
Expand Up @@ -319,10 +319,6 @@ extern char *gitbasename(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)
{
Expand Down
26 changes: 15 additions & 11 deletions git.c
Original file line number Diff line number Diff line change
Expand Up @@ -505,21 +505,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")) {
Expand Down

0 comments on commit 63ca1c0

Please sign in to comment.