summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--con.c14
-rw-r--r--con.h7
-rw-r--r--nav.c3
3 files changed, 23 insertions, 1 deletions
diff --git a/con.c b/con.c
new file mode 100644
index 0000000..f00d379
--- /dev/null
+++ b/con.c
@@ -0,0 +1,14 @@
+#include <sys/ioctl.h>
+#include <unistd.h>
+
+unsigned con_lines(void) {
+	struct winsize w;
+	ioctl(STDOUT_FILENO, TIOCGWINSZ, &w);
+	return w.ws_row;
+}
+
+unsigned con_cols(void) {
+	struct winsize w;
+	ioctl(STDOUT_FILENO, TIOCGWINSZ, &w);
+	return w.ws_col;
+}
diff --git a/con.h b/con.h
new file mode 100644
index 0000000..0c6fa33
--- /dev/null
+++ b/con.h
@@ -0,0 +1,7 @@
+#ifndef CON_H
+#define CON_H
+
+unsigned con_lines(void);
+unsigned con_cols(void);
+
+#endif
diff --git a/nav.c b/nav.c
index 5e5d8ea..18b21db 100644
--- a/nav.c
+++ b/nav.c
@@ -5,6 +5,7 @@
 #include "net.h"
 #include "err.h"
 #include "parse.h"
+#include "con.h"
 
 /* history */
 
@@ -50,7 +51,7 @@ void nav_next(struct nav_state *ns) {
 /* paging */
 
 size_t pg_lines(void) {
-	return 24;
+	return con_lines() - 1;
 }
 
 struct doc_line *nav_cur_line(struct nav_state *ns) {