From: Johan Herland <johan@herland.net>
To: git@vger.kernel.org
Cc: Johan Herland <johan@herland.net>,
barkalow@iabervon.org, gitster@pobox.com,
benji@silverinsanity.com, Johannes.Schindelin@gmx.de
Subject: [RFC/PATCH 4/6] Add is_git_command_or_alias() for checking availability of a given git command
Date: Tue, 11 Aug 2009 12:10:24 +0200 [thread overview]
Message-ID: <1249985426-13726-5-git-send-email-johan@herland.net> (raw)
In-Reply-To: <alpine.LNX.2.00.0908101205120.27553@iabervon.org>
The transport-helper mechanism requires us to gracefully handle the case
where a git command is not available for some reason.
This patch introduces a simple function for querying the availability of a
git command, without attempting to execute said command.
The new function is very similar to the static is_git_command() function in
builtin-help.c, except that this function also accepts a matching alias.
Signed-off-by: Johan Herland <johan@herland.net>
---
help.c | 21 +++++++++++++++++++++
help.h | 2 ++
2 files changed, 23 insertions(+), 0 deletions(-)
diff --git a/help.c b/help.c
index 994561d..a616277 100644
--- a/help.c
+++ b/help.c
@@ -296,6 +296,27 @@ static void add_cmd_list(struct cmdnames *cmds, struct cmdnames *old)
old->names = NULL;
}
+int is_git_command_or_alias(const char *cmd)
+{
+ struct cmdnames main_cmds, other_cmds;
+
+ memset(&main_cmds, 0, sizeof(main_cmds));
+ memset(&other_cmds, 0, sizeof(other_cmds));
+ memset(&aliases, 0, sizeof(aliases));
+
+ git_config(git_unknown_cmd_config, NULL);
+
+ load_command_list("git-", &main_cmds, &other_cmds);
+
+ add_cmd_list(&main_cmds, &aliases);
+ add_cmd_list(&main_cmds, &other_cmds);
+ qsort(main_cmds.names, main_cmds.cnt,
+ sizeof(main_cmds.names), cmdname_compare);
+ uniq(&main_cmds);
+
+ return is_in_cmdlist(&main_cmds, cmd);
+}
+
const char *help_unknown_cmd(const char *cmd)
{
int i, n, best_similarity = 0;
diff --git a/help.h b/help.h
index 56bc154..6c43452 100644
--- a/help.h
+++ b/help.h
@@ -26,4 +26,6 @@ int is_in_cmdlist(struct cmdnames *c, const char *s);
void list_commands(const char *title, struct cmdnames *main_cmds,
struct cmdnames *other_cmds);
+int is_git_command_or_alias(const char *cmd);
+
#endif /* HELP_H */
--
1.6.4.rc3.138.ga6b98.dirty
next prev parent reply other threads:[~2009-08-11 13:12 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-08-09 19:28 [PATCH 5/8] Add a config option for remotes to specify a foreign vcs Daniel Barkalow
2009-08-09 20:38 ` Johannes Schindelin
2009-08-10 1:15 ` Junio C Hamano
2009-08-10 4:30 ` Daniel Barkalow
2009-08-10 8:32 ` Johan Herland
2009-08-10 19:30 ` Daniel Barkalow
2009-08-11 10:10 ` [RFC/PATCH 0/6] Graceful handling of missing remote helpers Johan Herland
2009-08-11 10:10 ` [RFC/PATCH 1/6] Minor unrelated fixes Johan Herland
2009-08-11 10:10 ` [RFC/PATCH 2/6] transport_get(): Don't SEGFAULT on missing url Johan Herland
2009-08-12 22:24 ` Junio C Hamano
2009-08-12 23:39 ` Johan Herland
2009-08-11 10:10 ` [RFC/PATCH 3/6] Move setup of curl remote helper from transport.c to transport-helper.c Johan Herland
2009-08-11 12:23 ` Johannes Schindelin
2009-08-11 10:10 ` Johan Herland [this message]
2009-08-11 12:21 ` [RFC/PATCH 4/6] Add is_git_command_or_alias() for checking availability of a given git command Johannes Schindelin
2009-08-11 10:10 ` [RFC/PATCH 5/6] Let transport_helper_init() decide if a remote helper program can be used Johan Herland
2009-08-11 12:21 ` Johannes Schindelin
2009-08-11 23:28 ` Daniel Barkalow
2009-08-12 7:46 ` Jeff King
2009-08-12 16:21 ` Daniel Barkalow
2009-08-11 10:10 ` [RFC/PATCH 6/6] Add testcase to verify handling of missing remote helper programs Johan Herland
2009-08-11 5:12 ` [PATCH 5/8] Add a config option for remotes to specify a foreign vcs Junio C Hamano
2009-08-11 8:39 ` Johannes Schindelin
2009-08-10 8:47 ` Junio C Hamano
2009-08-11 15:31 ` Bert Wesarg
2009-08-11 16:20 ` Johannes Schindelin
2009-08-11 21:48 ` Jeff King
[not found] ` <20090812075914.6117@nanako3.lavabit.com>
2009-08-11 23:02 ` Jeff King
2009-08-12 0:14 ` Johannes Schindelin
2009-08-12 3:26 ` Junio C Hamano
2009-08-11 23:53 ` Johannes Schindelin
2009-08-12 7:45 ` Jeff King
2009-08-12 9:33 ` Jakub Narebski
2009-08-12 20:30 ` Junio C Hamano
2009-08-13 22:00 ` Jakub Narebski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1249985426-13726-5-git-send-email-johan@herland.net \
--to=johan@herland.net \
--cc=Johannes.Schindelin@gmx.de \
--cc=barkalow@iabervon.org \
--cc=benji@silverinsanity.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).