Index: gdb/interps.c |
diff --git a/gdb/interps.c b/gdb/interps.c |
index 698e26ee83583908a92c938414d2d8961c145ffb..cae3659178f0f34e30e229b10395183fe8a7280f 100644 |
--- a/gdb/interps.c |
+++ b/gdb/interps.c |
@@ -1,7 +1,6 @@ |
/* Manages interpreters for GDB, the GNU debugger. |
- Copyright (C) 2000, 2002-2003, 2007-2012 Free Software Foundation, |
- Inc. |
+ Copyright (C) 2000-2013 Free Software Foundation, Inc. |
Written by Jim Ingham <jingham@apple.com> of Apple Computer, Inc. |
@@ -37,7 +36,7 @@ |
#include "event-top.h" |
#include "interps.h" |
#include "completer.h" |
-#include "gdb_string.h" |
+#include <string.h> |
#include "gdb_assert.h" |
#include "top.h" /* For command_loop. */ |
#include "exceptions.h" |
@@ -102,6 +101,9 @@ interp_new (const char *name, const struct interp_procs *procs) |
new_interp->procs = procs; |
new_interp->inited = 0; |
+ /* Check for required procs. */ |
+ gdb_assert (procs->command_loop_proc != NULL); |
+ |
return new_interp; |
} |
@@ -210,8 +212,8 @@ interp_set (struct interp *interp, int top_level) |
{ |
if (!interp_quiet_p (interp)) |
{ |
- sprintf (buffer, "Switching to interpreter \"%.24s\".\n", |
- interp->name); |
+ xsnprintf (buffer, sizeof (buffer), |
+ "Switching to interpreter \"%.24s\".\n", interp->name); |
ui_out_text (current_uiout, buffer); |
} |
display_gdb_prompt (NULL); |
@@ -320,16 +322,9 @@ current_interp_display_prompt_p (void) |
void |
current_interp_command_loop (void) |
{ |
- /* Somewhat messy. For the moment prop up all the old ways of |
- selecting the command loop. `deprecated_command_loop_hook' |
- should be deprecated. */ |
- if (deprecated_command_loop_hook != NULL) |
- deprecated_command_loop_hook (); |
- else if (current_interpreter != NULL |
- && current_interpreter->procs->command_loop_proc != NULL) |
- current_interpreter->procs->command_loop_proc (current_interpreter->data); |
- else |
- cli_command_loop (); |
+ gdb_assert (current_interpreter != NULL); |
+ |
+ current_interpreter->procs->command_loop_proc (current_interpreter->data); |
} |
int |
@@ -352,20 +347,13 @@ interp_set_quiet (struct interp *interp, int quiet) |
/* interp_exec - This executes COMMAND_STR in the current |
interpreter. */ |
-int |
-interp_exec_p (struct interp *interp) |
-{ |
- return interp->procs->exec_proc != NULL; |
-} |
struct gdb_exception |
interp_exec (struct interp *interp, const char *command_str) |
{ |
- if (interp->procs->exec_proc != NULL) |
- { |
- return interp->procs->exec_proc (interp->data, command_str); |
- } |
- return exception_none; |
+ gdb_assert (interp->procs->exec_proc != NULL); |
+ |
+ return interp->procs->exec_proc (interp->data, command_str); |
} |
/* A convenience routine that nulls out all the common command hooks. |
@@ -387,7 +375,6 @@ clear_interpreter_hooks (void) |
deprecated_target_wait_hook = 0; |
deprecated_call_command_hook = 0; |
deprecated_error_begin_hook = 0; |
- deprecated_command_loop_hook = 0; |
} |
/* This is a lazy init routine, called the first time the interpreter |
@@ -410,12 +397,13 @@ interpreter_exec_cmd (char *args, int from_tty) |
unsigned int nrules; |
unsigned int i; |
int old_quiet, use_quiet; |
+ struct cleanup *cleanup; |
if (args == NULL) |
error_no_arg (_("interpreter-exec command")); |
prules = gdb_buildargv (args); |
- make_cleanup_freeargv (prules); |
+ cleanup = make_cleanup_freeargv (prules); |
nrules = 0; |
for (trule = prules; *trule != NULL; trule++) |
@@ -453,11 +441,14 @@ interpreter_exec_cmd (char *args, int from_tty) |
interp_set (old_interp, 0); |
interp_set_quiet (interp_to_use, use_quiet); |
interp_set_quiet (old_interp, old_quiet); |
+ |
+ do_cleanups (cleanup); |
} |
/* List the possible interpreters which could complete the given text. */ |
static VEC (char_ptr) * |
-interpreter_completer (struct cmd_list_element *ignore, char *text, char *word) |
+interpreter_completer (struct cmd_list_element *ignore, |
+ const char *text, const char *word) |
{ |
int textlen; |
VEC (char_ptr) *matches = NULL; |