less/backport-makecheck-0012-lesstest-log-LESS_TERMCAP_-vars-so-termcap-keys-etc.patch

111 lines
4.3 KiB
Diff

From 1b01b0e4c7b7e0aa8087835452a277778450e0a7 Mon Sep 17 00:00:00 2001
From: Mark Nudelman <markn@greenwoodsoftware.com>
Date: Sun, 9 Oct 2022 14:17:36 -0700
Subject: [PATCH 06/48] lesstest: log LESS_TERMCAP_?? vars so termcap keys etc
are correct when running test.
---
lesstest/env.c | 54 ++++++++++++++++++++++++++---------------------
lesstest/maketest | 24 +++++++++++++++++++++
2 files changed, 54 insertions(+), 24 deletions(-)
create mode 100755 lesstest/maketest
diff --git a/lesstest/env.c b/lesstest/env.c
index d1a570b..77bfda6 100644
--- a/lesstest/env.c
+++ b/lesstest/env.c
@@ -63,30 +63,36 @@ static int is_less_env(const char* name, int name_len) {
}
static void env_setup(EnvBuf* env, char* const* prog_env, int interactive) {
- env_addpair(env, "LESS_TERMCAP_am", "1");
- env_addpair(env, "LESS_TERMCAP_cd", "\33S");
- env_addpair(env, "LESS_TERMCAP_ce", "\33L");
- env_addpair(env, "LESS_TERMCAP_cl", "\33A");
- env_addpair(env, "LESS_TERMCAP_cr", "\33<");
- env_addpair(env, "LESS_TERMCAP_cm", "\33%p2%d;%p1%dj");
- env_addpair(env, "LESS_TERMCAP_ho", "\33h");
- env_addpair(env, "LESS_TERMCAP_ll", "\33l");
- env_addpair(env, "LESS_TERMCAP_mb", "\33b");
- env_addpair(env, "LESS_TERMCAP_md", "\33d");
- env_addpair(env, "LESS_TERMCAP_md", "\33e");
- env_addpair(env, "LESS_TERMCAP_se", "\33t");
- env_addpair(env, "LESS_TERMCAP_so", "\33s");
- env_addpair(env, "LESS_TERMCAP_sr", "\33r");
- env_addpair(env, "LESS_TERMCAP_ue", "\33v");
- env_addpair(env, "LESS_TERMCAP_uo", "\33u");
- env_addpair(env, "LESS_TERMCAP_vb", "\33g");
- env_addpair(env, "LESS_TERMCAP_kr", terminfo.key_right ? terminfo.key_right : "");
- env_addpair(env, "LESS_TERMCAP_kl", terminfo.key_left ? terminfo.key_left : "");
- env_addpair(env, "LESS_TERMCAP_ku", terminfo.key_up ? terminfo.key_up : "");
- env_addpair(env, "LESS_TERMCAP_kd", terminfo.key_down ? terminfo.key_down : "");
- env_addpair(env, "LESS_TERMCAP_kh", terminfo.key_home ? terminfo.key_home : "");
- env_addpair(env, "LESS_TERMCAP_@7", terminfo.key_end ? terminfo.key_end : "");
-
+ struct tcvar { char const* name; char const* value; } tcvars[] = {
+ { "LESS_TERMCAP_am", "1" },
+ { "LESS_TERMCAP_cd", "\33S" },
+ { "LESS_TERMCAP_ce", "\33L" },
+ { "LESS_TERMCAP_cl", "\33A" },
+ { "LESS_TERMCAP_cr", "\33<" },
+ { "LESS_TERMCAP_cm", "\33%p2%d;%p1%dj" },
+ { "LESS_TERMCAP_ho", "\33h" },
+ { "LESS_TERMCAP_ll", "\33l" },
+ { "LESS_TERMCAP_mb", "\33b" },
+ { "LESS_TERMCAP_md", "\33d" },
+ { "LESS_TERMCAP_md", "\33e" },
+ { "LESS_TERMCAP_se", "\33t" },
+ { "LESS_TERMCAP_so", "\33s" },
+ { "LESS_TERMCAP_sr", "\33r" },
+ { "LESS_TERMCAP_ue", "\33v" },
+ { "LESS_TERMCAP_uo", "\33u" },
+ { "LESS_TERMCAP_vb", "\33g" },
+ { "LESS_TERMCAP_kr", terminfo.key_right ? terminfo.key_right : "" },
+ { "LESS_TERMCAP_kl", terminfo.key_left ? terminfo.key_left : "" },
+ { "LESS_TERMCAP_ku", terminfo.key_up ? terminfo.key_up : "" },
+ { "LESS_TERMCAP_kd", terminfo.key_down ? terminfo.key_down : "" },
+ { "LESS_TERMCAP_kh", terminfo.key_home ? terminfo.key_home : "" },
+ { "LESS_TERMCAP_@7", terminfo.key_end ? terminfo.key_end : "" },
+ };
+ for (int i = 0; i < countof(tcvars); ++i) {
+ struct tcvar* tc = &tcvars[i];
+ env_addpair(env, tc->name, tc->value);
+ log_env(tc->name, strlen(tc->name), tc->value);
+ }
for (char* const* envp = prog_env; *envp != NULL; ++envp) {
const char* ename = *envp;
const char* eq = strchr(ename, '=');
diff --git a/lesstest/maketest b/lesstest/maketest
new file mode 100755
index 0000000..42ce5ac
--- /dev/null
+++ b/lesstest/maketest
@@ -0,0 +1,24 @@
+#!/usr/bin/perl
+use strict;
+
+# Create a test file.
+my $usage = "usage: maketest [-o lt-file] [-l less.exe] [-s lt_screen] [-t lesstest] [-w width] [-h height] textfile\n";
+
+use Getopt::Std;
+
+exit main();
+sub main {
+ my %opt;
+ die $usage if not getopts('h:l:o:s:t:w:', \%opt);
+ my $textfile = shift @ARGV;
+ die $usage if not defined $textfile;
+ my $lesstest = ($opt{t} or "./lesstest");
+ my $lt_screen = ($opt{s} or "./lt_screen");
+ my $less = ($opt{l} or "../obj/less");
+ my $ltfile = ($opt{o} or "lt/$textfile.lt");
+ my $lines = ($opt{h} or $ENV{LINES}-1);
+ my $columns = ($opt{w} or $ENV{COLUMNS}-1);
+
+ my $cmd = "LINES=$lines COLUMNS=$columns $lesstest -o '$ltfile' -- $less '$textfile'";
+ exit system $cmd;
+}
--
2.27.0