1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-05-09 12:36:08 +02:00

builtin: move builtin retrieval to get_builtin()

There was a redundant code for a builtin command retrieval in
'handle_builtin()' and 'is_builtin()'.

Introduce a new function 'get_builtin()' and using it from
both of these places to reduce the redundancy.

Signed-off-by: Slavomir Vlcek <svlc@inventati.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Slavomir Vlcek 2014-11-12 14:10:22 +01:00 committed by Junio C Hamano
parent 7fa1365c54
commit c4f901d159

27
git.c
View File

@ -486,15 +486,20 @@ static struct cmd_struct commands[] = {
{ "write-tree", cmd_write_tree, RUN_SETUP },
};
int is_builtin(const char *s)
static struct cmd_struct *get_builtin(const char *s)
{
int i;
for (i = 0; i < ARRAY_SIZE(commands); i++) {
struct cmd_struct *p = commands+i;
struct cmd_struct *p = commands + i;
if (!strcmp(s, p->cmd))
return 1;
return p;
}
return 0;
return NULL;
}
int is_builtin(const char *s)
{
return !!get_builtin(s);
}
static void handle_builtin(int argc, const char **argv)
@ -502,6 +507,7 @@ static void handle_builtin(int argc, const char **argv)
const char *cmd = argv[0];
int i;
static const char ext[] = STRIP_EXTENSION;
struct cmd_struct *builtin;
if (sizeof(ext) > 1) {
i = strlen(argv[0]) - strlen(ext);
@ -518,15 +524,12 @@ static void handle_builtin(int argc, const char **argv)
argv[0] = cmd = "help";
}
for (i = 0; i < ARRAY_SIZE(commands); i++) {
struct cmd_struct *p = commands+i;
if (strcmp(p->cmd, cmd))
continue;
if (saved_environment && (p->option & NO_SETUP)) {
builtin = get_builtin(cmd);
if (builtin) {
if (saved_environment && (builtin->option & NO_SETUP))
restore_env();
break;
}
exit(run_builtin(p, argc, argv));
else
exit(run_builtin(builtin, argc, argv));
}
}