]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Bird readline client saves its history.
authorJan Moskyto Matejka <mq@ucw.cz>
Tue, 16 May 2017 08:35:10 +0000 (10:35 +0200)
committerJan Moskyto Matejka <mq@ucw.cz>
Tue, 16 May 2017 13:34:57 +0000 (15:34 +0200)
client/birdc.c

index 8aa01c17ffa7ac2b9c50f352b9e0f39328395e36..18e7c47b1b65ba8bd461064e41e90d7e515562c8 100644 (file)
@@ -29,6 +29,9 @@ static int prompt_active;
 extern int _rl_vis_botlin;
 extern void _rl_move_vert(int);
 
+#define HISTORY "/.birdc_history"
+static char *history_file;
+
 static void
 add_history_dedup(char *cmd)
 {
@@ -137,9 +140,24 @@ input_help(int arg, int key UNUSED)
   return 0;
 }
 
+void
+history_init(void)
+{
+  const char *homedir = getenv("HOME");
+  if (!homedir)
+    homedir = ".";
+  history_file = malloc(strlen(homedir) + sizeof(HISTORY));
+  if (!history_file)
+    die("couldn't alloc enough memory for history file name");
+
+  sprintf(history_file, "%s%s", homedir, HISTORY);
+  read_history(history_file);
+}
+
 void
 input_init(void)
 {
+  history_init();
   rl_readline_name = "birdc";
   rl_add_defun("bird-complete", input_complete, '\t');
   rl_add_defun("bird-help", input_help, '?');
@@ -217,5 +235,6 @@ cleanup(void)
     return;
 
   input_hide();
+  write_history(history_file);
   rl_callback_handler_remove();
 }