[PATCH v3 03/10] config: Make git_config() more flexible.

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Felipe Contreras
Date: Tuesday, February 17, 2009 - 6:52 am

Currently git_config() returns an error if there is no repo config file
available (cwd is not a git repo); it will correctly parse the system
and global config files, but still return an error.

It doesn't affect anything else since almost nobody is checking for the
return code (with the exception of 'git remote update').

A reorganization in 'git config' would benefit from being able to
properly detect errors in git_config without the noise generated when
cwd is not a git repo.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
---
 config.c |   17 +++++++++++++----
 1 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/config.c b/config.c
index 7dc1b0f..68ce519 100644
--- a/config.c
+++ b/config.c
@@ -649,28 +649,37 @@ int git_config_global(void)
 
 int git_config(config_fn_t fn, void *data)
 {
-	int ret = 0;
+	int ret = 0, found = 0;
 	char *repo_config = NULL;
 	const char *home = NULL;
 
 	/* Setting $GIT_CONFIG makes git read _only_ the given config file. */
 	if (config_exclusive_filename)
 		return git_config_from_file(fn, config_exclusive_filename, data);
-	if (git_config_system() && !access(git_etc_gitconfig(), R_OK))
+	if (git_config_system() && !access(git_etc_gitconfig(), R_OK)) {
 		ret += git_config_from_file(fn, git_etc_gitconfig(),
 					    data);
+		found += 1;
+	}
 
 	home = getenv("HOME");
 	if (git_config_global() && home) {
 		char *user_config = xstrdup(mkpath("%s/.gitconfig", home));
-		if (!access(user_config, R_OK))
+		if (!access(user_config, R_OK)) {
 			ret += git_config_from_file(fn, user_config, data);
+			found += 1;
+		}
 		free(user_config);
 	}
 
 	repo_config = git_pathdup("config");
-	ret += git_config_from_file(fn, repo_config, data);
+	if (!access(repo_config, R_OK)) {
+		ret += git_config_from_file(fn, repo_config, data);
+		found += 1;
+	}
 	free(repo_config);
+	if (found == 0)
+		return -1;
 	return ret;
 }
 
-- 
1.6.1.3

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCH v3 01/10] config: Codestyle cleanups., Felipe Contreras, (Tue Feb 17, 6:52 am)
[PATCH v3 02/10] config: Cleanup editor action., Felipe Contreras, (Tue Feb 17, 6:52 am)
[PATCH v3 03/10] config: Make git_config() more flexible., Felipe Contreras, (Tue Feb 17, 6:52 am)
[PATCH v3 05/10] config: Reorganize get_color*., Felipe Contreras, (Tue Feb 17, 6:52 am)
[PATCH v3 06/10] config: Use parseopt., Felipe Contreras, (Tue Feb 17, 6:52 am)
[PATCH v3 09/10] config: Disallow multiple variable types., Felipe Contreras, (Tue Feb 17, 6:52 am)
Re: [PATCH v3 01/10] config: Codestyle cleanups., Sverre Rabbelier, (Tue Feb 17, 9:33 am)
Re: [PATCH v3 01/10] config: Codestyle cleanups., Felipe Contreras, (Wed Feb 18, 2:18 am)
Re: [PATCH v3 03/10] config: Make git_config() more flexible, Felipe Contreras, (Wed Feb 18, 2:30 pm)