Ticket #2673: support LZIP compression.
[midnight-commander.git] / misc / ext.d / archive.sh
blob91f8c50fcf9b29b30c116f67abb945f8a8b8569d
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 xz)
36 xz -dc "${MC_EXT_FILENAME}" 2>/dev/null
38 tar)
39 tar tvvf - < "${MC_EXT_FILENAME}"
41 tar.gz|tar.qpr)
42 gzip -dc "${MC_EXT_FILENAME}" 2>/dev/null | \
43 tar tvvf -
45 tar.bzip)
46 bzip -dc "${MC_EXT_FILENAME}" 2>/dev/null | \
47 tar tvvf -
49 tar.bzip2)
50 bzip2 -dc "${MC_EXT_FILENAME}" 2>/dev/null | \
51 tar tvvf -
53 tar.lz)
54 lzip -dc "${MC_EXT_FILENAME}" 2>/dev/null | \
55 tar tvvf -
57 tar.lz4)
58 lz4 -dc "${MC_EXT_FILENAME}" 2>/dev/null | \
59 tar tvvf -
61 tar.lzma)
62 lzma -dc "${MC_EXT_FILENAME}" 2>/dev/null | \
63 tar tvvf -
65 tar.xz)
66 xz -dc "${MC_EXT_FILENAME}" 2>/dev/null | \
67 tar tvvf -
69 tar.F)
70 freeze -dc "${MC_EXT_FILENAME}" 2>/dev/null | \
71 tar tvvf -
74 lha)
75 lha l "${MC_EXT_FILENAME}"
77 arj)
78 arj l "${MC_EXT_FILENAME}" 2>/dev/null || \
79 unarj l "${MC_EXT_FILENAME}"
81 cab)
82 cabextract -l "${MC_EXT_FILENAME}"
84 ha)
85 ha lf "${MC_EXT_FILENAME}"
87 rar)
88 rar v -c- "${MC_EXT_FILENAME}" 2>/dev/null || \
89 unrar v -c- "${MC_EXT_FILENAME}"
91 alz)
92 unalz -l "${MC_EXT_FILENAME}"
94 cpio.z|cpio.gz)
95 gzip -dc "${MC_EXT_FILENAME}" | \
96 cpio -itv 2>/dev/null
98 cpio.lz)
99 lzip -dc "${MC_EXT_FILENAME}" | \
100 cpio -itv 2>/dev/null
102 cpio.lz4)
103 lz4 -dc "${MC_EXT_FILENAME}" | \
104 cpio -itv 2>/dev/null
106 cpio.xz)
107 xz -dc "${MC_EXT_FILENAME}" | \
108 cpio -itv 2>/dev/null
110 cpio)
111 cpio -itv < "${MC_EXT_FILENAME}" 2>/dev/null
114 7za l "${MC_EXT_FILENAME}" 2>/dev/null ||
115 7z l "${MC_EXT_FILENAME}"
118 ace)
119 unace l "${MC_EXT_FILENAME}"
121 arc)
122 arc l "${MC_EXT_FILENAME}"
124 zip)
125 unzip -v "${MC_EXT_FILENAME}"
127 zoo)
128 zoo l "${MC_EXT_FILENAME}"
132 esac
135 do_open_action() {
136 filetype=$1
137 pager=$2
139 case "${filetype}" in
140 bzip2)
141 bzip2 -dc "${MC_EXT_FILENAME}" | ${pager}
143 bzip)
144 bzip -dc "${MC_EXT_FILENAME}" | ${pager}
147 gz -dc "${MC_EXT_FILENAME}" | ${pager}
150 lzip -dc "${MC_EXT_FILENAME}" | ${pager}
152 lz4)
153 lz4 -dc "${MC_EXT_FILENAME}" | ${pager}
155 lzma)
156 lzma -dc "${MC_EXT_FILENAME}" | ${pager}
159 xz -dc "${MC_EXT_FILENAME}" | ${pager}
161 par2)
162 par2 r "${MC_EXT_FILENAME}"
166 esac
169 case "${action}" in
170 view)
171 do_view_action "${filetype}"
173 open)
174 ("${MC_XDG_OPEN}" "${MC_EXT_FILENAME}" >/dev/null 2>&1 &) || \
175 do_open_action "${filetype}" "${pager}"
179 esac