summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob Kaivo <jkk@ung.org>2020-07-14 10:44:28 -0400
committerJakob Kaivo <jkk@ung.org>2020-07-14 10:44:28 -0400
commit114533e512cc94b0b2e04489f70714bf7e52366c (patch)
tree24658be5ac403ca30c0917f8761dc81b5a770612
parent0557119352aa09b4f68519ce9ea2b33adf5cb708 (diff)
ask curses-compliant tput for screen size if possible
-rw-r--r--more.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/more.c b/more.c
index 85b37b4..3f5eada 100644
--- a/more.c
+++ b/more.c
@@ -306,9 +306,20 @@ int more(const char *file)
return 0;
}
-int from_env(const char *variable, int def)
+static int query_term(const char *cap, const char *variable, int def)
{
int n = 0;
+ char cmd[64];
+ snprintf(cmd, sizeof(cmd), "tput %s", cap);
+ FILE *f = popen(cmd, "r");
+ if (f) {
+ fscanf(f, "%d", &n);
+ pclose(f);
+ if (n != 0) {
+ return n;
+ }
+ }
+
char *value = getenv(variable);
if (value) {
n = atoi(value);
@@ -348,8 +359,8 @@ static void adjust_args(int *argc, char ***argv)
int main(int argc, char *argv[])
{
int c;
- global.lines = from_env("LINES", 24);
- global.columns = from_env("COLUMNS", 80);
+ global.lines = query_term("lines", "LINES", 24);
+ global.columns = query_term("cols", "COLUMNS", 80);
int clear = 0;
int fastexit = 0;