Ticket #2739: add support of PAR archives.
[midnight-commander.git] / misc / ext.d / archive.sh
blobb533f0557089e9fb9adf97cda111205f81643533
1 #!/bin/sh
3 # $1 - action
4 # $2 - type of file
5 # $3 - pager
7 action=$1
8 filetype=$2
9 pager=$3
11 do_view_action() {
12 filetype=$1
14 case "${filetype}" in
15 gz)
16 gzip -dc "${MC_EXT_FILENAME}" 2>/dev/null
18 bz2)
19 bzip2 -dc "${MC_EXT_FILENAME}" 2>/dev/null
21 bzip)
22 bzip2 -dc "${MC_EXT_FILENAME}" 2>/dev/null
24 lzma)
25 lzma -dc "${MC_EXT_FILENAME}" 2>/dev/null
27 xz)
28 xz -dc "${MC_EXT_FILENAME}" 2>/dev/null
30 tar)
31 tar tvvf - < "${MC_EXT_FILENAME}"
33 tar.gz|tar.qpr)
34 gzip -dc "${MC_EXT_FILENAME}" 2>/dev/null | \
35 tar tvvf -
37 tar.bzip)
38 bzip -dc "${MC_EXT_FILENAME}" 2>/dev/null | \
39 tar tvvf -
41 tar.bzip2)
42 bzip2 -dc "${MC_EXT_FILENAME}" 2>/dev/null | \
43 tar tvvf -
45 tar.lzma)
46 lzma -dc "${MC_EXT_FILENAME}" 2>/dev/null | \
47 tar tvvf -
49 tar.xz)
50 xz -dc "${MC_EXT_FILENAME}" 2>/dev/null | \
51 tar tvvf -
53 tar.F)
54 freeze -dc "${MC_EXT_FILENAME}" 2>/dev/null | \
55 tar tvvf -
58 lha)
59 lha l "${MC_EXT_FILENAME}"
61 arj)
62 arj l "${MC_EXT_FILENAME}" 2>/dev/null || \
63 unarj l "${MC_EXT_FILENAME}"
65 cab)
66 cabextract -l "${MC_EXT_FILENAME}"
68 ha)
69 ha lf "${MC_EXT_FILENAME}"
71 rar)
72 rar v -c- "${MC_EXT_FILENAME}" 2>/dev/null || \
73 unrar v -c- "${MC_EXT_FILENAME}"
75 alz)
76 unalz -l "${MC_EXT_FILENAME}"
78 cpio.z|cpio.gz)
79 gzip -dc "${MC_EXT_FILENAME}" | \
80 cpio -itv 2>/dev/null
82 cpio.xz)
83 xz -dc "${MC_EXT_FILENAME}" | \
84 cpio -itv 2>/dev/null
86 cpio)
87 cpio -itv < "${MC_EXT_FILENAME}" 2>/dev/null
89 7z)
90 7za l "${MC_EXT_FILENAME}" 2>/dev/null ||
91 7z l "${MC_EXT_FILENAME}"
94 ace)
95 unace l "${MC_EXT_FILENAME}"
97 arc)
98 arc l "${MC_EXT_FILENAME}"
100 zip)
101 unzip -v "${MC_EXT_FILENAME}"
103 zoo)
104 zoo l "${MC_EXT_FILENAME}"
108 esac
111 do_open_action() {
112 filetype=$1
113 pager=$2
115 case "${filetype}" in
116 bzip2)
117 bzip2 -dc "${MC_EXT_FILENAME}" | ${pager}
119 bzip)
120 bzip -dc "${MC_EXT_FILENAME}" | ${pager}
123 gz -dc "${MC_EXT_FILENAME}" | ${pager}
125 lzma)
126 lzma -dc "${MC_EXT_FILENAME}" | ${pager}
129 xz -dc "${MC_EXT_FILENAME}" | ${pager}
131 par2)
132 par2 r "${MC_EXT_FILENAME}"
136 esac
139 case "${action}" in
140 view)
141 do_view_action "${filetype}"
143 open)
144 xdg-open "${MC_EXT_FILENAME}" 2>/dev/null || \
145 do_open_action "${filetype}" "${pager}"
149 esac