diff options
author | Junio C Hamano <gitster@pobox.com> | 2014-07-28 15:18:11 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2014-07-28 15:18:11 -0700 |
commit | 00252a3cea0c502340451c967f816c7ca385f6b0 (patch) | |
tree | d4d94b9a8600349b4a434b08d812fa3e4923215a /git.c | |
parent | 583b61c1af1bac12d6b48b2583ad508b5ab9964c (diff) | |
parent | 81caab9bb380ff3e3069ecdee80353f59b1b87a9 (diff) | |
download | git-rs/strbuf-getcwd-2.1.tar.gz |
Merge branch 'rs/strbuf-getcwd' into HEADrs/strbuf-getcwd-2.1
* 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()
Diffstat (limited to 'git.c')
-rw-r--r-- | git.c | 13 |
1 files changed, 7 insertions, 6 deletions
@@ -20,7 +20,7 @@ const char git_more_info_string[] = static struct startup_info git_startup_info; static int use_pager = -1; -static char orig_cwd[PATH_MAX]; +static char *orig_cwd; static const char *env_names[] = { GIT_DIR_ENVIRONMENT, GIT_WORK_TREE_ENVIRONMENT, @@ -36,8 +36,7 @@ static void save_env(void) if (saved_environment) return; saved_environment = 1; - if (!getcwd(orig_cwd, sizeof(orig_cwd))) - die_errno("cannot getcwd"); + orig_cwd = xgetcwd(); for (i = 0; i < ARRAY_SIZE(env_names); i++) { orig_env[i] = getenv(env_names[i]); if (orig_env[i]) @@ -48,8 +47,9 @@ static void save_env(void) static void restore_env(void) { int i; - if (*orig_cwd && chdir(orig_cwd)) + if (orig_cwd && chdir(orig_cwd)) die_errno("could not move to %s", orig_cwd); + free(orig_cwd); for (i = 0; i < ARRAY_SIZE(env_names); i++) { if (orig_env[i]) setenv(env_names[i], orig_env[i], 1); @@ -161,9 +161,10 @@ static int handle_options(const char ***argv, int *argc, int *envchanged) if (envchanged) *envchanged = 1; } else if (!strcmp(cmd, "--bare")) { - static char git_dir[PATH_MAX+1]; + char *cwd = xgetcwd(); is_bare_repository_cfg = 1; - setenv(GIT_DIR_ENVIRONMENT, getcwd(git_dir, sizeof(git_dir)), 0); + setenv(GIT_DIR_ENVIRONMENT, cwd, 0); + free(cwd); setenv(GIT_IMPLICIT_WORK_TREE_ENVIRONMENT, "0", 1); if (envchanged) *envchanged = 1; |