Indented file using gdb_indent.sh.
[deliverable/binutils-gdb.git] / gdb / event-loop.c
index 285cea474417dbc975a48eac5e2099d28938391b..4e42d7e2b62a98025a8977616b6f6a7fc3e7f36e 100644 (file)
@@ -20,7 +20,6 @@
    Boston, MA 02111-1307, USA. */
 
 #include "defs.h"
-#include "top.h"
 #include "event-loop.h"
 #include "event-top.h"
 
@@ -403,6 +402,14 @@ start_event_loop (void)
             interface specific, because interfaces can display the
             prompt in their own way. */
          display_gdb_prompt (0);
+         /* This call looks bizarre, but it is required.  If the user
+            entered a command that caused an error,
+            after_char_processing_hook won't be called from
+            rl_callback_read_char_wrapper.  Using a cleanup there
+            won't work, since we want this function to be called
+            after a new prompt is printed.  */
+         if (after_char_processing_hook)
+           (*after_char_processing_hook) ();
          /* Maybe better to set a flag to be checked somewhere as to
             whether display the prompt or not. */
        }
@@ -487,51 +494,52 @@ create_file_handler (int fd, int mask, handler_func * proc, gdb_client_data clie
       file_ptr->ready_mask = 0;
       file_ptr->next_file = gdb_notifier.first_file_handler;
       gdb_notifier.first_file_handler = file_ptr;
-    }
-  file_ptr->proc = proc;
-  file_ptr->client_data = client_data;
-  file_ptr->mask = mask;
 
-  if (use_poll)
-    {
+      if (use_poll)
+       {
 #ifdef HAVE_POLL
-      gdb_notifier.num_fds++;
-      if (gdb_notifier.poll_fds)
-       gdb_notifier.poll_fds =
-         (struct pollfd *) xrealloc (gdb_notifier.poll_fds,
-                                     (gdb_notifier.num_fds
-                                      * sizeof (struct pollfd)));
-      else
-       gdb_notifier.poll_fds =
-         (struct pollfd *) xmalloc (sizeof (struct pollfd));
-      (gdb_notifier.poll_fds + gdb_notifier.num_fds - 1)->fd = fd;
-      (gdb_notifier.poll_fds + gdb_notifier.num_fds - 1)->events = mask;
-      (gdb_notifier.poll_fds + gdb_notifier.num_fds - 1)->revents = 0;
+         gdb_notifier.num_fds++;
+         if (gdb_notifier.poll_fds)
+           gdb_notifier.poll_fds =
+             (struct pollfd *) xrealloc (gdb_notifier.poll_fds,
+                                         (gdb_notifier.num_fds
+                                          * sizeof (struct pollfd)));
+         else
+           gdb_notifier.poll_fds =
+             (struct pollfd *) xmalloc (sizeof (struct pollfd));
+         (gdb_notifier.poll_fds + gdb_notifier.num_fds - 1)->fd = fd;
+         (gdb_notifier.poll_fds + gdb_notifier.num_fds - 1)->events = mask;
+         (gdb_notifier.poll_fds + gdb_notifier.num_fds - 1)->revents = 0;
 #else
-      internal_error (__FILE__, __LINE__,
-                     "use_poll without HAVE_POLL");
+         internal_error (__FILE__, __LINE__,
+                         "use_poll without HAVE_POLL");
 #endif /* HAVE_POLL */
-    }
-  else
-    {
-      if (mask & GDB_READABLE)
-       FD_SET (fd, &gdb_notifier.check_masks[0]);
+       }
       else
-       FD_CLR (fd, &gdb_notifier.check_masks[0]);
+       {
+         if (mask & GDB_READABLE)
+           FD_SET (fd, &gdb_notifier.check_masks[0]);
+         else
+           FD_CLR (fd, &gdb_notifier.check_masks[0]);
 
-      if (mask & GDB_WRITABLE)
-       FD_SET (fd, &gdb_notifier.check_masks[1]);
-      else
-       FD_CLR (fd, &gdb_notifier.check_masks[1]);
+         if (mask & GDB_WRITABLE)
+           FD_SET (fd, &gdb_notifier.check_masks[1]);
+         else
+           FD_CLR (fd, &gdb_notifier.check_masks[1]);
 
-      if (mask & GDB_EXCEPTION)
-       FD_SET (fd, &gdb_notifier.check_masks[2]);
-      else
-       FD_CLR (fd, &gdb_notifier.check_masks[2]);
+         if (mask & GDB_EXCEPTION)
+           FD_SET (fd, &gdb_notifier.check_masks[2]);
+         else
+           FD_CLR (fd, &gdb_notifier.check_masks[2]);
 
-      if (gdb_notifier.num_fds <= fd)
-       gdb_notifier.num_fds = fd + 1;
+         if (gdb_notifier.num_fds <= fd)
+           gdb_notifier.num_fds = fd + 1;
+       }
     }
+
+  file_ptr->proc = proc;
+  file_ptr->client_data = client_data;
+  file_ptr->mask = mask;
 }
 
 /* Remove the file descriptor FD from the list of monitored fd's: 
This page took 0.02694 seconds and 4 git commands to generate.