Index: gdb/tui/tui-source.c |
diff --git a/gdb/tui/tui-source.c b/gdb/tui/tui-source.c |
index 9ba9b1d0f0ef3870f463d2e619d78dc90566cb4a..a1b533e4e838d82ebdb81266b13b10bc8f677251 100644 |
--- a/gdb/tui/tui-source.c |
+++ b/gdb/tui/tui-source.c |
@@ -1,6 +1,6 @@ |
/* TUI display source window. |
- Copyright (C) 1998-2004, 2007-2012 Free Software Foundation, Inc. |
+ Copyright (C) 1998-2013 Free Software Foundation, Inc. |
Contributed by Hewlett-Packard Company. |
@@ -35,7 +35,7 @@ |
#include "tui/tui-winsource.h" |
#include "tui/tui-source.h" |
-#include "gdb_string.h" |
+#include <string.h> |
#include "gdb_curses.h" |
/* Function to display source in the source window. */ |
@@ -46,7 +46,7 @@ tui_set_source_content (struct symtab *s, |
{ |
enum tui_status ret = TUI_FAILURE; |
- if (s != (struct symtab *) NULL && s->filename != (char *) NULL) |
+ if (s != (struct symtab *) NULL) |
{ |
FILE *stream; |
int i, desc, c, line_width, nlines; |
@@ -63,9 +63,10 @@ tui_set_source_content (struct symtab *s, |
{ |
if (!noerror) |
{ |
- char *name = alloca (strlen (s->filename) + 100); |
+ const char *filename = symtab_to_filename_for_display (s); |
+ char *name = alloca (strlen (filename) + 100); |
- sprintf (name, "%s:%d", s->filename, line_no); |
+ sprintf (name, "%s:%d", filename, line_no); |
print_sys_errmsg (name, errno); |
} |
ret = TUI_FAILURE; |
@@ -78,14 +79,16 @@ tui_set_source_content (struct symtab *s, |
if (line_no < 1 || line_no > s->nlines) |
{ |
close (desc); |
- printf_unfiltered ( |
- "Line number %d out of range; %s has %d lines.\n", |
- line_no, s->filename, s->nlines); |
+ printf_unfiltered ("Line number %d out of range; " |
+ "%s has %d lines.\n", |
+ line_no, |
+ symtab_to_filename_for_display (s), |
+ s->nlines); |
} |
else if (lseek (desc, s->line_charpos[line_no - 1], 0) < 0) |
{ |
close (desc); |
- perror_with_name (s->filename); |
+ perror_with_name (symtab_to_filename_for_display (s)); |
} |
else |
{ |
@@ -94,14 +97,14 @@ tui_set_source_content (struct symtab *s, |
= tui_locator_win_info_ptr (); |
struct tui_source_info *src |
= &TUI_SRC_WIN->detail.source_info; |
+ const char *s_filename = symtab_to_filename_for_display (s); |
if (TUI_SRC_WIN->generic.title) |
xfree (TUI_SRC_WIN->generic.title); |
- TUI_SRC_WIN->generic.title = xstrdup (s->filename); |
+ TUI_SRC_WIN->generic.title = xstrdup (s_filename); |
- if (src->filename) |
- xfree (src->filename); |
- src->filename = xstrdup (s->filename); |
+ xfree (src->fullname); |
+ src->fullname = xstrdup (symtab_to_fullname (s)); |
/* Determine the threshold for the length of the |
line and the offset to start the display. */ |
@@ -150,8 +153,8 @@ tui_set_source_content (struct symtab *s, |
cur_line_no; |
element->which_element.source.is_exec_point = |
(filename_cmp (((struct tui_win_element *) |
- locator->content[0])->which_element.locator.file_name, |
- s->filename) == 0 |
+ locator->content[0])->which_element.locator.full_name, |
+ symtab_to_fullname (s)) == 0 |
&& cur_line_no == ((struct tui_win_element *) |
locator->content[0])->which_element.locator.line_no); |
if (c != EOF) |
@@ -332,13 +335,14 @@ tui_show_symtab_source (struct gdbarch *gdbarch, struct symtab *s, |
/* Answer whether the source is currently displayed in the source |
window. */ |
int |
-tui_source_is_displayed (char *fname) |
+tui_source_is_displayed (const char *fullname) |
{ |
- return (TUI_SRC_WIN->generic.content_in_use |
+ return (TUI_SRC_WIN != NULL |
+ && TUI_SRC_WIN->generic.content_in_use |
&& (filename_cmp (((struct tui_win_element *) |
(tui_locator_win_info_ptr ())-> |
- content[0])->which_element.locator.file_name, |
- fname) == 0)); |
+ content[0])->which_element.locator.full_name, |
+ fullname) == 0)); |
} |