Merge branch '4524_cleanup'
[midnight-commander.git] / misc / ext.d / archive.sh
blob12beb0158f2b39a1d34901ed7f1b6799824abd90
1 #!/bin/sh
3 # $1 - action
4 # $2 - type of file
5 # $3 - pager
7 action=$1
8 filetype=$2
9 pager=$3
11 [ -n "${MC_XDG_OPEN}" ] || MC_XDG_OPEN="xdg-open"
13 do_view_action() {
14 filetype=$1
16 case "${filetype}" in
17 gz)
18 gzip -dc "${MC_EXT_FILENAME}" 2>/dev/null
20 bz2)
21 bzip2 -dc "${MC_EXT_FILENAME}" 2>/dev/null
23 bzip)
24 bzip2 -dc "${MC_EXT_FILENAME}" 2>/dev/null
26 lz)
27 lzip -dc "${MC_EXT_FILENAME}" 2>/dev/null
29 lz4)
30 lz4 -dc "${MC_EXT_FILENAME}" 2>/dev/null
32 lzma)
33 lzma -dc "${MC_EXT_FILENAME}" 2>/dev/null
35 lzo)
36 lzop -dc "${MC_EXT_FILENAME}" 2>/dev/null
38 xz)
39 xz -dc "${MC_EXT_FILENAME}" 2>/dev/null
41 zst)
42 zstd -dc "${MC_EXT_FILENAME}" 2>/dev/null
44 tar)
45 tar tvvf - < "${MC_EXT_FILENAME}"
47 tar.gz|tar.qpr)
48 gzip -dc "${MC_EXT_FILENAME}" 2>/dev/null | \
49 tar tvvf -
51 tar.bzip)
52 bzip -dc "${MC_EXT_FILENAME}" 2>/dev/null | \
53 tar tvvf -
55 tar.bzip2)
56 bzip2 -dc "${MC_EXT_FILENAME}" 2>/dev/null | \
57 tar tvvf -
59 tar.lz)
60 lzip -dc "${MC_EXT_FILENAME}" 2>/dev/null | \
61 tar tvvf -
63 tar.lz4)
64 lz4 -dc "${MC_EXT_FILENAME}" 2>/dev/null | \
65 tar tvvf -
67 tar.lzma)
68 lzma -dc "${MC_EXT_FILENAME}" 2>/dev/null | \
69 tar tvvf -
71 tar.lzo|tzo)
72 lzop -dc "${MC_EXT_FILENAME}" 2>/dev/null | \
73 tar tvvf -
75 tar.xz)
76 xz -dc "${MC_EXT_FILENAME}" 2>/dev/null | \
77 tar tvvf -
79 tar.zst|tzst)
80 zstd -dc "${MC_EXT_FILENAME}" 2>/dev/null | \
81 tar tvvf -
83 tar.F)
84 freeze -dc "${MC_EXT_FILENAME}" 2>/dev/null | \
85 tar tvvf -
88 lha)
89 lha l "${MC_EXT_FILENAME}" 2>/dev/null || \
90 jlha l "${MC_EXT_FILENAME}" 2>/dev/null || \
91 lhasa l "${MC_EXT_FILENAME}" 2>/dev/null
93 arj)
94 arj l "${MC_EXT_FILENAME}" 2>/dev/null || \
95 unarj l "${MC_EXT_FILENAME}" 2>/dev/null || \
96 7za l "${MC_EXT_FILENAME}" 2>/dev/null
98 cab)
99 cabextract -l "${MC_EXT_FILENAME}" 2> /dev/null || \
100 7za l "${MC_EXT_FILENAME}" 2>/dev/null
103 ha lf "${MC_EXT_FILENAME}"
105 rar)
106 rar v -c- "${MC_EXT_FILENAME}" 2>/dev/null || \
107 unrar v -c- "${MC_EXT_FILENAME}"
109 alz)
110 unalz -l "${MC_EXT_FILENAME}"
112 cpio.z|cpio.gz)
113 gzip -dc "${MC_EXT_FILENAME}" | \
114 cpio -itv 2>/dev/null
116 cpio.lz)
117 lzip -dc "${MC_EXT_FILENAME}" | \
118 cpio -itv 2>/dev/null
120 cpio.lz4)
121 lz4 -dc "${MC_EXT_FILENAME}" | \
122 cpio -itv 2>/dev/null
124 cpio.lzo)
125 lzop -dc "${MC_EXT_FILENAME}" | \
126 cpio -itv 2>/dev/null
128 cpio.xz)
129 xz -dc "${MC_EXT_FILENAME}" | \
130 cpio -itv 2>/dev/null
132 cpio.zst)
133 zstd -dc "${MC_EXT_FILENAME}" | \
134 cpio -itv 2>/dev/null
136 cpio)
137 cpio -itv < "${MC_EXT_FILENAME}" 2>/dev/null
140 7za l "${MC_EXT_FILENAME}" 2>/dev/null ||
141 7z l "${MC_EXT_FILENAME}"
144 ace)
145 unace l "${MC_EXT_FILENAME}"
147 arc)
148 arc l "${MC_EXT_FILENAME}"
150 zip)
151 unzip -v "${MC_EXT_FILENAME}" 2> /dev/null || \
152 7za l "${MC_EXT_FILENAME}" 2> /dev/null
154 zipx)
155 7za l "${MC_EXT_FILENAME}" 2> /dev/null
157 zoo)
158 zoo l "${MC_EXT_FILENAME}"
160 wim)
161 wimlib-imagex info "${MC_EXT_FILENAME}" 2> /dev/null
165 esac
168 do_open_action() {
169 filetype=$1
170 pager=$2
172 case "${filetype}" in
173 bzip2)
174 bzip2 -dc "${MC_EXT_FILENAME}" | ${pager}
176 bzip)
177 bzip -dc "${MC_EXT_FILENAME}" | ${pager}
180 gz -dc "${MC_EXT_FILENAME}" | ${pager}
183 lzip -dc "${MC_EXT_FILENAME}" | ${pager}
185 lz4)
186 lz4 -dc "${MC_EXT_FILENAME}" | ${pager}
188 lzma)
189 lzma -dc "${MC_EXT_FILENAME}" | ${pager}
191 lzo)
192 lzop -dc "${MC_EXT_FILENAME}" | ${pager}
195 xz -dc "${MC_EXT_FILENAME}" | ${pager}
197 zst)
198 zstd -dc "${MC_EXT_FILENAME}" | ${pager}
200 par2)
201 par2 r "${MC_EXT_FILENAME}"
205 esac
208 case "${action}" in
209 view)
210 do_view_action "${filetype}"
212 open)
213 ("${MC_XDG_OPEN}" "${MC_EXT_FILENAME}" >/dev/null 2>&1) || \
214 do_open_action "${filetype}" "${pager}"
218 esac