]> git.puffer.fish Git - matthieu/frr.git/commitdiff
[vtysh] Save vtysh history to a file
authorTomasz Pala <gotar@pld-linux.org>
Wed, 24 Jun 2009 21:23:11 +0000 (22:23 +0100)
committerPaul Jakma <paul@quagga.net>
Wed, 24 Jun 2009 21:26:38 +0000 (22:26 +0100)
vtsh_main.c: save 1000 last lines of history to $HOME/.history_quagga (the
file must be created by hand first, this is intended behaviour)

vtysh/vtysh_main.c

index 23ff64f7dbdfa278cfa5757f2a3dfe131713be74..4a315a5c856f0c0f257bb96d431af4b7a3eef443 100644 (file)
@@ -42,6 +42,7 @@ char *progname;
 
 /* Configuration file name and directory. */
 char config_default[] = SYSCONFDIR VTYSH_DEFAULT_CONFIG;
+char history_file[MAXPATHLEN];
 
 /* Flag for indicate executing child command. */
 int execute_flag = 0;
@@ -188,8 +189,10 @@ vtysh_rl_gets ()
     {
       using_history();
       last = previous_history();
-      if (!last || strcmp (last->line, line_read) != 0)
+      if (!last || strcmp (last->line, line_read) != 0) {
        add_history (line_read);
+       append_history(1,history_file);
+      }
     }
      
   return (line_read);
@@ -399,10 +402,13 @@ main (int argc, char **argv, char **env)
   sigsetjmp (jmpbuf, 1);
   jmpflag = 1;
 
+  snprintf(history_file, sizeof(history_file), "%s/.history_quagga", getenv("HOME"));
+  read_history(history_file);
   /* Main command loop. */
   while (vtysh_rl_gets ())
     vtysh_execute (line_read);
 
+  history_truncate_file(history_file,1000);
   printf ("\n");
 
   /* Rest in peace. */