X-Git-Url: http://git.tuebingen.mpg.de/?a=blobdiff_plain;f=interactive.c;h=f2e4a355012ce1aa3861ba8b7bec56443a80df8e;hb=4a30c5e28b85d674d30ce7fc49c905cff62b5d0e;hp=a145b0dfc56268a8e90e1b011147b282756eab59;hpb=b654beb95ef600a3b1bed5b5a5e079bb17d02c8a;p=paraslash.git diff --git a/interactive.c b/interactive.c index a145b0df..f2e4a355 100644 --- a/interactive.c +++ b/interactive.c @@ -178,11 +178,16 @@ static char **i9e_completer(const char *text, int start, __a_unused int end) */ void i9e_attach_to_stdout(struct btr_node *producer) { - assert(!i9ep->stdout_btrn); + btr_remove_node(&i9ep->stdout_btrn); i9ep->stdout_btrn = btr_new_node(&(struct btr_node_description) EMBRACE(.name = "interactive_stdout", .parent = producer)); } +static void wipe_bottom_line(void) +{ + fprintf(i9ep->stderr_stream, "\r%s\r", i9ep->empty_line); +} + /** * Reset the terminal and save the in-memory command line history. * @@ -193,14 +198,9 @@ void i9e_close(void) char *hf = i9ep->ici->history_file; rl_deprep_terminal(); - fprintf(i9ep->stderr_stream, "\n"); if (hf) write_history(hf); -} - -static void wipe_bottom_line(void) -{ - fprintf(i9ep->stderr_stream, "\r%s\r", i9ep->empty_line); + wipe_bottom_line(); } static void clear_bottom_line(void) @@ -297,7 +297,7 @@ static void i9e_post_select(struct sched *s, struct task *t) rm_btrn: btr_remove_node(&i9ep->stdout_btrn); rl_set_prompt(i9ep->ici->prompt); - rl_forced_update_display(); + rl_redisplay(); out: t->error = 0; } @@ -411,8 +411,7 @@ __printf_2_3 void i9e_log(int ll, const char* fmt,...) if (ll < i9ep->ici->loglevel) return; - if (!i9ep->stdout_btrn) - clear_bottom_line(); + clear_bottom_line(); va_start(argp, fmt); vfprintf(i9ep->stderr_stream, fmt, argp); va_end(argp);