Eliminate async_annotation_suffix
authorPedro Alves <palves@redhat.com>
Wed, 9 Mar 2016 18:24:59 +0000 (18:24 +0000)
committerPedro Alves <palves@redhat.com>
Wed, 9 Mar 2016 18:24:59 +0000 (18:24 +0000)
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-03-09  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/ChangeLog
gdb/event-top.c
gdb/event-top.h
gdb/top.c

index 09b3826..264c8a7 100644 (file)
@@ -1,5 +1,13 @@
 2016-03-09  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'.
+
+2016-03-09  Pedro Alves  <palves@redhat.com>
+
        * event-top.c (gdb_readline2): Rename to ...
        (gdb_readline_no_editing_callback): ... this.
        (change_line_handler, stdin_event_handler)
index e3fa589..722bddf 100644 (file)
@@ -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)
     {
index f9bd7b9..b8c3b11 100644 (file)
@@ -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 *);
index b5ee4af..fb1657a 100644 (file)
--- 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;