diff options
author | Ondrej Zajicek <santiago@crfreenet.org> | 2012-05-04 00:20:23 +0200 |
---|---|---|
committer | Ondrej Zajicek <santiago@crfreenet.org> | 2012-05-04 00:20:23 +0200 |
commit | 064e7be5cd4dffd564b4ea41ba6d843492a55c97 (patch) | |
tree | 0bf5bec685e7b2a32ebd1de3e0d0ecd31b1805b8 | |
parent | e14bd38087ed8ef1945dd0a3878cc560478145f0 (diff) |
History deduplication in birdc.
-rw-r--r-- | client/client.c | 12 |
1 files 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); } |