Bird readline client saves its history.
This commit is contained in:
parent
f8d44b01df
commit
b880e3ffae
1 changed files with 19 additions and 0 deletions
|
@ -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();
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue