[PATCH v2] Remove init_cli_cmds

Tom Tromey tromey@adacore.com
Thu Jul 11 16:29:00 GMT 2019


I noticed that init_cli_cmds only installs a command, and so doesn't
need to be handled specially.  This patch merges it into
_initialize_cli_cmds.

The help text is constructed dynamically, which is sometimes an
indication that special treatment is needed; but in this case it is
just to insert the value of "gdbinit", which is created at
compile-time and not modified; so this doesn't affect the result.

This version also removes the "gdbinit" global.  There's no need for
it, as GDBINIT can be used instead.  Note, though, that the help text
in question must still be dynamically constructed, in order to be
i18n-friendly.

gdb/ChangeLog
2019-07-11  Tom Tromey  <tromey@adacore.com>

	* main.c (get_init_files): Use GDBINIT, not gdbinit.
	* auto-load.c (file_is_auto_load_safe): Use GDBINIT, not gdbinit.
	* top.h (gdbinit): Don't declare.
	* cli/cli-cmds.c (init_cli_cmds): Remove, merging contents
	into...
	(_initialize_cli_cmds): ...here.  Use GDBINIT, not gdbinit.
	* top.c (gdb_init): Don't call init_cli_cmds.
	(gdbinit): Remove.
	* cli/cli-cmds.h (init_cli_cmds): Don't declare.
---
 gdb/ChangeLog      | 12 ++++++++++++
 gdb/auto-load.c    |  2 +-
 gdb/cli/cli-cmds.c | 11 ++---------
 gdb/cli/cli-cmds.h |  2 --
 gdb/main.c         |  6 +++---
 gdb/top.c          |  5 -----
 gdb/top.h          |  1 -
 7 files changed, 18 insertions(+), 21 deletions(-)

diff --git a/gdb/auto-load.c b/gdb/auto-load.c
index 7e417994e8f..616aeb6fc96 100644
--- a/gdb/auto-load.c
+++ b/gdb/auto-load.c
@@ -500,7 +500,7 @@ file_is_auto_load_safe (const char *filename, const char *debug_fmt, ...)
 
       if (homedir == NULL)
 	homedir = "$HOME";
-      std::string homeinit = string_printf ("%s/%s", homedir, gdbinit);
+      std::string homeinit = string_printf ("%s/%s", homedir, GDBINIT);
 
       printf_filtered (_("\
 To enable execution of this file add\n\
diff --git a/gdb/cli/cli-cmds.c b/gdb/cli/cli-cmds.c
index e689c0ff64e..0b62622e888 100644
--- a/gdb/cli/cli-cmds.c
+++ b/gdb/cli/cli-cmds.c
@@ -2215,15 +2215,8 @@ Make \"spe\" an alias of \"set print elements\":\n\
   alias spe = set print elements\n\
 Make \"elms\" an alias of \"elements\" in the \"set print\" command:\n\
   alias -a set print elms = set print elements"));
-}
-
-void
-init_cli_cmds (void)
-{
-  struct cmd_list_element *c;
-  char *source_help_text;
 
-  source_help_text = xstrprintf (_("\
+  const char *source_help_text = xstrprintf (_("\
 Read commands from a file named FILE.\n\
 \n\
 Usage: source [-s] [-v] FILE\n\
@@ -2232,7 +2225,7 @@ Usage: source [-s] [-v] FILE\n\
 -v: each command in FILE is echoed as it is executed.\n\
 \n\
 Note that the file \"%s\" is read automatically in this way\n\
-when GDB is started."), gdbinit);
+when GDB is started."), GDBINIT);
   c = add_cmd ("source", class_support, source_command,
 	       source_help_text, &cmdlist);
   set_cmd_completer (c, filename_completer);
diff --git a/gdb/cli/cli-cmds.h b/gdb/cli/cli-cmds.h
index ac0591e2e89..5bfffde04a1 100644
--- a/gdb/cli/cli-cmds.h
+++ b/gdb/cli/cli-cmds.h
@@ -105,8 +105,6 @@ extern struct cmd_list_element *showchecklist;
 
 void init_cmd_lists (void);
 
-void init_cli_cmds (void);
-
 int is_complete_command (struct cmd_list_element *cmd);
 
 /* Exported to gdb/main.c */
diff --git a/gdb/main.c b/gdb/main.c
index 540738e543d..678c413021c 100644
--- a/gdb/main.c
+++ b/gdb/main.c
@@ -260,7 +260,7 @@ get_init_files (const char **system_gdbinit,
 
       if (homedir)
 	{
-	  homeinit = xstrprintf ("%s/%s", homedir, gdbinit);
+	  homeinit = xstrprintf ("%s/%s", homedir, GDBINIT);
 	  if (stat (homeinit, &homebuf) != 0)
 	    {
 	      xfree (homeinit);
@@ -268,12 +268,12 @@ get_init_files (const char **system_gdbinit,
 	    }
 	}
 
-      if (stat (gdbinit, &cwdbuf) == 0)
+      if (stat (GDBINIT, &cwdbuf) == 0)
 	{
 	  if (!homeinit
 	      || memcmp ((char *) &homebuf, (char *) &cwdbuf,
 			 sizeof (struct stat)))
-	    localinit = gdbinit;
+	    localinit = GDBINIT;
 	}
       
       initialized = 1;
diff --git a/gdb/top.c b/gdb/top.c
index 68cf405f6e0..83a3604688b 100644
--- a/gdb/top.c
+++ b/gdb/top.c
@@ -108,10 +108,6 @@ gen_ret_current_ui_field_ptr (struct ui_file *, gdb_stderr)
 gen_ret_current_ui_field_ptr (struct ui_file *, gdb_stdlog)
 gen_ret_current_ui_field_ptr (struct ui_out *, current_uiout)
 
-/* Initialization file name for gdb.  This is host-dependent.  */
-
-const char gdbinit[] = GDBINIT;
-
 int inhibit_gdbinit = 0;
 
 extern char lang_frame_mismatch_warn[];		/* language.c */
@@ -2265,7 +2261,6 @@ gdb_init (char *argv0)
   initialize_progspace ();
   initialize_inferiors ();
   initialize_current_architecture ();
-  init_cli_cmds();
   init_main ();			/* But that omits this file!  Do it now.  */
 
   initialize_stdin_serial ();
diff --git a/gdb/top.h b/gdb/top.h
index e7659b65ffe..32a898b82f5 100644
--- a/gdb/top.h
+++ b/gdb/top.h
@@ -219,7 +219,6 @@ extern void ui_unregister_input_event_handler (struct ui *ui);
 /* From top.c.  */
 extern int confirm;
 extern int inhibit_gdbinit;
-extern const char gdbinit[];
 
 /* Print the GDB version banner to STREAM.  If INTERACTIVE is false,
    then information referring to commands (e.g., "show configuration")
-- 
2.20.1



More information about the Gdb-patches mailing list