diff options
author | René Scharfe <l.s.r@web.de> | 2014-07-28 20:27:34 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2014-08-26 11:06:04 -0700 |
commit | 251277acdf8c8dee59bdd0e9e7b7e3502226cf9d (patch) | |
tree | b35195fb71027f7d2b1afc2258fdd0094ab0a15a /abspath.c | |
parent | 7333ed1788b4f2b162a35003044d77a716732a1f (diff) | |
download | git-251277acdf8c8dee59bdd0e9e7b7e3502226cf9d.tar.gz |
abspath: use strbuf_getcwd() to remember original working directory
Store the original working directory in a strbuf instead of in a
fixed-sized buffer, in order to be able to handle longer paths.
Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'abspath.c')
-rw-r--r-- | abspath.c | 9 |
1 files changed, 5 insertions, 4 deletions
@@ -41,7 +41,7 @@ static const char *real_path_internal(const char *path, int die_on_error) * here so that we can chdir() back to it at the end of the * function: */ - char cwd[1024] = ""; + struct strbuf cwd = STRBUF_INIT; int buf_index = 1; @@ -80,7 +80,7 @@ static const char *real_path_internal(const char *path, int die_on_error) } if (*buf) { - if (!*cwd && !getcwd(cwd, sizeof(cwd))) { + if (!cwd.len && strbuf_getcwd(&cwd)) { if (die_on_error) die_errno("Could not get current working directory"); else @@ -142,8 +142,9 @@ static const char *real_path_internal(const char *path, int die_on_error) retval = buf; error_out: free(last_elem); - if (*cwd && chdir(cwd)) - die_errno("Could not change back to '%s'", cwd); + if (cwd.len && chdir(cwd.buf)) + die_errno("Could not change back to '%s'", cwd.buf); + strbuf_release(&cwd); return retval; } |