From 1b01b0e4c7b7e0aa8087835452a277778450e0a7 Mon Sep 17 00:00:00 2001 From: Mark Nudelman 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