Re: [BlueZ PATCH] shared: shell: Only omit consecutive duplicate history lines.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Marijn,

On Sat, Jan 18, 2020 at 12:46 PM Marijn Suijten <marijns95@xxxxxxxxx> wrote:
>
> From: Marijn Suijten <marijns95@xxxxxxxxx>
>
> Change rl_handler to append duplicate history, as long as it isn't
> identical to the last line. It prevents consecutive duplicates while
> still having an accurate overview of the most recent commands used,
> mimicking most modern shells.
>
> This addresses my only major gripe with bluetoothctl: pressing UP does
> not retrieve the last typed command when it is a duplicate of something
> else written (much) earlier in the history. It is especially noticeable
> when needing the same command repeatedly.
> ---
>  src/shared/shell.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/src/shared/shell.c b/src/shared/shell.c
> index cfdcc76c4..2e094b8f1 100644
> --- a/src/shared/shell.c
> +++ b/src/shared/shell.c
> @@ -681,6 +681,7 @@ int bt_shell_release_prompt(const char *input)
>  static void rl_handler(char *input)
>  {
>         wordexp_t w;
> +       HIST_ENTRY *last;
>
>         if (!input) {
>                 rl_insert_text("quit");
> @@ -696,7 +697,9 @@ static void rl_handler(char *input)
>         if (!bt_shell_release_prompt(input))
>                 goto done;
>
> -       if (history_search(input, -1))
> +       last = history_get(history_length + history_base - 1);
> +       /* append only if input is different from previous command */
> +       if (!last || strcmp(input, last->line))
>                 add_history(input);
>
>         if (data.monitor)
> --
> 2.25.0

Applied, thanks.


-- 
Luiz Augusto von Dentz



[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux