summaryrefslogtreecommitdiffstats
path: root/misc/ext.d/doc.sh.in
diff options
context:
space:
mode:
Diffstat (limited to 'misc/ext.d/doc.sh.in')
-rw-r--r--misc/ext.d/doc.sh.in218
1 files changed, 218 insertions, 0 deletions
diff --git a/misc/ext.d/doc.sh.in b/misc/ext.d/doc.sh.in
new file mode 100644
index 0000000..c296ca2
--- /dev/null
+++ b/misc/ext.d/doc.sh.in
@@ -0,0 +1,218 @@
+#!/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 which loffice >/dev/null 2>&1; then
+ echo "loffice"
+ elif which 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 which 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 which antiword >/dev/null 2>&1; then
+ antiword -t "${MC_EXT_FILENAME}"
+ elif which catdoc >/dev/null 2>&1; then
+ catdoc -w "${MC_EXT_FILENAME}"
+ elif which word2x >/dev/null 2>&1; then
+ word2x -f text "${MC_EXT_FILENAME}" -
+ else
+ strings "${MC_EXT_FILENAME}"
+ fi
+ ;;
+ msxls)
+ if which 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 which xls2csv >/dev/null 2>&1; then
+ xls2csv "${MC_EXT_FILENAME}"
+ else
+ strings "${MC_EXT_FILENAME}"
+ fi
+ ;;
+ dvi)
+ which 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