diff options
author | René Scharfe <l.s.r@web.de> | 2014-07-28 20:30:39 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2014-08-26 11:06:06 -0700 |
commit | 56b9f6e738af6f5238f57a29e96103cf61e3f8cd (patch) | |
tree | d6386cc8e082c60423ecd3a16b2e49969ced25fc /builtin | |
parent | aa14e980fff55e090dd42174ab4f37fe4b3dfa1e (diff) | |
download | git-56b9f6e738af6f5238f57a29e96103cf61e3f8cd.tar.gz git-56b9f6e738af6f5238f57a29e96103cf61e3f8cd.tar.xz |
use xgetcwd() to get the current directory or die
Convert several calls of getcwd() and die() to use xgetcwd() instead.
This way we get rid of fixed-size buffers (which can be too small
depending on the used file system) and gain consistent error messages.
Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin')
-rw-r--r-- | builtin/init-db.c | 17 | ||||
-rw-r--r-- | builtin/rev-parse.c | 6 |
2 files changed, 11 insertions, 12 deletions
diff --git a/builtin/init-db.c b/builtin/init-db.c index 56f85e239..f6dd1727e 100644 --- a/builtin/init-db.c +++ b/builtin/init-db.c @@ -426,8 +426,9 @@ int init_db(const char *template_dir, unsigned int flags) static int guess_repository_type(const char *git_dir) { - char cwd[PATH_MAX]; const char *slash; + char *cwd; + int cwd_is_git_dir; /* * "GIT_DIR=. git init" is always bare. @@ -435,9 +436,10 @@ static int guess_repository_type(const char *git_dir) */ if (!strcmp(".", git_dir)) return 1; - if (!getcwd(cwd, sizeof(cwd))) - die_errno(_("cannot tell cwd")); - if (!strcmp(git_dir, cwd)) + cwd = xgetcwd(); + cwd_is_git_dir = !strcmp(git_dir, cwd); + free(cwd); + if (cwd_is_git_dir) return 1; /* * "GIT_DIR=.git or GIT_DIR=something/.git is usually not. @@ -572,11 +574,8 @@ int cmd_init_db(int argc, const char **argv, const char *prefix) git_work_tree_cfg = xstrdup(real_path(rel)); free(rel); } - if (!git_work_tree_cfg) { - git_work_tree_cfg = xcalloc(PATH_MAX, 1); - if (!getcwd(git_work_tree_cfg, PATH_MAX)) - die_errno (_("Cannot access current working directory")); - } + if (!git_work_tree_cfg) + git_work_tree_cfg = xgetcwd(); if (work_tree) set_git_work_tree(real_path(work_tree)); else diff --git a/builtin/rev-parse.c b/builtin/rev-parse.c index 1a6122d3a..a88123ad3 100644 --- a/builtin/rev-parse.c +++ b/builtin/rev-parse.c @@ -734,7 +734,7 @@ int cmd_rev_parse(int argc, const char **argv, const char *prefix) } if (!strcmp(arg, "--git-dir")) { const char *gitdir = getenv(GIT_DIR_ENVIRONMENT); - static char cwd[PATH_MAX]; + char *cwd; int len; if (gitdir) { puts(gitdir); @@ -744,10 +744,10 @@ int cmd_rev_parse(int argc, const char **argv, const char *prefix) puts(".git"); continue; } - if (!getcwd(cwd, PATH_MAX)) - die_errno("unable to get current working directory"); + cwd = xgetcwd(); len = strlen(cwd); printf("%s%s.git\n", cwd, len && cwd[len-1] != '/' ? "/" : ""); + free(cwd); continue; } if (!strcmp(arg, "--resolve-git-dir")) { |