xzless: Use ||- in LESSOPEN with with "less" 451 and newer.

(cherry picked from commit 9860d418d2)
(cherry picked from commit e5ba545f16)
This commit is contained in:
Lasse Collin 2024-02-09 23:21:01 +02:00
parent 3af41a23c4
commit 2c89f377cd
1 changed files with 8 additions and 1 deletions

View File

@ -48,7 +48,14 @@ if test "${LESSMETACHARS+set}" != set; then
fi fi
VER=$(less -V | { read _ ver _ && echo ${ver%%.*}; }) VER=$(less -V | { read _ ver _ && echo ${ver%%.*}; })
if test "$VER" -ge 429; then if test "$VER" -ge 451; then
# less 451 or later: If the compressed file is valid but has
# zero bytes of uncompressed data, using two vertical bars ||- makes
# "less" check the exit status of xz and if it is zero then display
# an empty file. With a single vertical bar |- and no output from xz,
# "less" would attempt to display the raw input file instead.
LESSOPEN="||-$xz -cdfqQ -- %s"
elif test "$VER" -ge 429; then
# less 429 or later: LESSOPEN pipe will be used on # less 429 or later: LESSOPEN pipe will be used on
# standard input if $LESSOPEN begins with |-. # standard input if $LESSOPEN begins with |-.
LESSOPEN="|-$xz -cdfqQ -- %s" LESSOPEN="|-$xz -cdfqQ -- %s"