archive.sh 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. #!/bin/sh
  2. # $1 - action
  3. # $2 - type of file
  4. # $3 - pager
  5. action=$1
  6. filetype=$2
  7. pager=$3
  8. do_view_action() {
  9. filetype=$1
  10. case "${filetype}" in
  11. gz)
  12. gzip -dc "${MC_EXT_FILENAME}" 2>/dev/null
  13. ;;
  14. bz2)
  15. bzip2 -dc "${MC_EXT_FILENAME}" 2>/dev/null
  16. ;;
  17. bzip)
  18. bzip2 -dc "${MC_EXT_FILENAME}" 2>/dev/null
  19. ;;
  20. lzma)
  21. lzma -dc "${MC_EXT_FILENAME}" 2>/dev/null
  22. ;;
  23. xz)
  24. xz -dc "${MC_EXT_FILENAME}" 2>/dev/null
  25. ;;
  26. tar)
  27. tar tvvf - < "${MC_EXT_FILENAME}"
  28. ;;
  29. tar.gz|tar.qpr)
  30. gzip -dc "${MC_EXT_FILENAME}" 2>/dev/null | \
  31. tar tvvf -
  32. ;;
  33. tar.bzip)
  34. bzip -dc "${MC_EXT_FILENAME}" 2>/dev/null | \
  35. tar tvvf -
  36. ;;
  37. tar.bzip2)
  38. bzip2 -dc "${MC_EXT_FILENAME}" 2>/dev/null | \
  39. tar tvvf -
  40. ;;
  41. tar.lzma)
  42. lzma -dc "${MC_EXT_FILENAME}" 2>/dev/null | \
  43. tar tvvf -
  44. ;;
  45. tar.xz)
  46. xz -dc "${MC_EXT_FILENAME}" 2>/dev/null | \
  47. tar tvvf -
  48. ;;
  49. tar.F)
  50. freeze -dc "${MC_EXT_FILENAME}" 2>/dev/null | \
  51. tar tvvf -
  52. ;;
  53. lha)
  54. lha l "${MC_EXT_FILENAME}"
  55. ;;
  56. arj)
  57. arj l "${MC_EXT_FILENAME}" 2>/dev/null || \
  58. unarj l "${MC_EXT_FILENAME}"
  59. ;;
  60. cab)
  61. cabextract -l "${MC_EXT_FILENAME}"
  62. ;;
  63. ha)
  64. ha lf "${MC_EXT_FILENAME}"
  65. ;;
  66. rar)
  67. rar v -c- "${MC_EXT_FILENAME}" 2>/dev/null || \
  68. unrar v -c- "${MC_EXT_FILENAME}"
  69. ;;
  70. alz)
  71. unalz -l "${MC_EXT_FILENAME}"
  72. ;;
  73. cpio.z|cpio.gz)
  74. gzip -dc "${MC_EXT_FILENAME}" | \
  75. cpio -itv 2>/dev/null
  76. ;;
  77. cpio.xz)
  78. xz -dc "${MC_EXT_FILENAME}" | \
  79. cpio -itv 2>/dev/null
  80. ;;
  81. cpio)
  82. cpio -itv < "${MC_EXT_FILENAME}" 2>/dev/null
  83. ;;
  84. 7z)
  85. 7za l "${MC_EXT_FILENAME}" 2>/dev/null ||
  86. 7z l "${MC_EXT_FILENAME}"
  87. ;;
  88. ace)
  89. unace l "${MC_EXT_FILENAME}"
  90. ;;
  91. arc)
  92. arc l "${MC_EXT_FILENAME}"
  93. ;;
  94. zip)
  95. unzip -v "${MC_EXT_FILENAME}"
  96. ;;
  97. zoo)
  98. zoo l "${MC_EXT_FILENAME}"
  99. ;;
  100. *)
  101. ;;
  102. esac
  103. }
  104. do_open_action() {
  105. filetype=$1
  106. pager=$2
  107. case "${filetype}" in
  108. bzip2)
  109. bzip2 -dc "${MC_EXT_FILENAME}" | ${pager}
  110. ;;
  111. bzip)
  112. bzip -dc "${MC_EXT_FILENAME}" | ${pager}
  113. ;;
  114. gz)
  115. gz -dc "${MC_EXT_FILENAME}" | ${pager}
  116. ;;
  117. lzma)
  118. lzma -dc "${MC_EXT_FILENAME}" | ${pager}
  119. ;;
  120. xz)
  121. xz -dc "${MC_EXT_FILENAME}" | ${pager}
  122. ;;
  123. par2)
  124. par2 r "${MC_EXT_FILENAME}"
  125. ;;
  126. *)
  127. ;;
  128. esac
  129. }
  130. case "${action}" in
  131. view)
  132. do_view_action "${filetype}"
  133. ;;
  134. open)
  135. xdg-open "${MC_EXT_FILENAME}" 2>/dev/null || \
  136. do_open_action "${filetype}" "${pager}"
  137. ;;
  138. *)
  139. ;;
  140. esac