This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[PATCH 04/10] Eliminate async_annotation_suffix
- From: Pedro Alves <palves at redhat dot com>
- To: gdb-patches at sourceware dot org
- Date: Thu, 18 Feb 2016 17:40:30 +0000
- Subject: [PATCH 04/10] Eliminate async_annotation_suffix
- Authentication-results: sourceware.org; auth=none
- References: <1455817236-13642-1-git-send-email-palves at redhat dot com>
The comments and existence of this global are a bit of misleading
obfuscation, since this is only ever used to print the prompt
annotation, and never changes. Just hardcode "prompt" where
necessary, as done for most other annotations.
gdb/ChangeLog:
2016-02-18 Pedro Alves <palves@redhat.com>
* event-top.c (async_annotation_suffix): Delete.
(top_level_prompt, command_line_handler): Don't use
'async_annotation_suffix' and simplify.
* event-top.h (async_annotation_suffix): Delete declaration.
(init_main): Remove reference to 'async_annotation_suffix'.
---
gdb/event-top.c | 46 ++++++++--------------------------------------
gdb/event-top.h | 1 -
gdb/top.c | 4 ----
3 files changed, 8 insertions(+), 43 deletions(-)
diff --git a/gdb/event-top.c b/gdb/event-top.c
index 35830119..ee44197 100644
--- a/gdb/event-top.c
+++ b/gdb/event-top.c
@@ -107,10 +107,6 @@ void (*call_readline) (gdb_client_data);
loop as default engine, and event-top.c is merged into top.c. */
int async_command_editing_p;
-/* This is the annotation suffix that will be used when the
- annotation_level is 2. */
-char *async_annotation_suffix;
-
/* This is used to display the notification of the completion of an
asynchronous execution command. */
int exec_done_display_p = 0;
@@ -363,49 +359,27 @@ display_gdb_prompt (const char *new_prompt)
static char *
top_level_prompt (void)
{
- char *prefix;
- char *prompt = NULL;
- char *suffix;
- char *composed_prompt;
- size_t prompt_length;
+ char *prompt;
/* Give observers a chance of changing the prompt. E.g., the python
`gdb.prompt_hook' is installed as an observer. */
observer_notify_before_prompt (get_prompt ());
- prompt = xstrdup (get_prompt ());
+ prompt = get_prompt ();
if (annotation_level >= 2)
{
/* Prefix needs to have new line at end. */
- prefix = (char *) alloca (strlen (async_annotation_suffix) + 10);
- strcpy (prefix, "\n\032\032pre-");
- strcat (prefix, async_annotation_suffix);
- strcat (prefix, "\n");
+ const char prefix[] = "\n\032\032pre-prompt\n";
/* Suffix needs to have a new line at end and \032 \032 at
beginning. */
- suffix = (char *) alloca (strlen (async_annotation_suffix) + 6);
- strcpy (suffix, "\n\032\032");
- strcat (suffix, async_annotation_suffix);
- strcat (suffix, "\n");
- }
- else
- {
- prefix = "";
- suffix = "";
- }
+ const char suffix[] = "\n\032\032prompt\n";
- prompt_length = strlen (prefix) + strlen (prompt) + strlen (suffix);
- composed_prompt = (char *) xmalloc (prompt_length + 1);
-
- strcpy (composed_prompt, prefix);
- strcat (composed_prompt, prompt);
- strcat (composed_prompt, suffix);
-
- xfree (prompt);
+ return concat (prefix, prompt, suffix, NULL);
+ }
- return composed_prompt;
+ return xstrdup (prompt);
}
/* When there is an event ready on the stdin file desriptor, instead
@@ -517,11 +491,7 @@ command_line_handler (char *rl)
int repeat = (instream == stdin);
if (annotation_level > 1 && instream == stdin)
- {
- printf_unfiltered (("\n\032\032post-"));
- puts_unfiltered (async_annotation_suffix);
- printf_unfiltered (("\n"));
- }
+ printf_unfiltered (("\n\032\032post-prompt\n"));
if (linebuffer == 0)
{
diff --git a/gdb/event-top.h b/gdb/event-top.h
index 64c6fdf..1a79d62 100644
--- a/gdb/event-top.h
+++ b/gdb/event-top.h
@@ -54,7 +54,6 @@ extern void async_enable_stdin (void);
extern int async_command_editing_p;
extern int exec_done_display_p;
-extern char *async_annotation_suffix;
extern struct prompts the_prompts;
extern void (*call_readline) (void *);
extern void (*input_handler) (char *);
diff --git a/gdb/top.c b/gdb/top.c
index b5ee4af..fb1657a 100644
--- a/gdb/top.c
+++ b/gdb/top.c
@@ -1897,10 +1897,6 @@ init_main (void)
the DEFAULT_PROMPT is. */
set_prompt (DEFAULT_PROMPT);
- /* Set things up for annotation_level > 1, if the user ever decides
- to use it. */
- async_annotation_suffix = "prompt";
-
/* Set the important stuff up for command editing. */
command_editing_p = 1;
history_expansion_p = 0;
--
1.9.3