* main.c (initialize_history): Read history after reading all
authorStu Grossman <grossman@cygnus>
Mon, 28 Oct 1991 02:20:47 +0000 (02:20 +0000)
committerStu Grossman <grossman@cygnus>
Mon, 28 Oct 1991 02:20:47 +0000 (02:20 +0000)
init files.

gdb/ChangeLog
gdb/main.c

index cf279c0ade102599520d81adf0fc00ff79057cec..93321877e292052f03b9aa09be5529126198138a 100644 (file)
@@ -1,3 +1,8 @@
+Sun Oct 27 18:18:39 1991  Stu Grossman  (grossman at cygnus.com)
+
+       * main.c (initialize_history):  Read history after reading all
+       init files.
+
 Sun Oct 27 14:09:25 1991  John Gilmore  (gnu at cygnus.com)
 
        * buildsym.c:  Break out initial malloc sizes.
index 795e94a7479a00f084be48bbbb95c4bb2bcb7139..936879cf0012d3db00cf0aa1c8ee714f2dcd22eb 100644 (file)
@@ -170,6 +170,7 @@ extern void init_malloc ();
 void free_command_lines ();
 char *gdb_readline ();
 char *command_line_input ();
+static void initialize_history ();
 static void initialize_main ();
 static void initialize_cmd_lists ();
 static void init_signals ();
@@ -211,7 +212,7 @@ char *baud_rate;
 #define HAVE_SIGSETMASK !defined (USG)
 #endif
 
-#if !HAVE_SIGSETMASK
+#if 0 == (HAVE_SIGSETMASK)
 #define sigsetmask(n)
 #endif
 \f
@@ -677,6 +678,9 @@ GDB manual (available as on-line info or a printed manual).\n", stderr);
       }
   free (cmdarg);
 
+  /* Read in the old history after all the command files have been read. */
+  initialize_history();
+
   if (batch)
     {
       /* We have hit the end of the batch file.  */
@@ -1993,41 +1997,51 @@ initialize_cmd_lists ()
   unsethistlist = (struct cmd_list_element *) 0;
 }
 
+/* Init the history buffer.  Note that we are called after the init file(s)
+ * have been read so that the user can change the history file via his
+ * .gdbinit file (for instance).  The GDBHISTFILE environment variable
+ * overrides all of this.
+ */
+
 static void
-initialize_main ()
+initialize_history()
 {
-  struct cmd_list_element *c;
-  
   char *tmpenv;
-  
-#ifdef DEFAULT_PROMPT
-  prompt = savestring (DEFAULT_PROMPT, strlen(DEFAULT_PROMPT));
-#else
-  prompt = savestring ("(gdb) ", 6);
-#endif
 
-  /* Set the important stuff up for command editing.  */
-  command_editing_p = 1;
-  history_expansion_p = 0;
-  write_history_p = 0;
-  
   if (tmpenv = getenv ("HISTSIZE"))
     history_size = atoi (tmpenv);
-  else
+  else if (!history_size)
     history_size = 256;
 
   stifle_history (history_size);
 
   if (tmpenv = getenv ("GDBHISTFILE"))
     history_filename = savestring (tmpenv, strlen(tmpenv));
-  else
+  else if (!history_filename) {
     /* We include the current directory so that if the user changes
        directories the file written will be the same as the one
        that was read.  */
     history_filename = concat (current_directory, "/.gdb_history", "");
-
+  }
   read_history (history_filename);
+}
 
+static void
+initialize_main ()
+{
+  struct cmd_list_element *c;
+  
+#ifdef DEFAULT_PROMPT
+  prompt = savestring (DEFAULT_PROMPT, strlen(DEFAULT_PROMPT));
+#else
+  prompt = savestring ("(gdb) ", 6);
+#endif
+
+  /* Set the important stuff up for command editing.  */
+  command_editing_p = 1;
+  history_expansion_p = 0;
+  write_history_p = 0;
+  
   /* Setup important stuff for command line editing.  */
   rl_completion_entry_function = (int (*)()) symbol_completion_function;
   rl_completer_word_break_characters = gdb_completer_word_break_characters;