X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Finterps.c;h=17b0982fe86a8912b07cbe9176bd1e0ead8d7a1b;hb=b61121178ec07f9da1242e439fe1a23a314ad30e;hp=8ec9744fdfe5e7d2c4e0d88bb43df1a6876c25f3;hpb=da505cff6e29b18244dc9f6886bcb4d436263dee;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/interps.c b/gdb/interps.c index 8ec9744fdf..17b0982fe8 100644 --- a/gdb/interps.c +++ b/gdb/interps.c @@ -1,6 +1,6 @@ /* Manages interpreters for GDB, the GNU debugger. - Copyright (C) 2000-2018 Free Software Foundation, Inc. + Copyright (C) 2000-2019 Free Software Foundation, Inc. Written by Jim Ingham of Apple Computer, Inc. @@ -38,6 +38,7 @@ #include "completer.h" #include "top.h" /* For command_loop. */ #include "continuations.h" +#include "main.h" /* Each UI has its own independent set of interpreters. */ @@ -78,13 +79,15 @@ static struct interp *interp_lookup_existing (struct ui *ui, const char *name); interp::interp (const char *name) + : m_name (xstrdup (name)) { - this->name = xstrdup (name); this->inited = false; } interp::~interp () -{} +{ + xfree (m_name); +} /* An interpreter factory. Maps an interpreter name to the factory function that instantiates an interpreter by that name. */ @@ -129,7 +132,7 @@ interp_add (struct ui *ui, struct interp *interp) { struct ui_interp_info *ui_interp = get_interp_info (ui); - gdb_assert (interp_lookup_existing (ui, interp->name) == NULL); + gdb_assert (interp_lookup_existing (ui, interp->name ()) == NULL); interp->next = ui_interp->interp_list; ui_interp->interp_list = interp; @@ -170,11 +173,11 @@ interp_set (struct interp *interp, bool top_level) /* 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. */ if (interpreter_p != NULL - && strcmp (interp->name, interpreter_p) != 0) + && strcmp (interp->name (), interpreter_p) != 0) { xfree (interpreter_p); - interpreter_p = xstrdup (interp->name); + interpreter_p = xstrdup (interp->name ()); } /* Run the init proc. */ @@ -206,7 +209,7 @@ interp_lookup_existing (struct ui *ui, const char *name) interp != NULL; interp = interp->next) { - if (strcmp (interp->name, name) == 0) + if (strcmp (interp->name (), name) == 0) return interp; } @@ -252,13 +255,13 @@ set_top_level_interpreter (const char *name) } void -current_interp_set_logging (ui_file_up logfile, - bool logging_redirect) +current_interp_set_logging (ui_file_up logfile, bool logging_redirect, + bool debug_redirect) { struct ui_interp_info *ui_interp = get_current_interp_info (); struct interp *interp = ui_interp->current_interpreter; - interp->set_logging (std::move (logfile), logging_redirect); + interp->set_logging (std::move (logfile), logging_redirect, debug_redirect); } /* Temporarily overrides the current interpreter. */ @@ -282,7 +285,7 @@ current_interp_named_p (const char *interp_name) struct interp *interp = ui_interp->current_interpreter; if (interp != NULL) - return (strcmp (interp->name, interp_name) == 0); + return (strcmp (interp->name (), interp_name) == 0); return 0; } @@ -350,7 +353,6 @@ clear_interpreter_hooks (void) /*print_frame_more_info_hook = 0; */ deprecated_query_hook = 0; deprecated_warning_hook = 0; - deprecated_interactive_hook = 0; deprecated_readline_begin_hook = 0; deprecated_readline_hook = 0; deprecated_readline_end_hook = 0; @@ -375,7 +377,7 @@ interpreter_exec_cmd (const char *args, int from_tty) nrules = prules.count (); if (nrules < 2) - error (_("usage: interpreter-exec [ ... ]")); + error (_("Usage: interpreter-exec INTERPRETER COMMAND...")); old_interp = ui_interp->current_interpreter; @@ -444,8 +446,12 @@ _initialize_interpreter (void) c = add_cmd ("interpreter-exec", class_support, interpreter_exec_cmd, _("\ -Execute a command in an interpreter. It takes two arguments:\n\ +Execute a command in an interpreter.\n\ +Usage: interpreter-exec INTERPRETER COMMAND...\n\ The first argument is the name of the interpreter to use.\n\ -The second argument is the command to execute.\n"), &cmdlist); +The following arguments are the commands to execute.\n\ +A command can have arguments, separated by spaces.\n\ +These spaces must be escaped using \\ or the command\n\ +and its arguments must be enclosed in double quotes."), &cmdlist); set_cmd_completer (c, interpreter_completer); }