mcedit: make backward search interruptible.
[midnight-commander.git] / misc / ext.d / text.sh.in
blobb47425876b430623957050d28951ff5caf897eb4
1 #!/bin/sh
3 # $1 - action
4 # $2 - type of archive
5 # $3 - pager
7 action=$1
8 filetype=$2
9 pager=$3
11 [ -n "${MC_XDG_OPEN}" ] || MC_XDG_OPEN="xdg-open"
13 get_unpacker() {
14 filetype=$1
15 case "${filetype}" in
16 man.gz)
17 unpacker="gzip -dc"
19 man.bz)
20 unpacker="bzip -dc"
22 man.bz2)
23 unpacker="bzip2 -dc"
25 man.lz)
26 unpacker="lzip -dc"
28 man.lz4)
29 unpacker="lz4 -dc"
31 man.lzma)
32 unpacker="lzma -dc"
34 man.xz)
35 unpacker="xz -dc"
37 esac
38 echo ${unpacker}
42 do_view_action() {
43 filetype=$1
45 unpacker=`get_unpacker ${filetype}`
47 case "${filetype}" in
48 man)
49 case "${MC_EXT_FILENAME}" in
50 */log/*|*/logs/*)
51 cat "${MC_EXT_FILENAME}"
54 MANROFFOPT=-c MAN_KEEP_FORMATTING=1 man -P cat "${MC_EXT_FILENAME}"
56 esac
58 pod)
59 pod2man "${MC_EXT_FILENAME}" | nroff @MAN_FLAGS@ @MANDOC@
61 nroff.me)
62 nroff @MAN_FLAGS@ -me "${MC_EXT_FILENAME}"
64 nroff.ms)
65 nroff @MAN_FLAGS@ -ms "${MC_EXT_FILENAME}"
67 man.gz|man.bz|man.bz2|man.lz|man.lz4|man.lzma|man.xz)
68 case "${MC_EXT_FILENAME}" in
69 */log/*|*/logs/*)
70 ${unpacker} "${MC_EXT_FILENAME}"
73 # "man" takes care of uncompressing.
74 # This way the stdin is left intact so the correct width is used.
75 MANROFFOPT=-c MAN_KEEP_FORMATTING=1 man -P cat "${MC_EXT_FILENAME}"
77 esac
81 esac
84 do_open_action() {
85 filetype=$1
86 pager=$2
88 unpacker=`get_unpacker ${filetype}`
90 case "${filetype}" in
91 info)
92 info -f "${MC_EXT_FILENAME}"
94 man)
95 case "${MC_EXT_FILENAME}" in
96 */log/*|*/logs/*)
97 cat "${MC_EXT_FILENAME}"
100 { zsoelim "${MC_EXT_FILENAME}" 2>/dev/null || cat "${MC_EXT_FILENAME}"; } | \
101 nroff @MAN_FLAGS@ @MANDOC@
103 esac | ${pager}
105 pod)
106 pod2man "${MC_EXT_FILENAME}" | nroff @MAN_FLAGS@ @MANDOC@ | ${pager}
108 nroff.me)
109 nroff @MAN_FLAGS@ -me "${MC_EXT_FILENAME}" | ${pager}
111 nroff.ms)
112 nroff @MAN_FLAGS@ -ms "${MC_EXT_FILENAME}" | ${pager}
114 man.gz|man.bz|man.bz2|man.lz|man.lz4|man.lzma|man.xz)
115 case "${MC_EXT_FILENAME}" in
116 */log/*|*/logs/*)
117 ${unpacker} "${MC_EXT_FILENAME}"
120 ${unpacker} "${MC_EXT_FILENAME}" | nroff @MAN_FLAGS@ @MANDOC@
122 esac | ${pager}
124 chm)
125 if [ -n "$DISPLAY" ]; then
126 which kchmviewer > /dev/null 2>&1 \
127 && (kchmviewer "${MC_EXT_FILENAME}" &) \
128 || (xchm "${MC_EXT_FILENAME}" &)
129 else
130 chm_http "${MC_EXT_FILENAME}" & elinks http://localhost:8080/index.html
131 kill -INT %1
136 esac
139 case "${action}" in
140 view)
141 do_view_action "${filetype}"
143 open)
144 ("${MC_XDG_OPEN}" "${MC_EXT_FILENAME}" >/dev/null 2>&1) || \
145 do_open_action "${filetype}" "${pager}"
149 esac