aboutsummaryrefslogtreecommitdiff
path: root/center.c
diff options
context:
space:
mode:
Diffstat (limited to 'center.c')
-rw-r--r--center.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/center.c b/center.c
index 1b03084..a08e9e7 100644
--- a/center.c
+++ b/center.c
@@ -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);