From: "Eli Zaretskii" <eliz@gnu.org>
To: bug-gdb@rich-paul.net
Cc: bug-gdb@gnu.org, gdb-patches@sources.redhat.com
Subject: Re: [RFA] Fix file name generation in edit_command (was: Ver 6.3 edit command failing)
Date: Wed, 27 Apr 2005 15:52:00 -0000 [thread overview]
Message-ID: <01c54b40$Blat.v2.4$be3bafe0@zahav.net.il> (raw)
In-Reply-To: <20050427143620.GA1686@nevyn.them.org> (message from Daniel Jacobowitz on Wed, 27 Apr 2005 10:36:20 -0400)
> 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);
next prev parent reply other threads:[~2005-04-27 15:52 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <E1DLM3u-0000IQ-Vj@lists.gnu.org>
2005-04-27 14:32 ` Eli Zaretskii
2005-04-27 14:36 ` Daniel Jacobowitz
2005-04-27 15:52 ` Eli Zaretskii [this message]
2005-04-27 17:43 ` Mark Kettenis
2005-04-28 7:10 ` Eli Zaretskii
2005-04-27 18:04 ` Daniel Jacobowitz
2005-04-28 7:05 ` Eli Zaretskii
2005-04-28 20:39 ` Eli Zaretskii
2005-04-28 20:42 ` Daniel Jacobowitz
2005-04-28 21:04 ` Eli Zaretskii
2005-04-28 21:18 ` Daniel Jacobowitz
2005-04-29 7:07 ` Eli Zaretskii
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='01c54b40$Blat.v2.4$be3bafe0@zahav.net.il' \
--to=eliz@gnu.org \
--cc=bug-gdb@gnu.org \
--cc=bug-gdb@rich-paul.net \
--cc=gdb-patches@sources.redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox