summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2016-03-10 11:13:48 -0800
committerJunio C Hamano <gitster@pobox.com>2016-03-10 11:13:48 -0800
commit08e21c9b5f3996152080ff22d33d9d2866a3dc26 (patch)
tree3bdc2b3e76ad26523ef7ea81a4ff199910384d6e
parentc6f399c96f5a323a11f63a54553664c596bf0e2d (diff)
parent63ca1c099c36e61b0e9cd7fa0b912c0b9d89b628 (diff)
downloadgit-08e21c9b5f3996152080ff22d33d9d2866a3dc26.tar.gz
Merge branch 'ak/git-strip-extension-from-dashed-command' into maint
Code simplification. * ak/git-strip-extension-from-dashed-command: git.c: simplify stripping extension of a file in handle_builtin()
-rw-r--r--git-compat-util.h4
-rw-r--r--git.c26
2 files changed, 15 insertions, 15 deletions
diff --git a/git-compat-util.h b/git-compat-util.h
index 1459f9b87e..c07e0c1778 100644
--- 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 e61a59c014..c19d6bf47b 100644
--- a/git.c
+++ b/git.c
@@ -502,21 +502,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")) {