diff options
author | Slavomir Vlcek <svlc@inventati.org> | 2014-11-12 14:10:22 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2014-11-13 10:40:41 -0800 |
commit | c4f901d1593f3ef097c3e73daa2847ed9ad9efe0 (patch) | |
tree | 11c5b4fe233ad7c6e8e58c638bc7bb7262390b19 | |
parent | 7fa1365c54c28b3cd9375539f381b54061a1880d (diff) | |
download | git-c4f901d1593f3ef097c3e73daa2847ed9ad9efe0.tar.gz |
builtin: move builtin retrieval to get_builtin()sv/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>
-rw-r--r-- | git.c | 27 |
1 files changed, 15 insertions, 12 deletions
@@ -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)); } } |