summaryrefslogtreecommitdiff
path: root/src/config.c
diff options
context:
space:
mode:
authorVicent Marti <tanoku@gmail.com>2011-05-20 02:58:33 +0300
committerVicent Marti <tanoku@gmail.com>2011-05-20 02:58:33 +0300
commit8adbf2ed12b7067660a4012f54d76650663edee1 (patch)
treefab3915f0b1c1bb13d202387f6aa5263e1015a7c /src/config.c
parent274f2c213fdb2402b586827e6e6e27b2e055101c (diff)
downloadlibgit2-8adbf2ed12b7067660a4012f54d76650663edee1.tar.gz
Rewrite `git_config_open_global`
We have a lot of utility methods that make path building trivial. Use them!
Diffstat (limited to 'src/config.c')
-rw-r--r--src/config.c32
1 files changed, 6 insertions, 26 deletions
diff --git a/src/config.c b/src/config.c
index 0ade5cf97..3b6c23b18 100644
--- a/src/config.c
+++ b/src/config.c
@@ -72,36 +72,16 @@ int git_config_open_bare(git_config **out, const char *path)
int git_config_open_global(git_config **out)
{
- char *home = NULL, *filename = NULL;
- const char *gitconfig = ".gitconfig";
- int filename_len, ret, error;
+ char full_path[GIT_PATH_MAX];
+ const char *home;
- home = git__strdup(getenv("HOME"));
+ home = getenv("HOME");
if (home == NULL)
- return GIT_ENOMEM;
-
- filename_len = strlen(home) + strlen(gitconfig) + 1;
- filename = git__malloc(filename_len + 1);
- if (filename == NULL) {
- error = GIT_ENOMEM;
- goto out;
- }
+ return git__throw(GIT_EOSERR, "Failed to find $HOME variable");
- ret = snprintf(filename, filename_len, "%s/%s", home, gitconfig);
- if (ret < 0) {
- error = git__throw(GIT_EOSERR, "Failed to build global filename. OS err: %s", strerror(errno));
- goto out;
- } else if (ret >= filename_len) {
- error = git__throw(GIT_ERROR, "Failed to build global filename. Length calulation wrong");
- goto out;
- }
-
- error = git_config_open_bare(out, filename);
+ git__joinpath(full_path, home, GIT_CONFIG_FILENAME);
- out:
- free(home);
- free(filename);
- return error;
+ return git_config_open_bare(out, filename);
}
void git_config_free(git_config *cfg)