text.sh.in 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. #!/bin/sh
  2. # $1 - action
  3. # $2 - type of archive
  4. # $3 - pager
  5. action=$1
  6. filetype=$2
  7. pager=$3
  8. [ -n "${MC_XDG_OPEN}" ] || MC_XDG_OPEN="xdg-open"
  9. get_unpacker() {
  10. filetype=$1
  11. case "${filetype}" in
  12. man.gz)
  13. unpacker="gzip -dc"
  14. ;;
  15. man.bz)
  16. unpacker="bzip -dc"
  17. ;;
  18. man.bz2)
  19. unpacker="bzip2 -dc"
  20. ;;
  21. man.lz)
  22. unpacker="lzip -dc"
  23. ;;
  24. man.lz4)
  25. unpacker="lz4 -dc"
  26. ;;
  27. man.lzma)
  28. unpacker="lzma -dc"
  29. ;;
  30. man.xz)
  31. unpacker="xz -dc"
  32. ;;
  33. man.zst)
  34. unpacker="zstd -dc"
  35. ;;
  36. esac
  37. echo ${unpacker}
  38. }
  39. do_view_action() {
  40. filetype=$1
  41. unpacker=`get_unpacker ${filetype}`
  42. case "${filetype}" in
  43. man)
  44. case "${MC_EXT_FILENAME}" in
  45. */log/*|*/logs/*)
  46. cat "${MC_EXT_FILENAME}"
  47. ;;
  48. *)
  49. MANROFFOPT=-c MAN_KEEP_FORMATTING=1 man -P cat "${MC_EXT_FILENAME}"
  50. ;;
  51. esac
  52. ;;
  53. pod)
  54. pod2man "${MC_EXT_FILENAME}" | nroff @MAN_FLAGS@ @MANDOC@
  55. ;;
  56. nroff.me)
  57. nroff @MAN_FLAGS@ -me "${MC_EXT_FILENAME}"
  58. ;;
  59. nroff.ms)
  60. nroff @MAN_FLAGS@ -ms "${MC_EXT_FILENAME}"
  61. ;;
  62. man.gz|man.bz|man.bz2|man.lz|man.lz4|man.lzma|man.xz|man.zst)
  63. case "${MC_EXT_FILENAME}" in
  64. */log/*|*/logs/*)
  65. ${unpacker} "${MC_EXT_FILENAME}"
  66. ;;
  67. *)
  68. # "man" takes care of uncompressing.
  69. # This way the stdin is left intact so the correct width is used.
  70. MANROFFOPT=-c MAN_KEEP_FORMATTING=1 man -P cat "${MC_EXT_FILENAME}"
  71. ;;
  72. esac
  73. ;;
  74. *)
  75. ;;
  76. esac
  77. }
  78. do_open_action() {
  79. filetype=$1
  80. pager=$2
  81. unpacker=`get_unpacker ${filetype}`
  82. case "${filetype}" in
  83. info)
  84. info -f "${MC_EXT_FILENAME}"
  85. ;;
  86. man)
  87. case "${MC_EXT_FILENAME}" in
  88. */log/*|*/logs/*)
  89. cat "${MC_EXT_FILENAME}"
  90. ;;
  91. *)
  92. { zsoelim "${MC_EXT_FILENAME}" 2>/dev/null || cat "${MC_EXT_FILENAME}"; } | \
  93. nroff @MAN_FLAGS@ @MANDOC@
  94. ;;
  95. esac | ${pager}
  96. ;;
  97. pod)
  98. pod2man "${MC_EXT_FILENAME}" | nroff @MAN_FLAGS@ @MANDOC@ | ${pager}
  99. ;;
  100. nroff.me)
  101. nroff @MAN_FLAGS@ -me "${MC_EXT_FILENAME}" | ${pager}
  102. ;;
  103. nroff.ms)
  104. nroff @MAN_FLAGS@ -ms "${MC_EXT_FILENAME}" | ${pager}
  105. ;;
  106. man.gz|man.bz|man.bz2|man.lz|man.lz4|man.lzma|man.xz|man.zst)
  107. case "${MC_EXT_FILENAME}" in
  108. */log/*|*/logs/*)
  109. ${unpacker} "${MC_EXT_FILENAME}"
  110. ;;
  111. *)
  112. ${unpacker} "${MC_EXT_FILENAME}" | nroff @MAN_FLAGS@ @MANDOC@
  113. ;;
  114. esac | ${pager}
  115. ;;
  116. chm)
  117. if [ -n "$DISPLAY" ]; then
  118. which kchmviewer > /dev/null 2>&1 \
  119. && (kchmviewer "${MC_EXT_FILENAME}" &) \
  120. || (xchm "${MC_EXT_FILENAME}" &)
  121. else
  122. chm_http "${MC_EXT_FILENAME}" & elinks http://localhost:8080/index.html
  123. kill -INT %1
  124. fi
  125. ;;
  126. *)
  127. ;;
  128. esac
  129. }
  130. case "${action}" in
  131. view)
  132. do_view_action "${filetype}"
  133. ;;
  134. open)
  135. ("${MC_XDG_OPEN}" "${MC_EXT_FILENAME}" >/dev/null 2>&1) || \
  136. do_open_action "${filetype}" "${pager}"
  137. ;;
  138. *)
  139. ;;
  140. esac