diff options
Diffstat (limited to 'src/dged/display.c')
| -rw-r--r-- | src/dged/display.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/dged/display.c b/src/dged/display.c index e39391b..e992cc9 100644 --- a/src/dged/display.c +++ b/src/dged/display.c @@ -7,6 +7,7 @@ #include <assert.h> #include <ctype.h> +#include <fcntl.h> #include <stdarg.h> #include <stdio.h> #include <stdlib.h> @@ -91,7 +92,15 @@ struct command_list { struct winsize getsize(void) { struct winsize ws; - ioctl(STDOUT_FILENO, TIOCGWINSZ, &ws); + if (ioctl(STDOUT_FILENO, TIOCGWINSZ, &ws) == -1 || ws.ws_row == 0 || + ws.ws_col == 0) { + int fd = open("/dev/tty", O_RDONLY); + if (fd != -1) { + ioctl(fd, TIOCGWINSZ, &ws); + close(fd); + } + } + return ws; } |
