archive.sh 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  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}"
  77. ;;
  78. arj)
  79. arj l "${MC_EXT_FILENAME}" 2>/dev/null || \
  80. unarj l "${MC_EXT_FILENAME}"
  81. ;;
  82. cab)
  83. cabextract -l "${MC_EXT_FILENAME}"
  84. ;;
  85. ha)
  86. ha lf "${MC_EXT_FILENAME}"
  87. ;;
  88. rar)
  89. rar v -c- "${MC_EXT_FILENAME}" 2>/dev/null || \
  90. unrar v -c- "${MC_EXT_FILENAME}"
  91. ;;
  92. alz)
  93. unalz -l "${MC_EXT_FILENAME}"
  94. ;;
  95. cpio.z|cpio.gz)
  96. gzip -dc "${MC_EXT_FILENAME}" | \
  97. cpio -itv 2>/dev/null
  98. ;;
  99. cpio.lz)
  100. lzip -dc "${MC_EXT_FILENAME}" | \
  101. cpio -itv 2>/dev/null
  102. ;;
  103. cpio.lz4)
  104. lz4 -dc "${MC_EXT_FILENAME}" | \
  105. cpio -itv 2>/dev/null
  106. ;;
  107. cpio.xz)
  108. xz -dc "${MC_EXT_FILENAME}" | \
  109. cpio -itv 2>/dev/null
  110. ;;
  111. cpio.zst)
  112. zstd -dc "${MC_EXT_FILENAME}" | \
  113. cpio -itv 2>/dev/null
  114. ;;
  115. cpio)
  116. cpio -itv < "${MC_EXT_FILENAME}" 2>/dev/null
  117. ;;
  118. 7z)
  119. 7za l "${MC_EXT_FILENAME}" 2>/dev/null ||
  120. 7z l "${MC_EXT_FILENAME}"
  121. ;;
  122. ace)
  123. unace l "${MC_EXT_FILENAME}"
  124. ;;
  125. arc)
  126. arc l "${MC_EXT_FILENAME}"
  127. ;;
  128. zip)
  129. unzip -v "${MC_EXT_FILENAME}"
  130. ;;
  131. zoo)
  132. zoo l "${MC_EXT_FILENAME}"
  133. ;;
  134. *)
  135. ;;
  136. esac
  137. }
  138. do_open_action() {
  139. filetype=$1
  140. pager=$2
  141. case "${filetype}" in
  142. bzip2)
  143. bzip2 -dc "${MC_EXT_FILENAME}" | ${pager}
  144. ;;
  145. bzip)
  146. bzip -dc "${MC_EXT_FILENAME}" | ${pager}
  147. ;;
  148. gz)
  149. gz -dc "${MC_EXT_FILENAME}" | ${pager}
  150. ;;
  151. lz)
  152. lzip -dc "${MC_EXT_FILENAME}" | ${pager}
  153. ;;
  154. lz4)
  155. lz4 -dc "${MC_EXT_FILENAME}" | ${pager}
  156. ;;
  157. lzma)
  158. lzma -dc "${MC_EXT_FILENAME}" | ${pager}
  159. ;;
  160. xz)
  161. xz -dc "${MC_EXT_FILENAME}" | ${pager}
  162. ;;
  163. zst)
  164. zstd -dc "${MC_EXT_FILENAME}" | ${pager}
  165. ;;
  166. par2)
  167. par2 r "${MC_EXT_FILENAME}"
  168. ;;
  169. *)
  170. ;;
  171. esac
  172. }
  173. case "${action}" in
  174. view)
  175. do_view_action "${filetype}"
  176. ;;
  177. open)
  178. ("${MC_XDG_OPEN}" "${MC_EXT_FILENAME}" >/dev/null 2>&1) || \
  179. do_open_action "${filetype}" "${pager}"
  180. ;;
  181. *)
  182. ;;
  183. esac