This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: [RFA] top.c: initialize other UIs before cli
- From: Keith Seitz <keiths at cygnus dot com>
- To: <gdb-patches at sources dot redhat dot com>
- Cc: Elena Zannoni <ezannoni at cygnus dot com>
- Date: Mon, 19 Nov 2001 13:02:00 -0800 (PST)
- Subject: Re: [RFA] top.c: initialize other UIs before cli
Sorry for the self-reply, but I didn't add any comments on this little
hack...
Reposted below.
On Mon, 19 Nov 2001, Keith Seitz wrote:
> Hi,
>
> There is currently a little problem with init_ui_hook: if the UI fails to
> initialize (and we should fall back to "gdb -nw"), then the CLI will NOT
> get initialized properly.
>
> This results because init_ui_hook does not return any status indicating
> the failure.
>
> This simple change will correct this anomaly without altering init_ui_hook
> semantics, i.e., it is absolutely the least intrusive.
>
> ?
> Keith
>
> ChangeLog
> 2001-11-19 Keith Seitz <keiths@redhat.com>
>
> * top.c (gdb_init): Call init_ui_hook before initializing
> the default UI.
>
> Patch
Index: top.c
===================================================================
RCS file: /cvs/src/src/gdb/top.c,v
retrieving revision 1.48
diff -u -p -r1.48 top.c
--- top.c 2001/11/10 21:34:56 1.48
+++ top.c 2001/11/19 21:01:02
@@ -182,8 +182,11 @@ static void stop_sig (int);
/* Hooks for alternate command interfaces. */
/* Called after most modules have been initialized, but before taking users
- command file. */
+ command file.
+ If the UI fails to initialize and it wants GDB to continue
+ using the default UI, then it should clear this hook before returning. */
+
void (*init_ui_hook) (char *argv0);
/* This hook is called from within gdb's many mini-event loops which could
@@ -2034,6 +2037,11 @@ gdb_init (char *argv0)
set_language (language_c);
expected_language = current_language; /* don't warn about the change. */
+ /* Allow another UI to initialize. If the UI fails to initialize, and
+ it wants GDB to revert to the CLI, it should clear init_ui_hook. */
+ if (init_ui_hook)
+ init_ui_hook (argv0);
+
#ifdef UI_OUT
/* Install the default UI */
if (!init_ui_hook)
@@ -2050,7 +2058,4 @@ gdb_init (char *argv0)
}
}
#endif
-
- if (init_ui_hook)
- init_ui_hook (argv0);
}