diff options
author | Jakob Kaivo <jkk@ung.org> | 2020-07-14 10:44:28 -0400 |
---|---|---|
committer | Jakob Kaivo <jkk@ung.org> | 2020-07-14 10:44:28 -0400 |
commit | 114533e512cc94b0b2e04489f70714bf7e52366c (patch) | |
tree | 24658be5ac403ca30c0917f8761dc81b5a770612 | |
parent | 0557119352aa09b4f68519ce9ea2b33adf5cb708 (diff) |
ask curses-compliant tput for screen size if possible
-rw-r--r-- | more.c | 17 |
1 files changed, 14 insertions, 3 deletions
@@ -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; |