make alias lookup a public, procedural function
This converts git_config_alias to the public alias_lookup function. Because of the nature of our config parser, we still have to rely on setting static data. However, that interface is wrapped so that you can just say value = alias_lookup(key); Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
41eb33bd0c
commit
94351118c0
3
Makefile
3
Makefile
@ -327,7 +327,8 @@ LIB_OBJS = \
|
||||
alloc.o merge-file.o path-list.o help.o unpack-trees.o $(DIFF_OBJS) \
|
||||
color.o wt-status.o archive-zip.o archive-tar.o shallow.o utf8.o \
|
||||
convert.o attr.o decorate.o progress.o mailmap.o symlinks.o remote.o \
|
||||
transport.o bundle.o walker.o parse-options.o ws.o archive.o
|
||||
transport.o bundle.o walker.o parse-options.o ws.o archive.o \
|
||||
alias.o
|
||||
|
||||
BUILTIN_OBJS = \
|
||||
builtin-add.o \
|
||||
|
22
alias.c
Normal file
22
alias.c
Normal file
@ -0,0 +1,22 @@
|
||||
#include "cache.h"
|
||||
|
||||
static const char *alias_key;
|
||||
static char *alias_val;
|
||||
static int alias_lookup_cb(const char *k, const char *v)
|
||||
{
|
||||
if (!prefixcmp(k, "alias.") && !strcmp(k+6, alias_key)) {
|
||||
if (!v)
|
||||
return config_error_nonbool(k);
|
||||
alias_val = xstrdup(v);
|
||||
return 0;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
char *alias_lookup(const char *alias)
|
||||
{
|
||||
alias_key = alias;
|
||||
alias_val = NULL;
|
||||
git_config(alias_lookup_cb);
|
||||
return alias_val;
|
||||
}
|
2
cache.h
2
cache.h
@ -765,4 +765,6 @@ int pathspec_match(const char **spec, char *matched, const char *filename, int s
|
||||
int report_path_error(const char *ps_matched, const char **pathspec, int prefix_offset);
|
||||
void overlay_tree_on_cache(const char *tree_name, const char *prefix);
|
||||
|
||||
char *alias_lookup(const char *alias);
|
||||
|
||||
#endif /* CACHE_H */
|
||||
|
17
git.c
17
git.c
@ -87,19 +87,6 @@ static int handle_options(const char*** argv, int* argc, int* envchanged)
|
||||
return handled;
|
||||
}
|
||||
|
||||
static const char *alias_command;
|
||||
static char *alias_string;
|
||||
|
||||
static int git_alias_config(const char *var, const char *value)
|
||||
{
|
||||
if (!prefixcmp(var, "alias.") && !strcmp(var + 6, alias_command)) {
|
||||
if (!value)
|
||||
return config_error_nonbool(var);
|
||||
alias_string = xstrdup(value);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int split_cmdline(char *cmdline, const char ***argv)
|
||||
{
|
||||
int src, dst, count = 0, size = 16;
|
||||
@ -159,11 +146,13 @@ static int handle_alias(int *argcp, const char ***argv)
|
||||
const char *subdir;
|
||||
int count, option_count;
|
||||
const char** new_argv;
|
||||
const char *alias_command;
|
||||
char *alias_string;
|
||||
|
||||
subdir = setup_git_directory_gently(&nongit);
|
||||
|
||||
alias_command = (*argv)[0];
|
||||
git_config(git_alias_config);
|
||||
alias_string = alias_lookup(alias_command);
|
||||
if (alias_string) {
|
||||
if (alias_string[0] == '!') {
|
||||
if (*argcp > 1) {
|
||||
|
Loading…
Reference in New Issue
Block a user