/* Manages interpreters for GDB, the GNU debugger.
- Copyright (C) 2000, 2002, 2003, 2007, 2008 Free Software Foundation, Inc.
+ Copyright (C) 2000, 2002, 2003, 2007, 2008, 2009, 2010
+ Free Software Foundation, Inc.
Written by Jim Ingham <jingham@apple.com> of Apple Computer, Inc.
#include "interps.h"
#include "completer.h"
#include "gdb_string.h"
-#include "gdb-events.h"
#include "gdb_assert.h"
#include "top.h" /* For command_loop. */
#include "exceptions.h"
/* Functions local to this file. */
static void initialize_interps (void);
-static char **interpreter_completer (char *text, char *word);
+static char **interpreter_completer (struct cmd_list_element *cmd,
+ char *text, char *word);
/* The magic initialization routine for this module. */
static struct interp *interp_list = NULL;
static struct interp *current_interpreter = NULL;
-static struct interp *top_level_interpreter = NULL;
+static struct interp *top_level_interpreter_ptr = NULL;
static int interpreter_initialized = 0;
/* If we already have an interpreter, then trying to
set top level interpreter is kinda pointless. */
gdb_assert (!top_level || !current_interpreter);
- gdb_assert (!top_level || !top_level_interpreter);
+ gdb_assert (!top_level || !top_level_interpreter_ptr);
if (current_interpreter != NULL)
{
current_interpreter = interp;
if (top_level)
- top_level_interpreter = interp;
+ top_level_interpreter_ptr = interp;
/* We use interpreter_p for the "set interpreter" variable, so we need
to make sure we have a malloc'ed copy for the set command to free. */
interp_set_quiet (struct interp *interp, int quiet)
{
int old_val = interp->quiet_p;
+
interp->quiet_p = quiet;
return old_val;
}
/*print_frame_more_info_hook = 0; */
deprecated_query_hook = 0;
deprecated_warning_hook = 0;
- deprecated_create_breakpoint_hook = 0;
- deprecated_delete_breakpoint_hook = 0;
- deprecated_modify_breakpoint_hook = 0;
deprecated_interactive_hook = 0;
deprecated_readline_begin_hook = 0;
deprecated_readline_hook = 0;
deprecated_readline_end_hook = 0;
deprecated_register_changed_hook = 0;
- deprecated_memory_changed_hook = 0;
deprecated_context_hook = 0;
deprecated_target_wait_hook = 0;
deprecated_call_command_hook = 0;
- deprecated_error_hook = 0;
deprecated_error_begin_hook = 0;
deprecated_command_loop_hook = 0;
- clear_gdb_event_hooks ();
}
/* This is a lazy init routine, called the first time the interpreter
unsigned int i;
int old_quiet, use_quiet;
- prules = buildargv (args);
- if (prules == NULL)
- {
- error (_("unable to parse arguments"));
- }
+ if (args == NULL)
+ error_no_arg (_("interpreter-exec command"));
+
+ prules = gdb_buildargv (args);
+ make_cleanup_freeargv (prules);
nrules = 0;
- if (prules != NULL)
- {
- for (trule = prules; *trule != NULL; trule++)
- {
- nrules++;
- }
- }
+ for (trule = prules; *trule != NULL; trule++)
+ nrules++;
if (nrules < 2)
error (_("usage: interpreter-exec <interpreter> [ <command> ... ]"));
for (i = 1; i < nrules; i++)
{
struct gdb_exception e = interp_exec (interp_to_use, prules[i]);
+
if (e.reason < 0)
{
interp_set (old_interp, 0);
/* List the possible interpreters which could complete the given text. */
static char **
-interpreter_completer (char *text, char *word)
+interpreter_completer (struct cmd_list_element *ignore, char *text, char *word)
{
int alloced = 0;
int textlen;
return matches;
}
-extern void *
+struct interp *
+top_level_interpreter (void)
+{
+ return top_level_interpreter_ptr;
+}
+
+void *
top_level_interpreter_data (void)
{
- gdb_assert (top_level_interpreter);
- return top_level_interpreter->data;
+ gdb_assert (top_level_interpreter_ptr);
+ return top_level_interpreter_ptr->data;
}
/* This just adds the "interpreter-exec" command. */