X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=interactive.c;h=f75e4be531d94521bf87f8baf19b5f4dfb5b6739;hp=dda5f84e5184b398a10652bd45ddda941e3a703e;hb=3ba7724e92b52f5933632ff7d948d0f9491440db;hpb=56561c08cf6cfe28bccebc513bcec057d8bb9afa;ds=inline diff --git a/interactive.c b/interactive.c index dda5f84e..f75e4be5 100644 --- a/interactive.c +++ b/interactive.c @@ -27,6 +27,7 @@ struct i9e_private { struct i9e_client_info *ici; FILE *stderr_stream; + int num_columns; char empty_line[1000]; struct task task; struct btr_node *stdout_btrn; @@ -339,14 +340,15 @@ static void update_winsize(void) { struct winsize w; int ret = ioctl(i9ep->ici->fds[2], TIOCGWINSZ, (char *)&w); - int num_columns = 80; if (ret >= 0) { assert(w.ws_col < sizeof(i9ep->empty_line)); - num_columns = w.ws_col; - } - memset(i9ep->empty_line, ' ', num_columns); - i9ep->empty_line[num_columns] = '\0'; + i9ep->num_columns = w.ws_col; + } else + i9ep->num_columns = 80; + + memset(i9ep->empty_line, ' ', i9ep->num_columns); + i9ep->empty_line[i9ep->num_columns] = '\0'; } /** @@ -431,6 +433,8 @@ __printf_2_3 void i9e_log(int ll, const char* fmt,...) */ void i9e_signal_dispatch(int sig_num) { + if (sig_num == SIGWINCH) + return update_winsize(); if (sig_num == SIGINT) { fprintf(i9ep->stderr_stream, "\n"); rl_replace_line ("", false /* clear_undo */);