archive.sh 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. #!/bin/sh
  2. # $1 - action
  3. # $2 - type of file
  4. # $3 - pager
  5. action=$1
  6. filetype=$2
  7. pager=$3
  8. [ -n "${MC_XDG_OPEN}" ] || MC_XDG_OPEN="xdg-open"
  9. do_view_action() {
  10. filetype=$1
  11. case "${filetype}" in
  12. gz)
  13. gzip -dc "${MC_EXT_FILENAME}" 2>/dev/null
  14. ;;
  15. bz2)
  16. bzip2 -dc "${MC_EXT_FILENAME}" 2>/dev/null
  17. ;;
  18. bzip)
  19. bzip2 -dc "${MC_EXT_FILENAME}" 2>/dev/null
  20. ;;
  21. lz)
  22. lzip -dc "${MC_EXT_FILENAME}" 2>/dev/null
  23. ;;
  24. lz4)
  25. lz4 -dc "${MC_EXT_FILENAME}" 2>/dev/null
  26. ;;
  27. lzma)
  28. lzma -dc "${MC_EXT_FILENAME}" 2>/dev/null
  29. ;;
  30. xz)
  31. xz -dc "${MC_EXT_FILENAME}" 2>/dev/null
  32. ;;
  33. zst)
  34. zstd -dc "${MC_EXT_FILENAME}" 2>/dev/null
  35. ;;
  36. tar)
  37. tar tvvf - < "${MC_EXT_FILENAME}"
  38. ;;
  39. tar.gz|tar.qpr)
  40. gzip -dc "${MC_EXT_FILENAME}" 2>/dev/null | \
  41. tar tvvf -
  42. ;;
  43. tar.bzip)
  44. bzip -dc "${MC_EXT_FILENAME}" 2>/dev/null | \
  45. tar tvvf -
  46. ;;
  47. tar.bzip2)
  48. bzip2 -dc "${MC_EXT_FILENAME}" 2>/dev/null | \
  49. tar tvvf -
  50. ;;
  51. tar.lz)
  52. lzip -dc "${MC_EXT_FILENAME}" 2>/dev/null | \
  53. tar tvvf -
  54. ;;
  55. tar.lz4)
  56. lz4 -dc "${MC_EXT_FILENAME}" 2>/dev/null | \
  57. tar tvvf -
  58. ;;
  59. tar.lzma)
  60. lzma -dc "${MC_EXT_FILENAME}" 2>/dev/null | \
  61. tar tvvf -
  62. ;;
  63. tar.xz)
  64. xz -dc "${MC_EXT_FILENAME}" 2>/dev/null | \
  65. tar tvvf -
  66. ;;
  67. tar.zst|tzst)
  68. zstd -dc "${MC_EXT_FILENAME}" 2>/dev/null | \
  69. tar tvvf -
  70. ;;
  71. tar.F)
  72. freeze -dc "${MC_EXT_FILENAME}" 2>/dev/null | \
  73. tar tvvf -
  74. ;;
  75. lha)
  76. lha l "${MC_EXT_FILENAME}" 2>/dev/null || \
  77. jlha l "${MC_EXT_FILENAME}" 2>/dev/null || \
  78. lhasa l "${MC_EXT_FILENAME}" 2>/dev/null
  79. ;;
  80. arj)
  81. arj l "${MC_EXT_FILENAME}" 2>/dev/null || \
  82. unarj l "${MC_EXT_FILENAME}" 2>/dev/null || \
  83. 7za l "${MC_EXT_FILENAME}" 2>/dev/null
  84. ;;
  85. cab)
  86. cabextract -l "${MC_EXT_FILENAME}" 2> /dev/null || \
  87. 7za l "${MC_EXT_FILENAME}" 2>/dev/null
  88. ;;
  89. ha)
  90. ha lf "${MC_EXT_FILENAME}"
  91. ;;
  92. rar)
  93. rar v -c- "${MC_EXT_FILENAME}" 2>/dev/null || \
  94. unrar v -c- "${MC_EXT_FILENAME}"
  95. ;;
  96. alz)
  97. unalz -l "${MC_EXT_FILENAME}"
  98. ;;
  99. cpio.z|cpio.gz)
  100. gzip -dc "${MC_EXT_FILENAME}" | \
  101. cpio -itv 2>/dev/null
  102. ;;
  103. cpio.lz)
  104. lzip -dc "${MC_EXT_FILENAME}" | \
  105. cpio -itv 2>/dev/null
  106. ;;
  107. cpio.lz4)
  108. lz4 -dc "${MC_EXT_FILENAME}" | \
  109. cpio -itv 2>/dev/null
  110. ;;
  111. cpio.xz)
  112. xz -dc "${MC_EXT_FILENAME}" | \
  113. cpio -itv 2>/dev/null
  114. ;;
  115. cpio.zst)
  116. zstd -dc "${MC_EXT_FILENAME}" | \
  117. cpio -itv 2>/dev/null
  118. ;;
  119. cpio)
  120. cpio -itv < "${MC_EXT_FILENAME}" 2>/dev/null
  121. ;;
  122. 7z)
  123. 7za l "${MC_EXT_FILENAME}" 2>/dev/null ||
  124. 7z l "${MC_EXT_FILENAME}"
  125. ;;
  126. ace)
  127. unace l "${MC_EXT_FILENAME}"
  128. ;;
  129. arc)
  130. arc l "${MC_EXT_FILENAME}"
  131. ;;
  132. zip)
  133. unzip -v "${MC_EXT_FILENAME}" 2> /dev/null || \
  134. 7za l "${MC_EXT_FILENAME}" 2> /dev/null
  135. ;;
  136. zipx)
  137. 7za l "${MC_EXT_FILENAME}" 2> /dev/null
  138. ;;
  139. zoo)
  140. zoo l "${MC_EXT_FILENAME}"
  141. ;;
  142. wim)
  143. wimlib-imagex info "${MC_EXT_FILENAME}" 2> /dev/null
  144. ;;
  145. *)
  146. ;;
  147. esac
  148. }
  149. do_open_action() {
  150. filetype=$1
  151. pager=$2
  152. case "${filetype}" in
  153. bzip2)
  154. bzip2 -dc "${MC_EXT_FILENAME}" | ${pager}
  155. ;;
  156. bzip)
  157. bzip -dc "${MC_EXT_FILENAME}" | ${pager}
  158. ;;
  159. gz)
  160. gz -dc "${MC_EXT_FILENAME}" | ${pager}
  161. ;;
  162. lz)
  163. lzip -dc "${MC_EXT_FILENAME}" | ${pager}
  164. ;;
  165. lz4)
  166. lz4 -dc "${MC_EXT_FILENAME}" | ${pager}
  167. ;;
  168. lzma)
  169. lzma -dc "${MC_EXT_FILENAME}" | ${pager}
  170. ;;
  171. xz)
  172. xz -dc "${MC_EXT_FILENAME}" | ${pager}
  173. ;;
  174. zst)
  175. zstd -dc "${MC_EXT_FILENAME}" | ${pager}
  176. ;;
  177. par2)
  178. par2 r "${MC_EXT_FILENAME}"
  179. ;;
  180. *)
  181. ;;
  182. esac
  183. }
  184. case "${action}" in
  185. view)
  186. do_view_action "${filetype}"
  187. ;;
  188. open)
  189. ("${MC_XDG_OPEN}" "${MC_EXT_FILENAME}" >/dev/null 2>&1) || \
  190. do_open_action "${filetype}" "${pager}"
  191. ;;
  192. *)
  193. ;;
  194. esac