diff options
author | Elias Fleckenstein <eliasfleckenstein@web.de> | 2022-05-24 12:05:56 +0200 |
---|---|---|
committer | Elias Fleckenstein <eliasfleckenstein@web.de> | 2022-05-24 12:08:12 +0200 |
commit | 0c42082067500c0dae3237f918e8c80c0971f766 (patch) | |
tree | de047612936c42824464f773ea720a70fa25d7f5 | |
parent | 776800dd45eaad0785add6b476af9714b446132e (diff) | |
download | center-0c42082067500c0dae3237f918e8c80c0971f766.tar.xz |
Use /dev/tty instead of stdout to get terminal size
-rw-r--r-- | center.c | 19 |
1 files changed, 15 insertions, 4 deletions
@@ -1,12 +1,15 @@ #define _POSIX_C_SOURCE 200809L #define _XOPEN_SOURCE +#include <fcntl.h> +#include <locale.h> #include <stdio.h> -#include <wchar.h> #include <stdlib.h> +#include <sys/ioctl.h> +#include <sys/stat.h> +#include <sys/types.h> #include <termios.h> #include <unistd.h> -#include <sys/ioctl.h> -#include <locale.h> +#include <wchar.h> #define ERR(str) { perror(str); err = EXIT_FAILURE; goto end; } @@ -22,9 +25,15 @@ int main() ssize_t len; int err = EXIT_SUCCESS; + int tty_fd = open("/dev/tty", O_RDWR); + if (tty_fd < 0) { + perror("open"); + return EXIT_FAILURE; + } + while ((len = getline(&buf, &siz, stdin)) > 0) { struct winsize ws; - if (ioctl(STDOUT_FILENO, TIOCGWINSZ, &ws) < 0) ERR("ioctl") + if (ioctl(tty_fd, TIOCGWINSZ, &ws) < 0) ERR("ioctl") int term_width = ws.ws_col; @@ -61,6 +70,8 @@ int main() } end: + close(tty_fd); + if (buf) free(buf); |