/* TUI display source window.
- Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007, 2008
- Free Software Foundation, Inc.
+ Copyright (C) 1998-2013 Free Software Foundation, Inc.
Contributed by Hewlett-Packard Company.
#include "breakpoint.h"
#include "source.h"
#include "symtab.h"
+#include "objfiles.h"
+#include "filenames.h"
#include "tui/tui.h"
#include "tui/tui-data.h"
{
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;
if (!noerror)
{
char *name = alloca (strlen (s->filename) + 100);
+
sprintf (name, "%s:%d", s->filename, line_no);
print_sys_errmsg (name, errno);
}
else
{
int offset, cur_line_no, cur_line, cur_len, threshold;
- struct tui_gen_win_info *locator = tui_locator_win_info_ptr ();
- struct tui_source_info *src = &TUI_SRC_WIN->detail.source_info;
+ struct tui_gen_win_info *locator
+ = tui_locator_win_info_ptr ();
+ struct tui_source_info *src
+ = &TUI_SRC_WIN->detail.source_info;
if (TUI_SRC_WIN->generic.title)
xfree (TUI_SRC_WIN->generic.title);
stream = fdopen (desc, FOPEN_RT);
clearerr (stream);
cur_line = 0;
+ src->gdbarch = get_objfile_arch (s->objfile);
src->start_line_or_addr.loa = LOA_LINE;
cur_line_no = src->start_line_or_addr.u.line_no = line_no;
if (offset > 0)
(threshold + 1) * sizeof (char));
while (cur_line < nlines)
{
- struct tui_win_element *element = (struct tui_win_element *)
- TUI_SRC_WIN->generic.content[cur_line];
+ struct tui_win_element *element
+ = (struct tui_win_element *)
+ TUI_SRC_WIN->generic.content[cur_line];
/* Get the first character in the line. */
c = fgetc (stream);
/* Init the line with the line number. */
sprintf (src_line, "%-6d", cur_line_no);
cur_len = strlen (src_line);
- i = cur_len -
- ((cur_len / tui_default_tab_len ()) * tui_default_tab_len ());
+ i = cur_len - ((cur_len / tui_default_tab_len ())
+ * tui_default_tab_len ());
while (i < tui_default_tab_len ())
{
src_line[cur_len] = ' ';
element->which_element.source.line_or_addr.u.line_no =
cur_line_no;
element->which_element.source.is_exec_point =
- (strcmp (((struct tui_win_element *)
- locator->content[0])->which_element.locator.file_name,
- s->filename) == 0
+ (filename_cmp (((struct tui_win_element *)
+ locator->content[0])->which_element.locator.file_name,
+ s->filename) == 0
&& cur_line_no == ((struct tui_win_element *)
locator->content[0])->which_element.locator.line_no);
if (c != EOF)
overwrite our buffer. */
if (c == '\t')
{
- int j, max_tab_len = tui_default_tab_len ();
+ int j, max_tab_len
+ = tui_default_tab_len ();
- for (j = i - ((i / max_tab_len) * max_tab_len);
+ for (j = i - ((i / max_tab_len)
+ * max_tab_len);
j < max_tab_len
&& i < threshold;
i++, j++)
/* Now copy the line taking the offset into
account. */
if (strlen (src_line) > offset)
- strcpy (((struct tui_win_element *) TUI_SRC_WIN->generic.content[
- cur_line])->which_element.source.line,
+ strcpy (((struct tui_win_element *)
+ TUI_SRC_WIN->generic.content[cur_line])->which_element.source.line,
&src_line[offset]);
else
((struct tui_win_element *)
struct tui_win_element *element =
(struct tui_win_element *) win_info->generic.content[curr_line];
+
element->which_element.source.line_or_addr.loa = LOA_LINE;
element->which_element.source.line_or_addr.u.line_no = 0;
element->which_element.source.is_exec_point = FALSE;
/* Function to display source in the source window. This function
initializes the horizontal scroll to 0. */
void
-tui_show_symtab_source (struct symtab *s,
+tui_show_symtab_source (struct gdbarch *gdbarch, struct symtab *s,
struct tui_line_or_address line,
int noerror)
{
TUI_SRC_WIN->detail.source_info.horizontal_offset = 0;
- tui_update_source_window_as_is (TUI_SRC_WIN, s, line, noerror);
+ tui_update_source_window_as_is (TUI_SRC_WIN, gdbarch, s, line, noerror);
}
int
tui_source_is_displayed (char *fname)
{
- return (TUI_SRC_WIN->generic.content_in_use
- && (strcmp (((struct tui_win_element *) (tui_locator_win_info_ptr ())->
- content[0])->which_element.locator.file_name, fname) == 0));
+ 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));
}
if (l.u.line_no > s->nlines)
/* line = s->nlines - win_info->generic.content_size + 1; */
/* elz: fix for dts 23398. */
- l.u.line_no = content[0]->which_element.source.line_or_addr.u.line_no;
+ l.u.line_no
+ = content[0]->which_element.source.line_or_addr.u.line_no;
}
else
{