aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Johnston <jjohnstn@redhat.com>2002-12-13 17:55:49 +0000
committerJeff Johnston <jjohnstn@redhat.com>2002-12-13 17:55:49 +0000
commitc04e0a08c9ced78d9a762969c584e64b5eca1d7a (patch)
tree298fe8023addbc7e510f87c3bb9d98985e4748d5
parent068890be59b98a2f5e269cbc070f6d3f36676aca (diff)
downloadgdb-c04e0a08c9ced78d9a762969c584e64b5eca1d7a.zip
gdb-c04e0a08c9ced78d9a762969c584e64b5eca1d7a.tar.gz
gdb-c04e0a08c9ced78d9a762969c584e64b5eca1d7a.tar.bz2
2002-12-13 Jeff Johnston <jjohnstn@redhat.com>
* defs.h (init_last_source_visited): New prototype. (add_path): Ditto. * source.c (add_path): New function that adds to a specified path. (mod_path): Change to call add_path. (init_last_source_visited): New function to allow interfaces to initialize static variable: last_source_visited. Part of fix for PR gdb/741. * Makefile.in: Add support for mi/mi-cmd-env.c.
-rw-r--r--gdb/ChangeLog11
-rw-r--r--gdb/Makefile.in8
-rw-r--r--gdb/defs.h6
-rw-r--r--gdb/source.c34
4 files changed, 53 insertions, 6 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index bd4af6a..374231b 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,14 @@
+2002-12-13 Jeff Johnston <jjohnstn@redhat.com>
+
+ * defs.h (init_last_source_visited): New prototype.
+ (add_path): Ditto.
+ * source.c (add_path): New function that adds to a specified path.
+ (mod_path): Change to call add_path.
+ (init_last_source_visited): New function to allow interfaces to
+ initialize static variable: last_source_visited. Part of fix
+ for PR gdb/741.
+ * Makefile.in: Add support for mi/mi-cmd-env.c.
+
2002-12-13 Andrew Cagney <ac131313@redhat.com>
* frame.h (frame_id_unwind): Declare.
diff --git a/gdb/Makefile.in b/gdb/Makefile.in
index 441f733..28dca01 100644
--- a/gdb/Makefile.in
+++ b/gdb/Makefile.in
@@ -168,12 +168,12 @@ SUBDIR_CLI_UNINSTALL=
#
SUBDIR_MI_OBS = \
mi-out.o mi-console.o \
- mi-cmds.o mi-cmd-var.o mi-cmd-break.o mi-cmd-stack.o \
+ mi-cmds.o mi-cmd-env.o mi-cmd-var.o mi-cmd-break.o mi-cmd-stack.o \
mi-cmd-disas.o \
mi-main.o mi-parse.o mi-getopt.o
SUBDIR_MI_SRCS = \
mi/mi-out.c mi/mi-console.c \
- mi/mi-cmds.c \
+ mi/mi-cmds.c mi/mi-cmd-env.c \
mi/mi-cmd-var.c mi/mi-cmd-break.c mi/mi-cmd-stack.c \
mi/mi-cmd-disas.c \
mi/mi-main.c mi/mi-parse.c mi/mi-getopt.c
@@ -2536,6 +2536,10 @@ mi-cmd-break.o: $(srcdir)/mi/mi-cmd-break.c $(defs_h) $(mi_cmds_h) \
mi-cmd-disas.o: $(srcdir)/mi/mi-cmd-disas.c $(defs_h) $(target_h) $(value_h) \
$(mi_cmds_h) $(mi_getopt_h) $(ui_out_h) $(gdb_string_h) $(disasm_h)
$(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/mi/mi-cmd-disas.c
+mi-cmd-env.o: $(srcdir)/mi/mi-cmd-env.c $(defs_h) $(mi_cmds_h) $(ui_out_h) \
+ $(mi_out_h) $(varobj_h) $(value_h) $(gdb_string_h) $(inferior.h) \
+ $(mi_getopt_h) $(environ_h) $(gdbcmd_h) $(top_h)
+ $(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/mi/mi-cmd-env.c
mi-cmd-stack.o: $(srcdir)/mi/mi-cmd-stack.c $(defs_h) $(target_h) $(frame_h) \
$(value_h) $(mi_cmds_h) $(ui_out_h) $(symtab_h)
$(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/mi/mi-cmd-stack.c
diff --git a/gdb/defs.h b/gdb/defs.h
index 3ac3d9a..9aa604c 100644
--- a/gdb/defs.h
+++ b/gdb/defs.h
@@ -572,10 +572,16 @@ extern int source_full_path_of (char *, char **);
extern void mod_path (char *, char **);
+extern void add_path (char *, char **, int);
+
extern void directory_command (char *, int);
+extern char *source_path;
+
extern void init_source_path (void);
+extern void init_last_source_visited (void);
+
extern char *symtab_to_filename (struct symtab *);
/* From exec.c */
diff --git a/gdb/source.c b/gdb/source.c
index be5d90c..c2991b5 100644
--- a/gdb/source.c
+++ b/gdb/source.c
@@ -358,6 +358,12 @@ init_source_path (void)
forget_cached_source_info ();
}
+void
+init_last_source_visited (void)
+{
+ last_source_visited = NULL;
+}
+
/* Add zero or more directories to the front of the source path. */
void
@@ -388,6 +394,18 @@ directory_command (char *dirname, int from_tty)
void
mod_path (char *dirname, char **which_path)
{
+ add_path (dirname, which_path, 1);
+}
+
+/* Workhorse of mod_path. Takes an extra argument to determine
+ if dirname should be parsed for separators that indicate multiple
+ directories. This allows for interfaces that pre-parse the dirname
+ and allow specification of traditional separator characters such
+ as space or tab. */
+
+void
+add_path (char *dirname, char **which_path, int parse_separators)
+{
char *old = *which_path;
int prefix = 0;
@@ -404,9 +422,16 @@ mod_path (char *dirname, char **which_path)
struct stat st;
{
- char *separator = strchr (name, DIRNAME_SEPARATOR);
- char *space = strchr (name, ' ');
- char *tab = strchr (name, '\t');
+ char *separator = NULL;
+ char *space = NULL;
+ char *tab = NULL;
+
+ if (parse_separators)
+ {
+ separator = strchr (name, DIRNAME_SEPARATOR);
+ space = strchr (name, ' ');
+ tab = strchr (name, '\t');
+ }
if (separator == 0 && space == 0 && tab == 0)
p = dirname = name + strlen (name);
@@ -537,7 +562,8 @@ mod_path (char *dirname, char **which_path)
tinybuf[0] = DIRNAME_SEPARATOR;
tinybuf[1] = '\0';
- /* If we have already tacked on a name(s) in this command, be sure they stay on the front as we tack on some more. */
+ /* If we have already tacked on a name(s) in this command, be sure they stay
+ on the front as we tack on some more. */
if (prefix)
{
char *temp, c;