summaryrefslogtreecommitdiff
path: root/more.c
diff options
context:
space:
mode:
authorJakob Kaivo <jkk@ung.org>2020-07-15 12:07:59 -0400
committerJakob Kaivo <jkk@ung.org>2020-07-15 12:07:59 -0400
commit707da08aacb29be4b1b7677768b0206301cf50a0 (patch)
tree8021fc8246b3f2ab7e8ad837045fe0af2855f521 /more.c
parent7ca612506a90802b7e1e9dd02cdabfef8cf0c74d (diff)
implement g and G
Diffstat (limited to 'more.c')
-rw-r--r--more.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/more.c b/more.c
index 253bbc5..3f8d4a3 100644
--- a/more.c
+++ b/more.c
@@ -1,6 +1,7 @@
#define _XOPEN_SOURCE 700
#include <ctype.h>
#include <errno.h>
+#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -139,21 +140,20 @@ int more(const struct more_tty *mt, const char *file)
scroll(mt, &mf, count, -mt->lines / 2);
break;
- case 'g':
- //scroll_beginning(count);
- break;
-
case 'G':
- //scroll_end(count);
- break;
-
- case 'r':
- case CTRL_L:
- refresh(mt, &mf);
+ if (count == 0) {
+ count = INT_MAX;
+ }
+ /* FALLTHRU */
+ case 'g':
+ scroll(mt, &mf, count - mf.topline, 1);
break;
case 'R':
// discard();
+ /* FALLTHRU */
+ case 'r':
+ case CTRL_L:
refresh(mt, &mf);
break;