123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 |
- #!/bin/sh
- # $1 - action
- # $2 - type of file
- action=$1
- filetype=$2
- [ -n "${MC_XDG_OPEN}" ] || MC_XDG_OPEN="xdg-open"
- STAROFFICE_REGEXP='\.(sxw|sdw|stw|sxc|stc|sxi|sti|sxd|std||sxm||sxg)$'
- staroffice_console() {
- filename=$1;shift
- is_view=$1; shift
- if [ -n "${is_view}" ]; then
- is_view='-dump'
- fi
- tmp=`mktemp -d ${TMPDIR:-/tmp}/%p.XXXXXX`
- cd $tmp
- soffice2html.pl "${filename}"
- elinks ${is_view} content.html
- rm -rf "$tmp"
- }
- get_ooffice_executable() {
- if command -v loffice >/dev/null 2>&1; then
- echo "loffice"
- elif command -v ooffice >/dev/null 2>&1; then
- echo "ooffice"
- else
- echo -n
- fi
- }
- do_view_action() {
- filetype=$1
- case "${filetype}" in
- ps)
- ps2ascii "${MC_EXT_FILENAME}"
- ;;
- pdf)
- pdftotext -layout -nopgbrk "${MC_EXT_FILENAME}" -
- ;;
- odt)
- if [ ` echo "${MC_EXT_FILENAME}" | grep -c "${STAROFFICE_REGEXP}"` -ne 0 ]; then
- staroffice_console "${MC_EXT_FILENAME}" "view"
- else
- odt2txt "${MC_EXT_FILENAME}"
- fi
- ;;
- msdoc)
- if command -v wvHtml >/dev/null 2>&1; then
- tmp=`mktemp -d ${TMPDIR:-/tmp}/%p.XXXXXX`
- wvHtml "${MC_EXT_FILENAME}" --targetdir="$tmp" page.html
- elinks -dump "$tmp/page.html"
- rm -rf "$tmp"
- elif command -v antiword >/dev/null 2>&1; then
- antiword -t "${MC_EXT_FILENAME}"
- elif command -v catdoc >/dev/null 2>&1; then
- catdoc -w "${MC_EXT_FILENAME}"
- elif command -v word2x >/dev/null 2>&1; then
- word2x -f text "${MC_EXT_FILENAME}" -
- else
- strings "${MC_EXT_FILENAME}"
- fi
- ;;
- msxls)
- if command -v xlhtml >/dev/null 2>&1; then
- tmp=`mktemp -d ${TMPDIR:-/tmp}/%p.XXXXXX`
- xlhtml -a "${MC_EXT_FILENAME}" > "$tmp/page.html"
- elinks -dump "$tmp/page.html"
- rm -rf "$tmp"
- elif command -v xls2csv >/dev/null 2>&1; then
- xls2csv "${MC_EXT_FILENAME}"
- else
- strings "${MC_EXT_FILENAME}"
- fi
- ;;
- dvi)
- command -v dvi2tty >/dev/null 2>&1 && \
- dvi2tty "${MC_EXT_FILENAME}" || \
- catdvi "${MC_EXT_FILENAME}"
- ;;
- djvu)
- djvused -e print-pure-txt "${MC_EXT_FILENAME}"
- ;;
- ebook)
- einfo -v "${MC_EXT_FILENAME}"
- ;;
- *)
- ;;
- esac
- }
- do_open_action() {
- filetype=$1
- case "${filetype}" in
- ps)
- if [ -n "$DISPLAY" ]; then
- (gv "${MC_EXT_FILENAME}" &)
- else
- ps2ascii "${MC_EXT_FILENAME}" | ${PAGER:-more}
- fi
- ;;
- pdf)
- if [ ! -n "$DISPLAY" ]; then
- pdftotext -layout -nopgbrk "${MC_EXT_FILENAME}" - | ${PAGER:-more}
- elif see > /dev/null 2>&1; then
- (see "${MC_EXT_FILENAME}" &)
- else
- (xpdf "${MC_EXT_FILENAME}" &)
- fi
- #(acroread "${MC_EXT_FILENAME}" &)
- #(ghostview "${MC_EXT_FILENAME}" &)
- ;;
- ooffice)
- if [ -n "$DISPLAY" ]; then
- OOFFICE=`get_ooffice_executable`
- if [ -n "${OOFFICE}" ]; then
- (${OOFFICE} "${MC_EXT_FILENAME}" &)
- fi
- else
- if [ `echo "${MC_EXT_FILENAME}" | grep -c "${STAROFFICE_REGEXP}"` -ne 0 ]; then
- staroffice_console "${MC_EXT_FILENAME}"
- else
- odt2txt "${MC_EXT_FILENAME}" | ${PAGER:-more}
- fi
- fi
- ;;
- abw)
- (abiword "${MC_EXT_FILENAME}" &)
- ;;
- gnumeric)
- (gnumeric "${MC_EXT_FILENAME}" &)
- ;;
- msdoc)
- if [ -n "$DISPLAY" ]; then
- OOFFICE=`get_ooffice_executable`
- if [ -n "${OOFFICE}" ]; then
- (${OOFFICE} "${MC_EXT_FILENAME}" &)
- else
- (abiword "${MC_EXT_FILENAME}" >/dev/null 2>&1 &)
- fi
- else
- tmp=`mktemp -d ${TMPDIR:-/tmp}/%p.XXXXXX`
- wvHtml "${MC_EXT_FILENAME}" --targetdir="$tmp" page.html -1
- elinks "$tmp/page.html"
- rm -rf "$tmp"
- fi
- ;;
- msxls)
- if [ -n "$DISPLAY" ]; then
- OOFFICE=`get_ooffice_executable`
- if [ -n "${OOFFICE}" ]; then
- (${OOFFICE} "${MC_EXT_FILENAME}" &)
- else
- (gnumeric "${MC_EXT_FILENAME}" >/dev/null 2>&1 &)
- fi
- else
- tmp=`mktemp -d ${TMPDIR:-/tmp}/%p.XXXXXX`
- xlhtml -a "${MC_EXT_FILENAME}" > "$tmp/page.html"
- elinks "$tmp/page.html"
- rm -rf "$tmp"
- fi
- ;;
- msppt)
- if [ -n "$DISPLAY" ]; then
- OOFFICE=`get_ooffice_executable`
- if [ -n "${OOFFICE}" ]; then
- (${OOFFICE} "${MC_EXT_FILENAME}" &)
- fi
- else
- tmp=`mktemp -d ${TMPDIR:-/tmp}/%p.XXXXXX`
- ppthtml "${MC_EXT_FILENAME}" > "$tmp/page.html"
- elinks "$tmp/page.html"
- rm -rf "$tmp"
- fi
- ;;
- framemaker)
- fmclient -f "${MC_EXT_FILENAME}"
- ;;
- dvi)
- if [ -n "$DISPLAY" ]; then
- (xdvi "${MC_EXT_FILENAME}" &)
- else
- dvisvga "${MC_EXT_FILENAME}" || \
- dvi2tty "${MC_EXT_FILENAME}" | ${PAGER:-more}
- fi
- ;;
- djvu)
- djview "${MC_EXT_FILENAME}" &
- ;;
- comic)
- cbrpager "${MC_EXT_FILENAME}" &
- ;;
- ebook)
- lucidor "${MC_EXT_FILENAME}" >/dev/null &
- ;;
- *)
- ;;
- esac
- }
- case "${action}" in
- view)
- do_view_action "${filetype}"
- ;;
- open)
- ("${MC_XDG_OPEN}" "${MC_EXT_FILENAME}" >/dev/null 2>&1) || \
- do_open_action "${filetype}"
- ;;
- *)
- ;;
- esac
|