2018-02-20 11:09:40

by Szymon Janc

[permalink] [raw]
Subject: [PATCH] shared/shell: Fix history display with no saved prompt

Prompt needs to be restored always since default prompt is provided.
This fix issues with history line being clobbered by offset of prompt
length.

[bluetooth]# connect 9C:5C:F9:AB:C5:82
Attempting to connect to 9C:5C:F9:AB:C5:82
[bluetooth]# disconnect 9C:5C:F9:AB:C5:82
Attempting to disconnect from 9C:5C:F9:AB:C5:82
Failed to connect: org.bluez.Error.Failed
Successful disconnected
[bluetooth]# discoverable on
Changing discoverable on succeeded
[CHG] Controller 5C:E0:C5:34:AE:1C Discoverable: yes
[bluetooth]# disconnect discoverable on

after pressing up-down
[bluetooth]# disconnect dis5C:F9:AB:C5:82
---
src/shared/shell.c | 11 ++++-------
1 file changed, 4 insertions(+), 7 deletions(-)

diff --git a/src/shared/shell.c b/src/shared/shell.c
index 12330ff53..0ac492886 100644
--- a/src/shared/shell.c
+++ b/src/shared/shell.c
@@ -378,11 +378,9 @@ void bt_shell_printf(const char *fmt, ...)
if (save_input) {
saved_point = rl_point;
saved_line = rl_copy_text(0, rl_end);
- if (!data.saved_prompt) {
- rl_save_prompt();
- rl_replace_line("", 0);
- rl_redisplay();
- }
+ rl_save_prompt();
+ rl_replace_line("", 0);
+ rl_redisplay();
}

va_start(args, fmt);
@@ -390,8 +388,7 @@ void bt_shell_printf(const char *fmt, ...)
va_end(args);

if (save_input) {
- if (!data.saved_prompt)
- rl_restore_prompt();
+ rl_restore_prompt();
rl_replace_line(saved_line, 0);
rl_point = saved_point;
rl_forced_update_display();
--
2.14.3



2018-02-21 08:06:53

by Szymon Janc

[permalink] [raw]
Subject: Re: [PATCH] shared/shell: Fix history display with no saved prompt

On Tuesday, 20 February 2018 12:09:40 CET Szymon Janc wrote:
> Prompt needs to be restored always since default prompt is provided.
> This fix issues with history line being clobbered by offset of prompt
> length.
>
> [bluetooth]# connect 9C:5C:F9:AB:C5:82
> Attempting to connect to 9C:5C:F9:AB:C5:82
> [bluetooth]# disconnect 9C:5C:F9:AB:C5:82
> Attempting to disconnect from 9C:5C:F9:AB:C5:82
> Failed to connect: org.bluez.Error.Failed
> Successful disconnected
> [bluetooth]# discoverable on
> Changing discoverable on succeeded
> [CHG] Controller 5C:E0:C5:34:AE:1C Discoverable: yes
> [bluetooth]# disconnect discoverable on
>
> after pressing up-down
> [bluetooth]# disconnect dis5C:F9:AB:C5:82
> ---
> src/shared/shell.c | 11 ++++-------
> 1 file changed, 4 insertions(+), 7 deletions(-)
>
> diff --git a/src/shared/shell.c b/src/shared/shell.c
> index 12330ff53..0ac492886 100644
> --- a/src/shared/shell.c
> +++ b/src/shared/shell.c
> @@ -378,11 +378,9 @@ void bt_shell_printf(const char *fmt, ...)
> if (save_input) {
> saved_point = rl_point;
> saved_line = rl_copy_text(0, rl_end);
> - if (!data.saved_prompt) {
> - rl_save_prompt();
> - rl_replace_line("", 0);
> - rl_redisplay();
> - }
> + rl_save_prompt();
> + rl_replace_line("", 0);
> + rl_redisplay();
> }
>
> va_start(args, fmt);
> @@ -390,8 +388,7 @@ void bt_shell_printf(const char *fmt, ...)
> va_end(args);
>
> if (save_input) {
> - if (!data.saved_prompt)
> - rl_restore_prompt();
> + rl_restore_prompt();
> rl_replace_line(saved_line, 0);
> rl_point = saved_point;
> rl_forced_update_display();

Applied.

--
pozdrawiam
Szymon Janc