summaryrefslogtreecommitdiff
path: root/src/dged/display.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/dged/display.c')
-rw-r--r--src/dged/display.c11
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;
}