123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- #!/bin/sh
- # $1 - action
- # $2 - type of archive
- # $3 - pager
- action=$1
- filetype=$2
- pager=$3
- [ -n "${MC_XDG_OPEN}" ] || MC_XDG_OPEN="xdg-open"
- get_unpacker() {
- filetype=$1
- case "${filetype}" in
- man.gz)
- unpacker="gzip -dc"
- ;;
- man.bz)
- unpacker="bzip -dc"
- ;;
- man.bz2)
- unpacker="bzip2 -dc"
- ;;
- man.lz)
- unpacker="lzip -dc"
- ;;
- man.lz4)
- unpacker="lz4 -dc"
- ;;
- man.lzma)
- unpacker="lzma -dc"
- ;;
- man.lzo)
- unpacker="lzop -dc"
- ;;
- man.xz)
- unpacker="xz -dc"
- ;;
- man.zst)
- unpacker="zstd -dc"
- ;;
- esac
- echo ${unpacker}
- }
- do_view_action() {
- filetype=$1
- unpacker=`get_unpacker ${filetype}`
- case "${filetype}" in
- man)
- case "${MC_EXT_FILENAME}" in
- */log/*|*/logs/*)
- cat "${MC_EXT_FILENAME}"
- ;;
- *)
- MANROFFOPT=-c MAN_KEEP_FORMATTING=1 man -P cat "${MC_EXT_FILENAME}"
- ;;
- esac
- ;;
- pod)
- pod2man "${MC_EXT_FILENAME}" | nroff @MAN_FLAGS@ @MANDOC@
- ;;
- nroff.me)
- nroff @MAN_FLAGS@ -me "${MC_EXT_FILENAME}"
- ;;
- nroff.ms)
- nroff @MAN_FLAGS@ -ms "${MC_EXT_FILENAME}"
- ;;
- man.gz|man.bz|man.bz2|man.lz|man.lz4|man.lzma|man.lzo|man.xz|man.zst)
- case "${MC_EXT_FILENAME}" in
- */log/*|*/logs/*)
- ${unpacker} "${MC_EXT_FILENAME}"
- ;;
- *)
- # "man" takes care of uncompressing.
- # This way the stdin is left intact so the correct width is used.
- MANROFFOPT=-c MAN_KEEP_FORMATTING=1 man -P cat "${MC_EXT_FILENAME}"
- ;;
- esac
- ;;
- *)
- ;;
- esac
- }
- do_open_action() {
- filetype=$1
- pager=$2
- unpacker=`get_unpacker ${filetype}`
- case "${filetype}" in
- info)
- info -f "${MC_EXT_FILENAME}"
- ;;
- man)
- case "${MC_EXT_FILENAME}" in
- */log/*|*/logs/*)
- cat "${MC_EXT_FILENAME}"
- ;;
- *)
- { zsoelim "${MC_EXT_FILENAME}" 2>/dev/null || cat "${MC_EXT_FILENAME}"; } | \
- nroff @MAN_FLAGS@ @MANDOC@
- ;;
- esac | ${pager}
- ;;
- pod)
- pod2man "${MC_EXT_FILENAME}" | nroff @MAN_FLAGS@ @MANDOC@ | ${pager}
- ;;
- nroff.me)
- nroff @MAN_FLAGS@ -me "${MC_EXT_FILENAME}" | ${pager}
- ;;
- nroff.ms)
- nroff @MAN_FLAGS@ -ms "${MC_EXT_FILENAME}" | ${pager}
- ;;
- man.gz|man.bz|man.bz2|man.lz|man.lz4|man.lzma|man.lzo|man.xz|man.zst)
- case "${MC_EXT_FILENAME}" in
- */log/*|*/logs/*)
- ${unpacker} "${MC_EXT_FILENAME}"
- ;;
- *)
- ${unpacker} "${MC_EXT_FILENAME}" | nroff @MAN_FLAGS@ @MANDOC@
- ;;
- esac | ${pager}
- ;;
- chm)
- if [ -n "$DISPLAY" ]; then
- command -v kchmviewer >/dev/null 2>&1 \
- && (kchmviewer "${MC_EXT_FILENAME}" &) \
- || (xchm "${MC_EXT_FILENAME}" &)
- else
- chm_http "${MC_EXT_FILENAME}" & elinks http://localhost:8080/index.html
- kill -INT %1
- fi
- ;;
- *)
- ;;
- esac
- }
- case "${action}" in
- view)
- do_view_action "${filetype}"
- ;;
- open)
- ("${MC_XDG_OPEN}" "${MC_EXT_FILENAME}" >/dev/null 2>&1) || \
- do_open_action "${filetype}" "${pager}"
- ;;
- *)
- ;;
- esac
|