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
|
*.lnk
|
||||||
|
|
||||||
# End of https://www.toptal.com/developers/gitignore/api/c,macos,windows,linux,c
|
# 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 $(IDIR)
|
||||||
-@mkdir -p $(ODIR)
|
-@mkdir -p $(ODIR)
|
||||||
-@mkdir -p $(BINDIR)
|
-@mkdir -p $(BINDIR)
|
||||||
@echo $(BINDIR)/ >> .gitignore
|
|
||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#define ARG_H
|
#define ARG_H
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
|
||||||
#define LAT_VERSION "0.12.4"
|
#define LAT_VERSION "0.13.0"
|
||||||
|
|
||||||
struct config {
|
struct config {
|
||||||
bool isstdin;
|
bool isstdin;
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdnoreturn.h>
|
#include <stdnoreturn.h>
|
||||||
|
#include <sys/ioctl.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#include "arg.h"
|
#include "arg.h"
|
||||||
@ -24,9 +25,10 @@ void help(void) {
|
|||||||
"binary\n"
|
"binary\n"
|
||||||
"\t-r print everything (headers, line numbers, etc.) to "
|
"\t-r print everything (headers, line numbers, etc.) to "
|
||||||
"stdout (or equivalent)\n"
|
"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-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-V show program version\n"
|
||||||
"\t-h display this help text\n\n");
|
"\t-h display this help text\n\n");
|
||||||
printf("environment:\n"
|
printf("environment:\n"
|
||||||
|
22
src/main.c
22
src/main.c
@ -1,5 +1,6 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <sys/ioctl.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#include "arg.h"
|
#include "arg.h"
|
||||||
@ -52,10 +53,25 @@ void run(FILE *fp, char *filename, bool tty) {
|
|||||||
struct filedata f;
|
struct filedata f;
|
||||||
f = readfile(fp, conf.isstdin);
|
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) {
|
if (conf.extension != NULL) {
|
||||||
// TODO
|
// 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) {
|
if (conf.pager) {
|
||||||
st = popen("less", "w");
|
st = popen("less", "w");
|
||||||
err = st;
|
err = st;
|
||||||
@ -78,12 +94,6 @@ void run(FILE *fp, char *filename, bool tty) {
|
|||||||
printheadertop(filename, f.binary);
|
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) {
|
if (conf.process) {
|
||||||
int linecount = 1;
|
int linecount = 1;
|
||||||
for (int i = 0; i < f.lc; i++) {
|
for (int i = 0; i < f.lc; i++) {
|
||||||
|
Loading…
Reference in New Issue
Block a user