Add auto-pager
This commit is contained in:
parent
1577a74d58
commit
925ba68c3c
2
.gitignore
vendored
2
.gitignore
vendored
@ -130,5 +130,3 @@ $RECYCLE.BIN/
|
||||
*.lnk
|
||||
|
||||
# End of https://www.toptal.com/developers/gitignore/api/c,macos,windows,linux,c
|
||||
|
||||
build/
|
||||
|
1
Makefile
1
Makefile
@ -34,7 +34,6 @@ prep:
|
||||
-@mkdir -p $(IDIR)
|
||||
-@mkdir -p $(ODIR)
|
||||
-@mkdir -p $(BINDIR)
|
||||
@echo $(BINDIR)/ >> .gitignore
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
|
@ -2,7 +2,7 @@
|
||||
#define ARG_H
|
||||
#include <stdbool.h>
|
||||
|
||||
#define LAT_VERSION "0.12.4"
|
||||
#define LAT_VERSION "0.13.0"
|
||||
|
||||
struct config {
|
||||
bool isstdin;
|
||||
|
@ -1,6 +1,7 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdnoreturn.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "arg.h"
|
||||
@ -24,9 +25,10 @@ void help(void) {
|
||||
"binary\n"
|
||||
"\t-r print everything (headers, line numbers, etc.) to "
|
||||
"stdout (or equivalent)\n"
|
||||
"\t-p print file with the pager (uses less)\n"
|
||||
"\t-p disable or enable pager (uses less)\n"
|
||||
"\t-n <name> manually set the name of the file shown in the title\n"
|
||||
// "\t-e <program> NONFUNCTIONAL (will be added soon) link extension to lat\n"
|
||||
// "\t-e <program> NONFUNCTIONAL (will be added soon) link extension
|
||||
// to lat\n"
|
||||
"\t-V show program version\n"
|
||||
"\t-h display this help text\n\n");
|
||||
printf("environment:\n"
|
||||
|
22
src/main.c
22
src/main.c
@ -1,5 +1,6 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "arg.h"
|
||||
@ -52,10 +53,25 @@ void run(FILE *fp, char *filename, bool tty) {
|
||||
struct filedata f;
|
||||
f = readfile(fp, conf.isstdin);
|
||||
|
||||
// any/all processing to be done
|
||||
// TODO: maybe multithread?
|
||||
conf.process = (tty && !f.binary);
|
||||
if (conf.process) { // file display processing
|
||||
loadlines(&f);
|
||||
}
|
||||
|
||||
if (conf.extension != NULL) {
|
||||
// TODO
|
||||
}
|
||||
|
||||
struct winsize w;
|
||||
|
||||
if (ioctl(STDOUT_FILENO, TIOCGWINSZ, &w) != -1 || w.ws_col != 0) {
|
||||
if (w.ws_row <= f.lc + 5) {
|
||||
conf.pager = !conf.pager;
|
||||
}
|
||||
}
|
||||
|
||||
if (conf.pager) {
|
||||
st = popen("less", "w");
|
||||
err = st;
|
||||
@ -78,12 +94,6 @@ void run(FILE *fp, char *filename, bool tty) {
|
||||
printheadertop(filename, f.binary);
|
||||
}
|
||||
|
||||
// any/all processing to be done
|
||||
conf.process = (tty && !f.binary);
|
||||
if (conf.process) { // file display processing
|
||||
loadlines(&f);
|
||||
}
|
||||
|
||||
if (conf.process) {
|
||||
int linecount = 1;
|
||||
for (int i = 0; i < f.lc; i++) {
|
||||
|
Loading…
Reference in New Issue
Block a user