From 764f8d22b250e09c1dea98fb8073e71a720892f7 Mon Sep 17 00:00:00 2001 From: Nathan Reiner Date: Wed, 8 Feb 2023 21:39:42 +0100 Subject: add pager --- lib/tctl/tctl.c | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'lib/tctl/tctl.c') diff --git a/lib/tctl/tctl.c b/lib/tctl/tctl.c index 187d1a9..d54f2dd 100644 --- a/lib/tctl/tctl.c +++ b/lib/tctl/tctl.c @@ -4,6 +4,10 @@ #define GET_WIN_SIZE 0x5413 #define SET_WIN_SIZE 0x5414 #define TC_GET_ATTR 0x5401 +#define TC_SET_ATTR 0x5402 +#define FD_FLUSH 0x000b +#define ICANON 000002 +#define ECHO 000010 window_size_t tctl_get_window_size() { @@ -24,3 +28,39 @@ int isatty() termios_t term; return ioctl(1, TC_GET_ATTR, &term) == 0; } + + +int tcgetattr(int fd, termios_t *termios) +{ + return ioctl(fd, TC_GET_ATTR, termios); +} + + +void tcsetattr(int fd, termios_t *termios) +{ + ioctl(fd, TC_SET_ATTR, termios); +} + + +void setcanonical(termios_t *term, int is_canonical) +{ + if (is_canonical) + term->c_lflag |= ICANON; + else + term->c_lflag &= ~ICANON; +} + + +void setecho(termios_t *term, int is_echo) +{ + if (is_echo) + term->c_lflag |= ECHO; + else + term->c_lflag &= ~ECHO; +} + + +void flush(unsigned int fd) +{ + ioctl(fd, FD_FLUSH, 0); +} -- cgit v1.2.3-70-g09d2