From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 125671 invoked by alias); 20 Sep 2017 12:24:48 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 123569 invoked by uid 89); 20 Sep 2017 12:24:47 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-26.9 required=5.0 tests=BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RP_MATCHES_RCVD,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=Hx-languages-length:1854 X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 20 Sep 2017 12:24:46 +0000 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 0F26581DFA for ; Wed, 20 Sep 2017 12:24:45 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 0F26581DFA Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=palves@redhat.com Received: from [127.0.0.1] (ovpn04.gateway.prod.ext.ams2.redhat.com [10.39.146.4]) by smtp.corp.redhat.com (Postfix) with ESMTP id F21056063E; Wed, 20 Sep 2017 12:24:41 +0000 (UTC) Subject: Re: [PATCH v2 2/5] Get rid of "gdb_dirbuf" and use "getcwd (NULL, 0)" To: Sergio Durigan Junior , GDB Patches References: <20170912042325.14927-1-sergiodj@redhat.com> <20170919042842.9210-1-sergiodj@redhat.com> <20170919042842.9210-3-sergiodj@redhat.com> From: Pedro Alves Message-ID: <8502d25b-7546-f962-af8f-46bc443d771c@redhat.com> Date: Wed, 20 Sep 2017 12:24:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 MIME-Version: 1.0 In-Reply-To: <20170919042842.9210-3-sergiodj@redhat.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit X-SW-Source: 2017-09/txt/msg00484.txt.bz2 On 09/19/2017 05:28 AM, Sergio Durigan Junior wrote: > Currently we have "current_directory" and "gdb_dirbuf" globals, which > means that we basically have two possible places to consult when we > want to know GDB's current working directory. > > This is not ideal and can lead to confusion. Moreover, the way we're > using "gdb_difbuf" along with "getcwd" is problematic because we > declare the buffer with "1024" elements hardcoded, which does not take > into account longer pathnames that are possible in many filesystems. > Using "PATH_MAX" would also not be a solution because of portability > problems. Therefore, the best solution is to rely on the fact that > "getcwd (NULL, 0)" will "do the right thing" and return a > heap-allocated string containing the full path. With the new "getcwd" > module from gnulib, it is now possible to do that without worrying > about breaking some target. s/target/host/ > --- a/gdb/cli/cli-cmds.c > +++ b/gdb/cli/cli-cmds.c > @@ -382,13 +382,16 @@ pwd_command (char *args, int from_tty) > { > if (args) > error (_("The \"pwd\" command does not take an argument: %s"), args); > - if (! getcwd (gdb_dirbuf, sizeof (gdb_dirbuf))) > + > + gdb::unique_xmalloc_ptr cwd (getcwd (NULL, 0)); > + > + if (cwd.get () == NULL) No need for get() here: if (cwd == NULL) > diff --git a/gdb/mi/mi-cmd-env.c b/gdb/mi/mi-cmd-env.c > index 977b6e274d..1e4c09352f 100644 > --- a/gdb/mi/mi-cmd-env.c > +++ b/gdb/mi/mi-cmd-env.c > @@ -73,12 +73,12 @@ mi_cmd_env_pwd (const char *command, char **argv, int argc) > } > > /* Otherwise the mi level is 2 or higher. */ > - > - if (! getcwd (gdb_dirbuf, sizeof (gdb_dirbuf))) > + gdb::unique_xmalloc_ptr cwd (getcwd (NULL, 0)); > + if (cwd.get () == NULL) Ditto. Otherwise OK. Thanks, Pedro Alves