diff options
author | Mike Frysinger <vapier@gentoo.org> | 2019-09-15 03:46:01 -0400 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2019-09-15 03:50:59 -0400 |
commit | 741f5ec1e6d6668a9e51d292cc5c1e34a4f905c2 (patch) | |
tree | 979c383d4e870f097d8b212e24e4750f75294750 | |
parent | Revert "app-shells/bash: remove unused patches." (diff) | |
download | gentoo-741f5ec1e6d6668a9e51d292cc5c1e34a4f905c2.tar.gz gentoo-741f5ec1e6d6668a9e51d292cc5c1e34a4f905c2.tar.bz2 gentoo-741f5ec1e6d6668a9e51d292cc5c1e34a4f905c2.zip |
sys-apps/less: lesspipe: minor improvements
* Add/update copyright/license headers.
* Test whether LESSDEBUG is set rather than its value
* Fix `stat` usage on pseudo paths (e.g. URIs) & names that start with -
* Add a .json print handler via python
* Process https:// URIs like http://
* Try elinks in addition to & before other CLI browsers
* Tweak quoting in a few places as shellcheck highlighted
* Check $# -eq 0 so we don't treat "" as missing arguments
* Don't run lesspipe twice when it fails & LESSDEBUG is enabled
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
-rwxr-xr-x | sys-apps/less/files/lesspipe.sh | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/sys-apps/less/files/lesspipe.sh b/sys-apps/less/files/lesspipe.sh index 66078850cbda..68ec0f67926d 100755 --- a/sys-apps/less/files/lesspipe.sh +++ b/sys-apps/less/files/lesspipe.sh @@ -1,11 +1,13 @@ #!/bin/bash -# +# Copyright 1999-2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + # Preprocessor for 'less'. Used when this environment variable is set: # LESSOPEN="|lesspipe %s" # TODO: handle compressed files better -[[ -n ${LESSDEBUG} ]] && set -x +[[ -n ${LESSDEBUG+set} ]] && set -x trap 'exit 0' PIPE @@ -64,8 +66,9 @@ lesspipe() { ls -alF -- "$1" return elif [[ ! -f $1 ]] ; then - stat "$1" - return + # Only return if the stat passes. This is needed to handle pseudo + # arguments like URIs. + stat -- "$1" && return fi case "${match}" in @@ -104,10 +107,11 @@ lesspipe() { *.doc) antiword "$1" || catdoc "$1" ;; *.rtf) unrtf --nopict --text "$1" ;; *.conf|*.txt|*.log) ;; # force less to work on these directly #150256 + *.json) python -mjson.tool "$1" ;; ### URLs ### - ftp://*|http://*|*.htm|*.html) - for b in links2 links lynx ; do + ftp://*|http://*|https://|*.htm|*.html) + for b in elinks links2 links lynx ; do ${b} -dump "$1" && exit 0 done html2text -style pretty "$1" @@ -120,7 +124,7 @@ lesspipe() { *.tar.lzma|*.tar.xz) ${DECOMPRESSOR} -- "$1" | tar tvvf -;; *.tbz2|*.tbz|*.tgz|*.tlz|*.txz) - lesspipe "$1" "$1".tar.${1##*.t} ;; + lesspipe "$1" "$1.tar.${1##*.t}" ;; ### Misc archives ### *.bz2|\ @@ -207,7 +211,7 @@ lesspipe() { *) case $(( recur++ )) in # Maybe we didn't match due to case issues ... - 0) lesspipe "$1" "$(echo $1 | LC_ALL=C tr '[:upper:]' '[:lower:]')" ;; + 0) lesspipe "$1" "$(echo "$1" | LC_ALL=C tr '[:upper:]' '[:lower:]')" ;; # Maybe we didn't match because the file is named weird ... 1) lesspipe_file "$1" ;; @@ -241,12 +245,12 @@ lesspipe() { esac } -if [[ -z $1 ]] ; then +if [[ $# -eq 0 ]] ; then echo "Usage: lesspipe <file>" elif [[ $1 == "-V" || $1 == "--version" ]] ; then cat <<-EOF lesspipe (git) - Copyright 2001-2016 Gentoo Foundation + Copyright 1999-2019 Gentoo Authors Mike Frysinger <vapier@gentoo.org> (with plenty of ideas stolen from other projects/distros) @@ -275,7 +279,6 @@ elif [[ $1 == "-h" || $1 == "--help" ]] ; then EOF else recur=0 - [[ -n ${LESSDEBUG} ]] \ - && lesspipe "$1" \ - || lesspipe "$1" 2> /dev/null + [[ -z ${LESSDEBUG+set} ]] && exec 2>/dev/null + lesspipe "$1" fi |