[PATCH v3 04/10] abspath: use strbuf_getcwd() to remember original working directory
- From
René Scharfe <l.s.r@web.de>
- Date
- Jul 28, 2014, 18:37 UTC
- Message-ID
- <53D69884.7000307@web.de>
- In-Reply-To
- <53D694A2.8030007@web.de>
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> --- Resent with corrected subject.
abspath.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/abspath.c b/abspath.c index ca33558..911e931 100644 --- a/abspath.c +++ b/abspath.c @@ -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; }
-- 2.0.2