Merge branch 'rs/strbuf-getcwd'
Reduce the use of fixed sized buffer passed to getcwd() calls by introducing xgetcwd() helper. * rs/strbuf-getcwd: use strbuf_add_absolute_path() to add absolute paths abspath: convert absolute_path() to strbuf use xgetcwd() to set $GIT_DIR use xgetcwd() to get the current directory or die wrapper: add xgetcwd() abspath: convert real_path_internal() to strbuf abspath: use strbuf_getcwd() to remember original working directory setup: convert setup_git_directory_gently_1 et al. to strbuf unix-sockets: use strbuf_getcwd() strbuf: add strbuf_getcwd()
This commit is contained in:
@ -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.
|
||||
@ -535,10 +537,9 @@ int cmd_init_db(int argc, const char **argv, const char *prefix)
|
||||
usage(init_db_usage[0]);
|
||||
}
|
||||
if (is_bare_repository_cfg == 1) {
|
||||
static char git_dir[PATH_MAX+1];
|
||||
|
||||
setenv(GIT_DIR_ENVIRONMENT,
|
||||
getcwd(git_dir, sizeof(git_dir)), argc > 0);
|
||||
char *cwd = xgetcwd();
|
||||
setenv(GIT_DIR_ENVIRONMENT, cwd, argc > 0);
|
||||
free(cwd);
|
||||
}
|
||||
|
||||
if (init_shared_repository != -1)
|
||||
@ -572,11 +573,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(work_tree);
|
||||
else
|
||||
|
Reference in New Issue
Block a user