summaryrefslogtreecommitdiff
path: root/src/dged/display.c
diff options
context:
space:
mode:
authorAlbert Cervin <albert@acervin.com>2025-10-15 17:13:05 +0200
committerAlbert Cervin <albert@acervin.com>2025-10-17 12:21:04 +0200
commit4689f3f38277bb64981fc960e8e384e2d065d659 (patch)
treefd6cbb8e91aedf04daa1698c1e5909d8547cb050 /src/dged/display.c
parent186374797aa883de9c4ac49d428af8dca000d2ed (diff)
downloaddged-openbsd-fixes.tar.gz
dged-openbsd-fixes.tar.xz
dged-openbsd-fixes.zip
Make it work again on OpenBSDopenbsd-fixes
- Some unused variables - Fix zero window size under lldb - Make instantiation of languages more robust
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;
}