archive.sh 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  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. unarj l "${MC_EXT_FILENAME}"
  58. ;;
  59. cab)
  60. cabextract -l "${MC_EXT_FILENAME}"
  61. ;;
  62. ha)
  63. ha lf "${MC_EXT_FILENAME}"
  64. ;;
  65. rar)
  66. rar v -c- "${MC_EXT_FILENAME}" 2>/dev/null || \
  67. unrar v -c- "${MC_EXT_FILENAME}"
  68. ;;
  69. alz)
  70. unalz -l "${MC_EXT_FILENAME}"
  71. ;;
  72. cpio.z|cpio.gz)
  73. gzip -dc "${MC_EXT_FILENAME}" | \
  74. cpio -itv 2>/dev/null
  75. ;;
  76. cpio.xz)
  77. xz -dc "${MC_EXT_FILENAME}" | \
  78. cpio -itv 2>/dev/null
  79. ;;
  80. cpio)
  81. cpio -itv < "${MC_EXT_FILENAME}" 2>/dev/null
  82. ;;
  83. 7z)
  84. 7za l "${MC_EXT_FILENAME}" 2>/dev/null
  85. ;;
  86. ace)
  87. unace l "${MC_EXT_FILENAME}"
  88. ;;
  89. arc)
  90. arc l "${MC_EXT_FILENAME}"
  91. ;;
  92. zip)
  93. unzip -v "${MC_EXT_FILENAME}"
  94. ;;
  95. zoo)
  96. zoo l "${MC_EXT_FILENAME}"
  97. ;;
  98. *)
  99. ;;
  100. esac
  101. }
  102. do_open_action() {
  103. filetype=$1
  104. pager=$2
  105. case "${filetype}" in
  106. bzip2)
  107. bzip2 -dc "${MC_EXT_FILENAME}" | ${pager}
  108. ;;
  109. bzip)
  110. bzip -dc "${MC_EXT_FILENAME}" | ${pager}
  111. ;;
  112. gz)
  113. gz -dc "${MC_EXT_FILENAME}" | ${pager}
  114. ;;
  115. lzma)
  116. lzma -dc "${MC_EXT_FILENAME}" | ${pager}
  117. ;;
  118. xz)
  119. xz -dc "${MC_EXT_FILENAME}" | ${pager}
  120. ;;
  121. *)
  122. ;;
  123. esac
  124. }
  125. case "${action}" in
  126. view)
  127. do_view_action "${filetype}"
  128. ;;
  129. open)
  130. xdg-open "${MC_EXT_FILENAME}" 2>/dev/null || \
  131. do_open_action "${filetype}" "${pager}"
  132. ;;
  133. *)
  134. ;;
  135. esac