🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: gnu.gdb.bug
Article #1267

Re: [RFA] Fix file name generation in edit_command (was: Ver 6.3 edit command failing)

#1267
From: Eli Zaretskii
Date: Wed, 27 Apr 2005 15:48
68 lines
4158 bytes
> Date: Wed, 27 Apr 2005 10:36:20 -0400
> From: Daniel Jacobowitz <drow@false.org>
> Cc: bug-gdb@rich-paul.net, bug-gdb@gnu.org, gdb-patches@sources.redhat.com
> 
> I can simplify this a whole lot further :-)
> 
> You should use symtab_to_fullname.  Then all the fallback logic is
> unnecessary; if symtab_to_fullname fails, GDB does not know where the
> file is.

Thanks for the tip.  Here's the revised patch:


2005-04-27  Eli Zaretskii  <eliz@gnu.org>

	* cli/cli-cmds.c (edit_command): If symtab->fullname is not yet
	set, use symtab_to_fullname , instead of trying to do its job.

--- gdb/cli/cli-cmds.c~0	2005-03-26 16:18:14.000000000 +0300
+++ gdb/cli/cli-cmds.c	2005-04-27 18:37:34.000000000 +0300
@@ -554,7 +554,7 @@ edit_command (char *arg, int from_tty)
   int cmdlen, log10;
   unsigned m;
   char *editor;
-  char *p;
+  char *p, *fn;
 
   /* Pull in the current default source line if necessary */
   if (arg == 0)
@@ -627,23 +627,26 @@ edit_command (char *arg, int from_tty)
 
   if ((editor = (char *) getenv ("EDITOR")) == NULL)
       editor = "/bin/ex";
-  
+
   /* Approximate base-10 log of line to 1 unit for digit count */
   for(log10=32, m=0x80000000; !(sal.line & m) && log10>0; log10--, m=m>>1);
   log10 = 1 + (int)((log10 + (0 == ((m-1) & sal.line)))/3.32192809);
 
-  cmdlen = strlen(editor) + 1
-         + (NULL == sal.symtab->dirname ? 0 : strlen(sal.symtab->dirname) + 1)
-	 + (NULL == sal.symtab->filename? 0 : strlen(sal.symtab->filename)+ 1)
-	 + log10 + 2;
-  
+  /* If we don't already know the full absolute file name of the
+     source file, find it now.  */
+  if (NULL == sal.symtab->fullname)
+    {
+      fn = symtab_to_fullname (sal.symtab);
+      if (NULL == fn)
+	fn = "unknown";
+    }
+  else
+    fn = sal.symtab->fullname;
+
+  /*         $EDITOR      blank  +NN  blank    file      \0 */
+  cmdlen = strlen(editor) + 1 + log10 + 2 +  strlen(fn) + 1;
   p = xmalloc(cmdlen);
-  sprintf(p,"%s +%d %s%s",editor,sal.line,
-     (NULL == sal.symtab->dirname ? "./" :
-        (NULL != sal.symtab->filename && *(sal.symtab->filename) != '/') ?
-	   sal.symtab->dirname : ""),
-     (NULL == sal.symtab->filename ? "unknown" : sal.symtab->filename)
-  );
+  sprintf (p, "%s +%d %s", editor, sal.line, fn);
   shell_escape(p, from_tty);
 
   xfree(p);
Technical Details
Message-ID: <mailman.3190.1114617667.2895.bug-gdb@gnu.org>
Path: arc1-ca.pugleaf.net!g2news1.google.com!news3.google.com!newsfeed.stanford.edu!shelby.stanford.edu!not-for-mail
References: <E1DLM3u-0000IQ-Vj@lists.gnu.org> <01c54b35$Blat.v2.4$c3f52520@zahav.net.il> <20050427143620.GA1686@nevyn.them.org>

Show Full Headers
Complete Article Headers
X-Google-Thread: f5053,f951753e39b033fe
X-Google-Attributes: gidf5053,public
X-Google-Language: ENGLISH,ASCII-7-bit
Path: arc1-ca.pugleaf.net!g2news1.google.com!news3.google.com!newsfeed.stanford.edu!shelby.stanford.edu!not-for-mail
From: "Eli Zaretskii" <eliz@gnu.org>
Newsgroups: gnu.gdb.bug
Subject: Re: [RFA] Fix file name generation in edit_command (was: Ver 6.3
 edit command failing)
Date: Wed, 27 Apr 2005 18:48:46 +0300
Lines: 70
Sender: halo1@zahav.net.il
Approved: bug-gdb@gnu.org
Message-ID: <mailman.3190.1114617667.2895.bug-gdb@gnu.org>
References: <E1DLM3u-0000IQ-Vj@lists.gnu.org>
 <01c54b35$Blat.v2.4$c3f52520@zahav.net.il>
 <20050427143620.GA1686@nevyn.them.org>
Reply-To: Eli Zaretskii <eliz@gnu.org>
NNTP-Posting-Host: lists.gnu.org
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7BIT
X-Trace: news.Stanford.EDU 1114617625 26605 199.232.76.165 (27 Apr 2005 16:00:25 GMT)
X-Complaints-To: news@news.stanford.edu
Cc: gdb-patches@sources.redhat.com, bug-gdb@gnu.org
To: bug-gdb@rich-paul.net
Envelope-to: bug-gdb@gnu.org
X-Mailer: emacs 22.0.50 (via feedmail 8 I) and Blat ver 2.4
In-reply-to: <20050427143620.GA1686@nevyn.them.org> (message from Daniel
 Jacobowitz on Wed, 27 Apr 2005 10:36:20 -0400)
X-BeenThere: bug-gdb@gnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "Bug reports for GDB, the GNU debugger" <bug-gdb.gnu.org>
List-Unsubscribe: <http://lists.gnu.org/mailman/listinfo/bug-gdb>,
 <mailto:bug-gdb-request@gnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/bug-gdb>
List-Post: <mailto:bug-gdb@gnu.org>
List-Help: <mailto:bug-gdb-request@gnu.org?subject=help>
List-Subscribe: <http://lists.gnu.org/mailman/listinfo/bug-gdb>,
 <mailto:bug-gdb-request@gnu.org?subject=subscribe>