From 1fa82850d87a0f5526153655a2368c46ea447a90 Mon Sep 17 00:00:00 2001 From: Jakob Kaivo Date: Mon, 18 Apr 2022 19:12:52 -0400 Subject: switch to curses --- tty.c | 77 ------------------------------------------------------------------- 1 file changed, 77 deletions(-) delete mode 100644 tty.c (limited to 'tty.c') diff --git a/tty.c b/tty.c deleted file mode 100644 index 3752cd7..0000000 --- a/tty.c +++ /dev/null @@ -1,77 +0,0 @@ -#define _XOPEN_SOURCE 700 -#include -#include -#include -#include - -#include "more.h" - -static FILE *resetty = NULL; -static struct termios resettings = { 0 }; - -static void resetterm(void) -{ - tcsetattr(fileno(resetty), TCSANOW, &resettings); -} - -static int query_term(const char *cap, const char *variable, int def) -{ - int n = 0; - char cmd[64]; - snprintf(cmd, sizeof(cmd), "tput %s", cap); - FILE *f = popen(cmd, "r"); - if (f) { - if (fscanf(f, "%d", &n) != 1) { - n = 0; - } - pclose(f); - if (n != 0) { - return n; - } - } - - char *value = getenv(variable); - if (value) { - n = atoi(value); - } - return n ? n : def; -} - -struct more_tty more_open_tty(int lines) -{ - struct more_tty mt = { - .tty = stderr, - .lines = query_term("lines", "LINES", 24), - .columns = query_term("cols", "COLUMNS", 80), - }; - - if (lines > 0) { - mt.lines = lines; - } - - /* leave room for prompts */ - lines--; - - /* FIXME: only open /dev/tty if stderr is not readable */ - // if (!(fcntl(fileno(mt.tty), F_GETFL) & (O_WRONLY | O_RDWR))) { - mt.tty = fopen("/dev/tty", "rb+"); - // } - if (mt.tty == NULL) { - perror("Couldn't open tty for reading"); - exit(1); - } - - setbuf(mt.tty, NULL); - - tcgetattr(fileno(mt.tty), &resettings); - struct termios term = resettings; - term.c_lflag &= ~(ECHO | ICANON); - term.c_cc[VMIN] = 1; - term.c_cc[VTIME] = 0; - tcsetattr(fileno(mt.tty), TCSANOW, &term); - - resetty = mt.tty; - atexit(resetterm); - - return mt; -} -- cgit v1.2.1