From 064e7be5cd4dffd564b4ea41ba6d843492a55c97 Mon Sep 17 00:00:00 2001 From: Ondrej Zajicek Date: Fri, 4 May 2012 00:20:23 +0200 Subject: History deduplication in birdc. --- client/client.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/client/client.c b/client/client.c index 7f9e0ef4..8711cf0a 100644 --- a/client/client.c +++ b/client/client.c @@ -135,6 +135,14 @@ submit_server_command(char *cmd) num_lines = 2; } +static void +add_history_dedup(char *cmd) +{ + /* Add history line if it differs from the last one */ + HIST_ENTRY *he = history_get(history_length); + if (!he || strcmp(he->line, cmd)) + add_history(cmd); +} static void got_line(char *cmd_buffer) @@ -151,7 +159,7 @@ got_line(char *cmd_buffer) cmd = cmd_expand(cmd_buffer); if (cmd) { - add_history(cmd); + add_history_dedup(cmd); if (!handle_internal_command(cmd)) submit_server_command(cmd); @@ -159,7 +167,7 @@ got_line(char *cmd_buffer) free(cmd); } else - add_history(cmd_buffer); + add_history_dedup(cmd_buffer); } free(cmd_buffer); } -- cgit v1.2.3