aboutsummaryrefslogtreecommitdiff
path: root/lib/tctl/tctl.c
diff options
context:
space:
mode:
authorNathan Reiner <nathan@nathanreiner.xyz>2023-02-08 21:39:42 +0100
committerNathan Reiner <nathan@nathanreiner.xyz>2023-02-08 21:39:42 +0100
commit764f8d22b250e09c1dea98fb8073e71a720892f7 (patch)
tree8357f9f673846125ac49ff0f12288d242eb2fa49 /lib/tctl/tctl.c
parentb97ec93748902c90f25524116d3d189f1b263474 (diff)
add pager
Diffstat (limited to 'lib/tctl/tctl.c')
-rw-r--r--lib/tctl/tctl.c40
1 files changed, 40 insertions, 0 deletions
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);
+}