diff options
Diffstat (limited to 'src/bar.c')
-rw-r--r-- | src/bar.c | 13 |
1 files changed, 10 insertions, 3 deletions
@@ -16,6 +16,7 @@ #include <stdio.h> #include <string.h> #include <sys/ioctl.h> +#include <termios.h> struct bfs_bar { int fd; @@ -28,10 +29,16 @@ struct bfs_bar { /** Get the terminal size, if possible. */ static int bfs_bar_getsize(struct bfs_bar *bar) { -#ifdef TIOCGWINSZ +#if BFS_HAS_TCGETWINSIZE || defined(TIOCGWINSZ) struct winsize ws; - if (ioctl(bar->fd, TIOCGWINSZ, &ws) != 0) { - return -1; + +# if BFS_HAS_TCGETWINSIZE + int ret = tcgetwinsize(bar->fd, &ws); +# else + int ret = ioctl(bar->fd, TIOCGWINSZ, &ws); +# endif + if (ret != 0) { + return ret; } store(&bar->width, ws.ws_col, relaxed); |