less/backport-makecheck-0013-lesstest-accommodate-stupid-termcap-design-where-the.patch

149 lines
4.8 KiB
Diff

From 6222588ca3c784536b117a0cd04289b251046e6f Mon Sep 17 00:00:00 2001
From: Mark Nudelman <markn@greenwoodsoftware.com>
Date: Sun, 9 Oct 2022 15:30:49 -0700
Subject: [PATCH 07/48] lesstest: accommodate stupid termcap design where there
is no exit-bold or exit-blink capabilities.
---
lesstest/display.c | 17 ++++++++++++-----
lesstest/env.c | 2 +-
lesstest/lt_screen.c | 2 ++
lesstest/maketest | 8 +++++---
lesstest/runtest | 9 ++++++---
5 files changed, 26 insertions(+), 12 deletions(-)
diff --git a/lesstest/display.c b/lesstest/display.c
index dc1fa50..5c9355e 100644
--- a/lesstest/display.c
+++ b/lesstest/display.c
@@ -58,11 +58,18 @@ void display_screen(const byte* img, int imglen, int screen_width, int screen_he
}
}
literal = 0;
- if (ch != 0) {
- byte cbuf[UNICODE_MAX_BYTES];
- byte* cp = cbuf;
- store_wchar(&cp, ch);
- fwrite(cbuf, 1, cp-cbuf, stdout);
+ if (move_cursor) {
+ if (ch != 0) {
+ byte cbuf[UNICODE_MAX_BYTES];
+ byte* cp = cbuf;
+ store_wchar(&cp, ch);
+ fwrite(cbuf, 1, cp-cbuf, stdout);
+ }
+ } else {
+ if (is_ascii(ch))
+ fwrite(&ch, 1, 1, stdout);
+ else
+ printf("<%lx>", (unsigned long) ch);
}
if (++x >= screen_width) {
printf("\n");
diff --git a/lesstest/env.c b/lesstest/env.c
index 77bfda6..76d26d0 100644
--- a/lesstest/env.c
+++ b/lesstest/env.c
@@ -74,7 +74,7 @@ static void env_setup(EnvBuf* env, char* const* prog_env, int interactive) {
{ "LESS_TERMCAP_ll", "\33l" },
{ "LESS_TERMCAP_mb", "\33b" },
{ "LESS_TERMCAP_md", "\33d" },
- { "LESS_TERMCAP_md", "\33e" },
+ { "LESS_TERMCAP_me", "\33E" },
{ "LESS_TERMCAP_se", "\33t" },
{ "LESS_TERMCAP_so", "\33s" },
{ "LESS_TERMCAP_sr", "\33r" },
diff --git a/lesstest/lt_screen.c b/lesstest/lt_screen.c
index 1552557..3574320 100644
--- a/lesstest/lt_screen.c
+++ b/lesstest/lt_screen.c
@@ -254,6 +254,8 @@ static int exec_esc(wchar ch) {
return screen_set_attr(ATTR_BLINK);
case 'c': // exit blink
return screen_clear_attr(ATTR_BLINK);
+ case 'E': // exit bold/blink
+ return screen_clear_attr(ATTR_BOLD|ATTR_BLINK);
case '?': // print version string
write(ttyout, version, strlen(version));
return 1;
diff --git a/lesstest/maketest b/lesstest/maketest
index 42ce5ac..ee4ead7 100755
--- a/lesstest/maketest
+++ b/lesstest/maketest
@@ -2,14 +2,14 @@
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";
+my $usage = "usage: maketest [-o lt-file] [-l less.exe] [-s lt_screen] [-t lesstest] [-w width] [-h height] [-O lesstest-opts] textfile\n";
use Getopt::Std;
exit main();
sub main {
my %opt;
- die $usage if not getopts('h:l:o:s:t:w:', \%opt);
+ die $usage if not getopts('h:l:o:O:s:t:w:', \%opt);
my $textfile = shift @ARGV;
die $usage if not defined $textfile;
my $lesstest = ($opt{t} or "./lesstest");
@@ -18,7 +18,9 @@ sub main {
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 $lt_opts = ($opt{O} or "");
+ $lt_opts = "-$lt_opts" if $lt_opts =~ /^[^-]/;
- my $cmd = "LINES=$lines COLUMNS=$columns $lesstest -o '$ltfile' -- $less '$textfile'";
+ my $cmd = "LINES=$lines COLUMNS=$columns $lesstest $lt_opts -o '$ltfile' -- $less '$textfile'";
exit system $cmd;
}
diff --git a/lesstest/runtest b/lesstest/runtest
index 93ae80f..fe7fcab 100755
--- a/lesstest/runtest
+++ b/lesstest/runtest
@@ -2,7 +2,7 @@
use strict;
# Run one or more test files.
-my $usage = "usage: run [-d lesstest-dir] [-l less.exe] [-r temp-dir] [-s lt_screen] [-t lesstest] [file.lt | dir]...\n";
+my $usage = "usage: run [-d lesstest-dir] [-l less.exe] [-r temp-dir] [-s lt_screen] [-t lesstest] [-O lesstest-opts] [file.lt | dir]...\n";
use Getopt::Std;
use Cwd;
@@ -11,11 +11,12 @@ my $rundir;
my $lesstest;
my $lt_screen;
my $less;
+my $lt_opts;
exit main();
sub main {
my %opt;
- die $usage if not getopts('d:l:r:s:t:', \%opt);
+ die $usage if not getopts('d:l:O:r:s:t:', \%opt);
die $usage if not @ARGV;
my $cwd = getcwd();
@@ -24,6 +25,8 @@ sub main {
$lesstest = (rfile($opt{t}, $cwd) or "$srcdir/lesstest");
$lt_screen = (rfile($opt{s}, $cwd) or "$srcdir/lt_screen");
$less = (rfile($opt{l}, $cwd) or "$srcdir/../obj/less");
+ $lt_opts = ($opt{O} or "");
+ $lt_opts = "-$lt_opts" if $lt_opts =~ /^[^-]/;
die "cannot execute $lesstest" if not -x $lesstest;
die "cannot execute $lt_screen" if not -x $lt_screen;
die "cannot execute $less" if not -x $less;
@@ -57,7 +60,7 @@ sub run {
return 1;
}
print "TEST $file\n";
- my $cmd = "$lesstest -s '$lt_screen' -t '$file' '$less'";
+ my $cmd = "$lesstest $lt_opts -s '$lt_screen' -t '$file' '$less'";
my $err = system $cmd;
if ($err) {
print "ERR status $err from $cmd\n";
--
2.27.0