#!/bin/sh # $Id: pager,v 1.4 2017/08/06 10:24:04 friedman Exp $ have() { type "$1" > /dev/null 2>&1; } setv() { eval _var=\${$1+isset} case $_var in isset ) return ;; esac _var=$1 shift eval $_var="'$*'" export $_var } setenv_less() { setv LESS -adefFgiqRsX -j4 -z-4 -h10 --no-keypad -m \ '-Pm--Less--?pB(%pB\%).%t$' \ '-PM--Less--?pB(%pB\% P=%dB/%D L=%lB/%L B=%bB/%B).%t$' setv LESSHISTFILE - if have lesspipe.sh; then setv LESSOPEN "|lesspipe.sh %s" fi } setenv_more() { setv MORE -s; } setenv_most() { setv MOST_SWITCHES -Cs; } # lesspipe.sh has the possibly convenient property that it will # automatically deal with compressed files and/or archive files to show # their archive members. lesspipe_or_cat() { if have lesspipe.sh; then for f in "$@"; do lesspipe.sh "$f" || ${CAT-cat} "$f" done exit $? else exec ${CAT-cat} "$@" fi } main() { case ${INSIDE_EMACS+t}${EMACS+t}:$TERM in *:eterm* ) : ;; t*:* | *:emacs* ) lesspipe_or_cat "$@" ;; esac for pg in ${PAGER_PROG+"$PAGER_PROG"} less more most cat; do if have "$pg"; then if have "setenv_$pg"; then "setenv_$pg"; fi exec "$pg" "$@" fi done } main "$@" # eof