Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.kernel.org/pub/scm/git/git.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2012-10-24 02:00:41 +0400
committerJeff King <peff@peff.net>2012-10-24 11:36:58 +0400
commite89558988305c3e912c0674faeb814e44563f7fd (patch)
treef90b1e93906bb0a3dc1b9f015fa6471b20f748ef /builtin/config.c
parent00b347d3aa094948d58dd1303aef7ba97ff09519 (diff)
git-config: use git_config_with_options
The git-config command has always implemented its own file lookup and parsing order. This was necessary because its duplicate-entry handling did not match the way git's internal callbacks worked. Now that this is no longer the case, we are free to reuse the existing parsing code. This saves us a few lines of code, but most importantly, it means that the logic for which files are examined is contained only in one place and cannot diverge. Signed-off-by: Jeff King <peff@peff.net>
Diffstat (limited to 'builtin/config.c')
-rw-r--r--builtin/config.c44
1 files changed, 2 insertions, 42 deletions
diff --git a/builtin/config.c b/builtin/config.c
index 77efa697d7..f881053cbb 100644
--- a/builtin/config.c
+++ b/builtin/config.c
@@ -165,22 +165,9 @@ static int collect_config(const char *key_, const char *value_, void *cb)
static int get_value(const char *key_, const char *regex_)
{
int ret = CONFIG_GENERIC_ERROR;
- char *global = NULL, *xdg = NULL, *repo_config = NULL;
- const char *system_wide = NULL, *local;
- struct config_include_data inc = CONFIG_INCLUDE_INIT;
- config_fn_t fn;
- void *data;
struct strbuf_list values = {0};
int i;
- local = given_config_file;
- if (!local) {
- local = repo_config = git_pathdup("config");
- if (git_config_system())
- system_wide = git_etc_gitconfig();
- home_config_paths(&global, &xdg, "config");
- }
-
if (use_key_regexp) {
char *tl;
@@ -229,32 +216,8 @@ static int get_value(const char *key_, const char *regex_)
}
}
- fn = collect_config;
- data = &values;
- if (respect_includes) {
- inc.fn = fn;
- inc.data = data;
- fn = git_config_include;
- data = &inc;
- }
-
- if (do_all && system_wide)
- git_config_from_file(fn, system_wide, data);
- if (do_all && xdg)
- git_config_from_file(fn, xdg, data);
- if (do_all && global)
- git_config_from_file(fn, global, data);
- if (do_all)
- git_config_from_file(fn, local, data);
- git_config_from_parameters(fn, data);
- if (!do_all && !values.nr)
- git_config_from_file(fn, local, data);
- if (!do_all && !values.nr && global)
- git_config_from_file(fn, global, data);
- if (!do_all && !values.nr && xdg)
- git_config_from_file(fn, xdg, data);
- if (!do_all && !values.nr && system_wide)
- git_config_from_file(fn, system_wide, data);
+ git_config_with_options(collect_config, &values,
+ given_config_file, respect_includes);
ret = !values.nr;
@@ -267,9 +230,6 @@ static int get_value(const char *key_, const char *regex_)
free(values.items);
free_strings:
- free(repo_config);
- free(global);
- free(xdg);
free(key);
if (key_regexp) {
regfree(key_regexp);