From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?B?UmVuw6kgU2NoYXJmZQ==?= Subject: [PATCH 04/10] abspath: use strbuf_getcwd() to remember original working directory Date: Mon, 28 Jul 2014 20:27:34 +0200 Message-ID: <53D69616.60303@web.de> References: <53D694A2.8030007@web.de> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Cc: Karsten Blees , Junio C Hamano , =?UTF-8?B?Tmd1eeG7hW4gVGjDoWkgTmfhu41jIER1eQ==?= , Jeff King To: Git Mailing List X-From: git-owner@vger.kernel.org Mon Jul 28 20:27:55 2014 Return-path: Envelope-to: gcvg-git-2@plane.gmane.org Received: from vger.kernel.org ([209.132.180.67]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1XBpeJ-000366-Iw for gcvg-git-2@plane.gmane.org; Mon, 28 Jul 2014 20:27:51 +0200 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751393AbaG1S1s (ORCPT ); Mon, 28 Jul 2014 14:27:48 -0400 Received: from mout.web.de ([212.227.17.11]:52444 "EHLO mout.web.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750933AbaG1S1r (ORCPT ); Mon, 28 Jul 2014 14:27:47 -0400 Received: from [192.168.178.27] ([79.253.140.83]) by smtp.web.de (mrweb102) with ESMTPSA (Nemesis) id 0MWRzK-1X0NLB2D9e-00Xb6L; Mon, 28 Jul 2014 20:27:35 +0200 User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.0 In-Reply-To: <53D694A2.8030007@web.de> X-Provags-ID: V03:K0:HAGcIPDhkIAcINQ5Gu9zpd0AKHWCIqE9Bt7cpKSKDpRLOxAJf/Y cwtbQgAAs4aT/fZtnY3jMx8DX40w/P0xTm7WtqefcK4nD1e4lvkbr3dUa9F1du7jcKxqJQn byGxV4l+XNvXzE0cB6YUfMPZR/KyDyfoEndfWmvVeH3oDvDg6SCp67OUD1SLQxXxUt53JMv 7TqI2gIEtA+ZdsQYD92Gg== Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Archived-At: 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 --- 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