summaryrefslogtreecommitdiff
path: root/client/display.c
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2012-12-18 14:52:56 +0100
committerMarcel Holtmann <marcel@holtmann.org>2012-12-18 15:03:58 +0100
commite3069721d495dc5a208524e119c74751a614d387 (patch)
tree324cbe46df24c6ebc90810c6adb54665c5b52091 /client/display.c
parent6934437fc7799e123cd46bd821b3a73e823d2702 (diff)
downloadbluez-e3069721d495dc5a208524e119c74751a614d387.tar.gz
client: Check for RL_STATE_DONE before trying to print
Diffstat (limited to 'client/display.c')
-rw-r--r--client/display.c27
1 files changed, 17 insertions, 10 deletions
diff --git a/client/display.c b/client/display.c
index 197049d64..bc891af94 100644
--- a/client/display.c
+++ b/client/display.c
@@ -36,22 +36,29 @@
void rl_printf(const char *fmt, ...)
{
va_list args;
+ bool save_input;
char *saved_line;
int saved_point;
- saved_point = rl_point;
- saved_line = rl_copy_text(0, rl_end);
- rl_save_prompt();
- rl_replace_line("", 0);
- rl_redisplay();
+ save_input = !RL_ISSTATE(RL_STATE_DONE);
+
+ if (save_input) {
+ saved_point = rl_point;
+ saved_line = rl_copy_text(0, rl_end);
+ rl_save_prompt();
+ rl_replace_line("", 0);
+ rl_redisplay();
+ }
va_start(args, fmt);
vprintf(fmt, args);
va_end(args);
- rl_restore_prompt();
- rl_replace_line(saved_line, 0);
- rl_point = saved_point;
- rl_redisplay();
- free(saved_line);
+ if (save_input) {
+ rl_restore_prompt();
+ rl_replace_line(saved_line, 0);
+ rl_point = saved_point;
+ rl_redisplay();
+ free(saved_line);
+ }
}