2011-07-22 Phil Muldoon <pmuldoon@redhat.com>
* event-top.c (cli_command_loop): Use get_prompt, get_suffix, get_prefix. (display_gdb_prompt): Likewise. (change_annotation_level): Likewise. (push_prompt): Likewise. (pop_prompt): Likewise. (handle_stop_sig): Use get_prompt with a level. * top.c (command_loop): Use get_prompt with a level. (set_async_annotation_level): Use set_prompt with a level. (get_prefix): New function. (set_prefix): Ditto. (set_suffix): Ditto. (get_suffix): Ditto. (get_prompt): Accept a level argument. (set_prompt): Accept a level argument. Free old prompts. Set new_async_prompt if level is 0. (init_main): Use set_prompt with a level. Do not set new_async_prompt. * event-top.h (PROMPT, SUFFIX, PREFIX): Move to top.c * top.h: Declare set_suffix, get_suffix, set_prefix, get_prefix. Modify set_prompt, get_prompt to account for levels. * tui/tui-interp.c (tui_command_loop): Use get_prompt with a level * python/python.c (before_prompt_hook): Use set_prompt.
This commit is contained in:
parent
14d1530353
commit
95298e7219
7 changed files with 169 additions and 58 deletions
|
@ -1,3 +1,30 @@
|
||||||
|
2011-07-22 Phil Muldoon <pmuldoon@redhat.com>
|
||||||
|
|
||||||
|
* event-top.c (cli_command_loop): Use get_prompt, get_suffix,
|
||||||
|
get_prefix.
|
||||||
|
(display_gdb_prompt): Likewise.
|
||||||
|
(change_annotation_level): Likewise.
|
||||||
|
(push_prompt): Likewise.
|
||||||
|
(pop_prompt): Likewise.
|
||||||
|
(handle_stop_sig): Use get_prompt with a level.
|
||||||
|
* top.c (command_loop): Use get_prompt with a level.
|
||||||
|
(set_async_annotation_level): Use set_prompt with a level.
|
||||||
|
(get_prefix): New function.
|
||||||
|
(set_prefix): Ditto.
|
||||||
|
(set_suffix): Ditto.
|
||||||
|
(get_suffix): Ditto.
|
||||||
|
(get_prompt): Accept a level argument.
|
||||||
|
(set_prompt): Accept a level argument. Free old prompts. Set
|
||||||
|
new_async_prompt if level is 0.
|
||||||
|
(init_main): Use set_prompt with a level. Do not set
|
||||||
|
new_async_prompt.
|
||||||
|
* event-top.h (PROMPT, SUFFIX, PREFIX): Move to top.c
|
||||||
|
* top.h: Declare set_suffix, get_suffix, set_prefix, get_prefix.
|
||||||
|
Modify set_prompt, get_prompt to account for levels.
|
||||||
|
* tui/tui-interp.c (tui_command_loop): Use get_prompt with a
|
||||||
|
level.
|
||||||
|
* python/python.c (before_prompt_hook): Use set_prompt.
|
||||||
|
|
||||||
2011-07-22 Kwok Cheung Yeung <kcy@codesourcery.com>
|
2011-07-22 Kwok Cheung Yeung <kcy@codesourcery.com>
|
||||||
|
|
||||||
* defs.h: Add guard against inclusion in gdbserver.
|
* defs.h: Add guard against inclusion in gdbserver.
|
||||||
|
|
|
@ -191,17 +191,17 @@ cli_command_loop (void)
|
||||||
{
|
{
|
||||||
int length;
|
int length;
|
||||||
char *a_prompt;
|
char *a_prompt;
|
||||||
char *gdb_prompt = get_prompt ();
|
char *gdb_prompt = get_prompt (0);
|
||||||
|
|
||||||
/* Tell readline what the prompt to display is and what function
|
/* Tell readline what the prompt to display is and what function
|
||||||
it will need to call after a whole line is read. This also
|
it will need to call after a whole line is read. This also
|
||||||
displays the first prompt. */
|
displays the first prompt. */
|
||||||
length = strlen (PREFIX (0))
|
length = strlen (get_prefix (0))
|
||||||
+ strlen (gdb_prompt) + strlen (SUFFIX (0)) + 1;
|
+ strlen (gdb_prompt) + strlen (get_suffix(0)) + 1;
|
||||||
a_prompt = (char *) alloca (length);
|
a_prompt = (char *) alloca (length);
|
||||||
strcpy (a_prompt, PREFIX (0));
|
strcpy (a_prompt, get_prefix (0));
|
||||||
strcat (a_prompt, gdb_prompt);
|
strcat (a_prompt, gdb_prompt);
|
||||||
strcat (a_prompt, SUFFIX (0));
|
strcat (a_prompt, get_suffix (0));
|
||||||
rl_callback_handler_install (a_prompt, input_handler);
|
rl_callback_handler_install (a_prompt, input_handler);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -276,10 +276,10 @@ display_gdb_prompt (char *new_prompt)
|
||||||
if (! new_prompt)
|
if (! new_prompt)
|
||||||
{
|
{
|
||||||
char *post_gdb_prompt = NULL;
|
char *post_gdb_prompt = NULL;
|
||||||
char *pre_gdb_prompt = xstrdup (get_prompt ());
|
char *pre_gdb_prompt = xstrdup (get_prompt (0));
|
||||||
|
|
||||||
observer_notify_before_prompt (pre_gdb_prompt);
|
observer_notify_before_prompt (pre_gdb_prompt);
|
||||||
post_gdb_prompt = get_prompt ();
|
post_gdb_prompt = get_prompt (0);
|
||||||
|
|
||||||
/* If the observer changed the prompt, use that prompt. */
|
/* If the observer changed the prompt, use that prompt. */
|
||||||
if (strcmp (pre_gdb_prompt, post_gdb_prompt) != 0)
|
if (strcmp (pre_gdb_prompt, post_gdb_prompt) != 0)
|
||||||
|
@ -317,18 +317,18 @@ display_gdb_prompt (char *new_prompt)
|
||||||
if (! new_prompt)
|
if (! new_prompt)
|
||||||
{
|
{
|
||||||
/* Just use the top of the prompt stack. */
|
/* Just use the top of the prompt stack. */
|
||||||
prompt_length = strlen (PREFIX (0)) +
|
prompt_length = strlen (get_prefix (0)) +
|
||||||
strlen (SUFFIX (0)) +
|
strlen (get_suffix (0)) +
|
||||||
strlen (get_prompt()) + 1;
|
strlen (get_prompt (0)) + 1;
|
||||||
|
|
||||||
actual_gdb_prompt = (char *) alloca (prompt_length);
|
actual_gdb_prompt = (char *) alloca (prompt_length);
|
||||||
|
|
||||||
/* Prefix needs to have new line at end. */
|
/* Prefix needs to have new line at end. */
|
||||||
strcpy (actual_gdb_prompt, PREFIX (0));
|
strcpy (actual_gdb_prompt, get_prefix (0));
|
||||||
strcat (actual_gdb_prompt, get_prompt());
|
strcat (actual_gdb_prompt, get_prompt (0));
|
||||||
/* Suffix needs to have a new line at end and \032 \032 at
|
/* Suffix needs to have a new line at end and \032 \032 at
|
||||||
beginning. */
|
beginning. */
|
||||||
strcat (actual_gdb_prompt, SUFFIX (0));
|
strcat (actual_gdb_prompt, get_suffix (0));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
actual_gdb_prompt = new_prompt;;
|
actual_gdb_prompt = new_prompt;;
|
||||||
|
@ -361,7 +361,7 @@ change_annotation_level (void)
|
||||||
{
|
{
|
||||||
char *prefix, *suffix;
|
char *prefix, *suffix;
|
||||||
|
|
||||||
if (!PREFIX (0) || !PROMPT (0) || !SUFFIX (0))
|
if (!get_prefix (0) || !get_prompt (0) || !get_suffix (0))
|
||||||
{
|
{
|
||||||
/* The prompt stack has not been initialized to "", we are
|
/* The prompt stack has not been initialized to "", we are
|
||||||
using gdb w/o the --async switch. */
|
using gdb w/o the --async switch. */
|
||||||
|
@ -371,7 +371,7 @@ change_annotation_level (void)
|
||||||
|
|
||||||
if (annotation_level > 1)
|
if (annotation_level > 1)
|
||||||
{
|
{
|
||||||
if (!strcmp (PREFIX (0), "") && !strcmp (SUFFIX (0), ""))
|
if (!strcmp (get_prefix (0), "") && !strcmp (get_suffix (0), ""))
|
||||||
{
|
{
|
||||||
/* Push a new prompt if the previous annotation_level was not >1. */
|
/* Push a new prompt if the previous annotation_level was not >1. */
|
||||||
prefix = (char *) alloca (strlen (async_annotation_suffix) + 10);
|
prefix = (char *) alloca (strlen (async_annotation_suffix) + 10);
|
||||||
|
@ -389,7 +389,7 @@ change_annotation_level (void)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (strcmp (PREFIX (0), "") && strcmp (SUFFIX (0), ""))
|
if (strcmp (get_prefix (0), "") && strcmp (get_suffix (0), ""))
|
||||||
{
|
{
|
||||||
/* Pop the top of the stack, we are going back to annotation < 1. */
|
/* Pop the top of the stack, we are going back to annotation < 1. */
|
||||||
pop_prompt ();
|
pop_prompt ();
|
||||||
|
@ -405,17 +405,17 @@ void
|
||||||
push_prompt (char *prefix, char *prompt, char *suffix)
|
push_prompt (char *prefix, char *prompt, char *suffix)
|
||||||
{
|
{
|
||||||
the_prompts.top++;
|
the_prompts.top++;
|
||||||
PREFIX (0) = xstrdup (prefix);
|
set_prefix (prefix, 0);
|
||||||
|
|
||||||
/* Note that this function is used by the set annotate 2
|
/* Note that this function is used by the set annotate 2
|
||||||
command. This is why we take care of saving the old prompt
|
command. This is why we take care of saving the old prompt
|
||||||
in case a new one is not specified. */
|
in case a new one is not specified. */
|
||||||
if (prompt)
|
if (prompt)
|
||||||
PROMPT (0) = xstrdup (prompt);
|
set_prompt (prompt, 0);
|
||||||
else
|
else
|
||||||
PROMPT (0) = xstrdup (PROMPT (-1));
|
set_prompt (get_prompt (-1), 0);
|
||||||
|
|
||||||
SUFFIX (0) = xstrdup (suffix);
|
set_suffix (suffix, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Pops the top of the prompt stack, and frees the memory allocated
|
/* Pops the top of the prompt stack, and frees the memory allocated
|
||||||
|
@ -425,20 +425,17 @@ pop_prompt (void)
|
||||||
{
|
{
|
||||||
/* If we are not during a 'synchronous' execution command, in which
|
/* If we are not during a 'synchronous' execution command, in which
|
||||||
case, the top prompt would be empty. */
|
case, the top prompt would be empty. */
|
||||||
if (strcmp (PROMPT (0), ""))
|
if (strcmp (get_prompt (0), ""))
|
||||||
/* This is for the case in which the prompt is set while the
|
/* This is for the case in which the prompt is set while the
|
||||||
annotation level is 2. The top prompt will be changed, but when
|
annotation level is 2. The top prompt will be changed, but when
|
||||||
we return to annotation level < 2, we want that new prompt to be
|
we return to annotation level < 2, we want that new prompt to be
|
||||||
in effect, until the user does another 'set prompt'. */
|
in effect, until the user does another 'set prompt'. */
|
||||||
if (strcmp (PROMPT (0), PROMPT (-1)))
|
if (strcmp (get_prompt (0), get_prompt (-1)))
|
||||||
{
|
set_prompt (get_prompt (0), -1);
|
||||||
xfree (PROMPT (-1));
|
|
||||||
PROMPT (-1) = xstrdup (PROMPT (0));
|
|
||||||
}
|
|
||||||
|
|
||||||
xfree (PREFIX (0));
|
set_prefix (NULL, 0);
|
||||||
xfree (PROMPT (0));
|
set_prompt (NULL, 0);
|
||||||
xfree (SUFFIX (0));
|
set_suffix (NULL, 0);
|
||||||
the_prompts.top--;
|
the_prompts.top--;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -983,7 +980,7 @@ handle_stop_sig (int sig)
|
||||||
static void
|
static void
|
||||||
async_stop_sig (gdb_client_data arg)
|
async_stop_sig (gdb_client_data arg)
|
||||||
{
|
{
|
||||||
char *prompt = get_prompt ();
|
char *prompt = get_prompt (0);
|
||||||
|
|
||||||
#if STOP_SIGNAL == SIGTSTP
|
#if STOP_SIGNAL == SIGTSTP
|
||||||
signal (SIGTSTP, SIG_DFL);
|
signal (SIGTSTP, SIG_DFL);
|
||||||
|
@ -1061,7 +1058,7 @@ set_async_annotation_level (char *args, int from_tty,
|
||||||
void
|
void
|
||||||
set_async_prompt (char *args, int from_tty, struct cmd_list_element *c)
|
set_async_prompt (char *args, int from_tty, struct cmd_list_element *c)
|
||||||
{
|
{
|
||||||
PROMPT (0) = xstrdup (new_async_prompt);
|
set_prompt (new_async_prompt, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set things up for readline to be invoked via the alternate
|
/* Set things up for readline to be invoked via the alternate
|
||||||
|
|
|
@ -69,9 +69,6 @@ struct prompts
|
||||||
int top;
|
int top;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define PROMPT(X) the_prompts.prompt_stack[the_prompts.top + X].prompt
|
|
||||||
#define PREFIX(X) the_prompts.prompt_stack[the_prompts.top + X].prefix
|
|
||||||
#define SUFFIX(X) the_prompts.prompt_stack[the_prompts.top + X].suffix
|
|
||||||
|
|
||||||
/* Exported functions from event-top.c.
|
/* Exported functions from event-top.c.
|
||||||
FIXME: these should really go into top.h. */
|
FIXME: these should really go into top.h. */
|
||||||
|
|
|
@ -745,7 +745,7 @@ before_prompt_hook (const char *current_gdb_prompt)
|
||||||
/* If a prompt has been set, PROMPT will not be NULL. If it is
|
/* If a prompt has been set, PROMPT will not be NULL. If it is
|
||||||
NULL, do not set the prompt. */
|
NULL, do not set the prompt. */
|
||||||
if (prompt != NULL)
|
if (prompt != NULL)
|
||||||
set_prompt (prompt);
|
set_prompt (prompt, 0);
|
||||||
|
|
||||||
do_cleanups (cleanup);
|
do_cleanups (cleanup);
|
||||||
return;
|
return;
|
||||||
|
|
92
gdb/top.c
92
gdb/top.c
|
@ -65,6 +65,10 @@
|
||||||
#include "ui-out.h"
|
#include "ui-out.h"
|
||||||
#include "cli-out.h"
|
#include "cli-out.h"
|
||||||
|
|
||||||
|
#define PROMPT(X) the_prompts.prompt_stack[the_prompts.top + X].prompt
|
||||||
|
#define PREFIX(X) the_prompts.prompt_stack[the_prompts.top + X].prefix
|
||||||
|
#define SUFFIX(X) the_prompts.prompt_stack[the_prompts.top + X].suffix
|
||||||
|
|
||||||
/* Default command line prompt. This is overriden in some configs. */
|
/* Default command line prompt. This is overriden in some configs. */
|
||||||
|
|
||||||
#ifndef DEFAULT_PROMPT
|
#ifndef DEFAULT_PROMPT
|
||||||
|
@ -533,7 +537,7 @@ command_loop (void)
|
||||||
while (instream && !feof (instream))
|
while (instream && !feof (instream))
|
||||||
{
|
{
|
||||||
if (window_hook && instream == stdin)
|
if (window_hook && instream == stdin)
|
||||||
(*window_hook) (instream, get_prompt ());
|
(*window_hook) (instream, get_prompt (0));
|
||||||
|
|
||||||
quit_flag = 0;
|
quit_flag = 0;
|
||||||
if (instream == stdin && stdin_is_tty)
|
if (instream == stdin && stdin_is_tty)
|
||||||
|
@ -542,7 +546,7 @@ command_loop (void)
|
||||||
|
|
||||||
/* Get a command-line. This calls the readline package. */
|
/* Get a command-line. This calls the readline package. */
|
||||||
command = command_line_input (instream == stdin ?
|
command = command_line_input (instream == stdin ?
|
||||||
get_prompt () : (char *) NULL,
|
get_prompt (0) : (char *) NULL,
|
||||||
instream == stdin, "prompt");
|
instream == stdin, "prompt");
|
||||||
if (command == 0)
|
if (command == 0)
|
||||||
{
|
{
|
||||||
|
@ -1124,26 +1128,98 @@ and \"show warranty\" for details.\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* get_prompt: access method for the GDB prompt string. */
|
|
||||||
|
/* get_prefix: access method for the GDB prefix string. */
|
||||||
|
|
||||||
char *
|
char *
|
||||||
get_prompt (void)
|
get_prefix (int level)
|
||||||
{
|
{
|
||||||
return PROMPT (0);
|
return PREFIX (level);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* set_prefix: set method for the GDB prefix string. */
|
||||||
|
|
||||||
|
void
|
||||||
|
set_prefix (const char *s, int level)
|
||||||
|
{
|
||||||
|
/* If S is NULL, just free the PREFIX at level LEVEL and set to
|
||||||
|
NULL. */
|
||||||
|
if (s == NULL)
|
||||||
|
{
|
||||||
|
xfree (PREFIX (level));
|
||||||
|
PREFIX (level) = NULL;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
char *p = xstrdup (s);
|
||||||
|
|
||||||
|
xfree (PREFIX (level));
|
||||||
|
PREFIX (level) = p;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* get_suffix: access method for the GDB suffix string. */
|
||||||
|
|
||||||
|
char *
|
||||||
|
get_suffix (int level)
|
||||||
|
{
|
||||||
|
return SUFFIX (level);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* set_suffix: set method for the GDB suffix string. */
|
||||||
|
|
||||||
|
void
|
||||||
|
set_suffix (const char *s, int level)
|
||||||
|
{
|
||||||
|
/* If S is NULL, just free the SUFFIX at level LEVEL and set to
|
||||||
|
NULL. */
|
||||||
|
if (s == NULL)
|
||||||
|
{
|
||||||
|
xfree (SUFFIX (level));
|
||||||
|
SUFFIX (level) = NULL;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
char *p = xstrdup (s);
|
||||||
|
|
||||||
|
xfree (SUFFIX (level));
|
||||||
|
SUFFIX (level) = p;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* get_prompt: access method for the GDB prompt string. */
|
||||||
|
|
||||||
|
char *
|
||||||
|
get_prompt (int level)
|
||||||
|
{
|
||||||
|
return PROMPT (level);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
set_prompt (const char *s)
|
set_prompt (const char *s, int level)
|
||||||
{
|
{
|
||||||
|
/* If S is NULL, just free the PROMPT at level LEVEL and set to
|
||||||
|
NULL. */
|
||||||
|
if (s == NULL)
|
||||||
|
{
|
||||||
|
xfree (PROMPT (level));
|
||||||
|
PROMPT (level) = NULL;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
char *p = xstrdup (s);
|
char *p = xstrdup (s);
|
||||||
|
|
||||||
xfree (PROMPT (0));
|
xfree (PROMPT (0));
|
||||||
PROMPT (0) = p;
|
PROMPT (0) = p;
|
||||||
|
|
||||||
|
if (level == 0)
|
||||||
|
{
|
||||||
/* Also, free and set new_async_prompt so prompt changes sync up
|
/* Also, free and set new_async_prompt so prompt changes sync up
|
||||||
with set/show prompt. */
|
with set/show prompt. */
|
||||||
xfree (new_async_prompt);
|
xfree (new_async_prompt);
|
||||||
new_async_prompt = xstrdup (PROMPT (0));
|
new_async_prompt = xstrdup (PROMPT (0));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1534,13 +1610,11 @@ init_main (void)
|
||||||
whatever the DEFAULT_PROMPT is. */
|
whatever the DEFAULT_PROMPT is. */
|
||||||
the_prompts.top = 0;
|
the_prompts.top = 0;
|
||||||
PREFIX (0) = "";
|
PREFIX (0) = "";
|
||||||
PROMPT (0) = xstrdup (DEFAULT_PROMPT);
|
set_prompt (DEFAULT_PROMPT, 0);
|
||||||
SUFFIX (0) = "";
|
SUFFIX (0) = "";
|
||||||
/* Set things up for annotation_level > 1, if the user ever decides
|
/* Set things up for annotation_level > 1, if the user ever decides
|
||||||
to use it. */
|
to use it. */
|
||||||
async_annotation_suffix = "prompt";
|
async_annotation_suffix = "prompt";
|
||||||
/* Set the variable associated with the setshow prompt command. */
|
|
||||||
new_async_prompt = xstrdup (PROMPT (0));
|
|
||||||
|
|
||||||
/* If gdb was started with --annotate=2, this is equivalent to the
|
/* If gdb was started with --annotate=2, this is equivalent to the
|
||||||
user entering the command 'set annotate 2' at the gdb prompt, so
|
user entering the command 'set annotate 2' at the gdb prompt, so
|
||||||
|
|
20
gdb/top.h
20
gdb/top.h
|
@ -51,11 +51,27 @@ extern struct cleanup *prepare_execute_command (void);
|
||||||
|
|
||||||
/* This function returns a pointer to the string that is used
|
/* This function returns a pointer to the string that is used
|
||||||
by gdb for its command prompt. */
|
by gdb for its command prompt. */
|
||||||
extern char *get_prompt (void);
|
extern char *get_prompt (int);
|
||||||
|
|
||||||
/* This function copies the specified string into the string that
|
/* This function copies the specified string into the string that
|
||||||
is used by gdb for its command prompt. */
|
is used by gdb for its command prompt. */
|
||||||
extern void set_prompt (const char *);
|
extern void set_prompt (const char *, int level);
|
||||||
|
|
||||||
|
/* This function returns a pointer to the string that is used
|
||||||
|
by gdb for its command prompt prefix. */
|
||||||
|
extern char *get_prefix (int);
|
||||||
|
|
||||||
|
/* This function copies the specified string into the string that
|
||||||
|
is used by gdb for its command prompt prefix. */
|
||||||
|
extern void set_prefix (const char *, int);
|
||||||
|
|
||||||
|
/* This function returns a pointer to the string that is used
|
||||||
|
by gdb for its command prompt suffix. */
|
||||||
|
extern char *get_suffix (int);
|
||||||
|
|
||||||
|
/* This function copies the specified string into the string that
|
||||||
|
is used by gdb for its command prompt suffix. */
|
||||||
|
extern void set_suffix (const char *, int);
|
||||||
|
|
||||||
/* From random places. */
|
/* From random places. */
|
||||||
extern int readnow_symbol_files;
|
extern int readnow_symbol_files;
|
||||||
|
|
|
@ -145,17 +145,17 @@ tui_command_loop (void *data)
|
||||||
{
|
{
|
||||||
int length;
|
int length;
|
||||||
char *a_prompt;
|
char *a_prompt;
|
||||||
char *gdb_prompt = get_prompt ();
|
char *gdb_prompt = get_prompt (0);
|
||||||
|
|
||||||
/* Tell readline what the prompt to display is and what function
|
/* Tell readline what the prompt to display is and what function
|
||||||
it will need to call after a whole line is read. This also
|
it will need to call after a whole line is read. This also
|
||||||
displays the first prompt. */
|
displays the first prompt. */
|
||||||
length = strlen (PREFIX (0))
|
length = strlen (get_prefix (0))
|
||||||
+ strlen (gdb_prompt) + strlen (SUFFIX (0)) + 1;
|
+ strlen (gdb_prompt) + strlen (get_suffix (0)) + 1;
|
||||||
a_prompt = (char *) alloca (length);
|
a_prompt = (char *) alloca (length);
|
||||||
strcpy (a_prompt, PREFIX (0));
|
strcpy (a_prompt, get_prefix (0));
|
||||||
strcat (a_prompt, gdb_prompt);
|
strcat (a_prompt, gdb_prompt);
|
||||||
strcat (a_prompt, SUFFIX (0));
|
strcat (a_prompt, get_suffix (0));
|
||||||
rl_callback_handler_install (a_prompt, input_handler);
|
rl_callback_handler_install (a_prompt, input_handler);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue