aboutsummaryrefslogtreecommitdiff
path: root/files/.mutt/mutt.octet.filter
diff options
context:
space:
mode:
authorAnton Bobov <abobov@gmail.com>2011-10-17 11:54:08 +0600
committerAnton Bobov <abobov@gmail.com>2011-10-17 11:56:00 +0600
commitb63ddd9406eabce7887ae13057732c9672b3fd75 (patch)
treeeaaec064bfdd4902327965bd34729b6d257077f1 /files/.mutt/mutt.octet.filter
parentdcd755f2e5243cc0f7ef3d004309bae3ab5dd545 (diff)
f
Diffstat (limited to 'files/.mutt/mutt.octet.filter')
-rwxr-xr-xfiles/.mutt/mutt.octet.filter328
1 files changed, 328 insertions, 0 deletions
diff --git a/files/.mutt/mutt.octet.filter b/files/.mutt/mutt.octet.filter
new file mode 100755
index 0000000..5409bb2
--- /dev/null
+++ b/files/.mutt/mutt.octet.filter
@@ -0,0 +1,328 @@
+#!/bin/sh
+#
+# mutt.octet.filter - Octet filter for use with the mutt autoview facility
+# Copyright (C) 1997,1998,1999,2000,2001,2002,2003 David A Pearson
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the license, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+
+# This script file is a pretty brain-dead, last resort, "works for me"
+# utility that will attempt to make sense of any octet-stream data
+# that is received as part of an email and act as a filter for use
+# with mutt's auto_view ability.
+#
+# Here is how I use it. In my ~/.mutt_mailcap (use your filename of
+# choice) I have the following entry:
+#
+# application/octet-stream; mutt.octet.filter %s; copiousoutput
+#
+# All you then need to do is add a line like:
+#
+# auto_view application/octet-stream
+#
+# to your ~/.muttrc (use your filename of choice).
+#
+# In it's current state the script isn't perfect, it's your typical
+# "works for me" type of script and is offered in the hope that it
+# maybe handy and that you can do something with it.
+#
+# All comments/flames/feedback can be directed to:
+#
+# davep@davep.org
+#
+# See <URL:http://www.davep.org/mutt/> for the latest version of this file.
+
+# $Log: mutt.octet.filter,v $
+# Revision 1.15 2003/09/19 09:47:20 davep
+# Added DecodeFileName, submitted by Jan Bredereke.
+#
+# Revision 1.14 2003/08/08 08:39:01 davep
+# Added support for .asc and .rar files.
+#
+# Revision 1.13 2002/10/21 08:28:05 davep
+# Improved ShowImage so that it won't barf on file types that aren't known by
+# anytopnm.
+#
+# Revision 1.12 2002/07/23 15:47:17 davep
+# Added code for showing LaTeX files, Debian packages and various Image files,
+# submitted by Michael Shigorin.
+#
+# Revision 1.11 2002/06/19 09:44:07 davep
+# Documentation changes.
+#
+# Revision 1.10 2002/06/19 09:43:39 davep
+# Changed ShowMSWord() to use antiword instead of catdoc.
+#
+# Revision 1.9 2001/10/03 08:13:58 davep
+# Added a couple of lines to capture and not display PCX files. This was
+# suggested by Jeff Abrahamson. It seems that Lotus Notes has a habit of
+# including PCX images as octet-streams.
+#
+# Revision 1.8 2001/08/13 23:39:36 davep
+# Jeff Abrahamson suggested adding ShowTXT and using that as a abstraction
+# layer over `cat'.
+#
+# Revision 1.7 2000/08/31 09:13:29 davep
+# Added patch from Aaron Schrab that makes the "data" match in ShowMISC()
+# greedier.
+#
+# Revision 1.6 2000/05/10 13:34:19 davep
+# Added patch from Aaron Schrab for handling RPM files.
+#
+# Revision 1.5 2000/02/28 15:28:13 davep
+# Added support for .tar.bz2 files (thanks to Dirk Pirschel for that).
+#
+# Revision 1.4 1999/08/02 12:39:27 davep
+# Minor nit-fix.
+#
+# Revision 1.3 1999/04/13 17:17:03 davep
+# Added support for displaying .o files.
+#
+# Revision 1.2 1999/01/27 17:35:25 davep
+# Added handling for .bz2 files (thanks to Lars Hecking for that).
+# Added handling of MSWord documents (requires catdoc).
+#
+# Revision 1.1 1998/10/14 16:00:25 davep
+# Initial revision
+#
+
+ShowTAR()
+{
+ tar tvvf "$1" 2> /dev/null
+}
+
+ShowTGZ()
+{
+ tar tzvvf "$1" 2> /dev/null
+}
+
+ShowTBZ()
+{
+ bzip2 -dc "$1" | tar -tvv -f- 2> /dev/null
+}
+
+ShowGZIP()
+{
+ gzip -dc "$1" 2> /dev/null
+}
+
+ShowBZIP()
+{
+ bzip2 -dc "$1" 2> /dev/null
+}
+
+ShowZIP()
+{
+ unzip -l "$1" 2> /dev/null
+}
+
+ShowARJ()
+{
+ unarj l "$1" 2> /dev/null
+}
+
+ShowRAR()
+{
+ unrar l "$1" 2> /dev/null
+}
+
+ShowEXE()
+{
+ echo $(basename "$1"): DOS/Windows executable
+}
+
+ShowOBJ()
+{
+ echo $(basename "$1"): DOS/Windows object file
+}
+
+ShowLIB()
+{
+ echo $(basename "$1"): MS-DOS program library
+}
+
+ShowNG()
+{
+ echo $(basename "$1"): Norton Guide Database
+}
+
+ShowVCard()
+{
+ cat "$1" | mutt.vcard.filter
+}
+
+ShowTIF()
+{
+ tiffinfo "$1"
+}
+
+ShowMSWord()
+{
+ antiword "$1"
+}
+
+ShowObject()
+{
+ nm "$1"
+}
+
+ShowRPM()
+{
+ rpm -qip "$1"
+}
+
+ShowDEB()
+{
+ dpkg --info "$1"
+ dpkg --contents "$1"
+}
+
+ShowTXT()
+{
+ echo "[-- Statistics (lines words chars): "$(wc "$1")" --]"
+ echo
+ cat -v "$1"
+}
+
+ShowImage()
+{
+ if anytopnm "$1" > /dev/null 2>&1
+ then
+ (anytopnm "$1" | pnmscale -xysize 240 120 | ppmtopgm | pgmtopbm | pbmtoascii -2x4) 2>&1
+ else
+ echo "$(basename $1) is not a supported image type"
+ fi
+}
+
+ShowLaTeX()
+{
+ dir=`mktemp -td mailtex_XXXXXXXX`
+ ln -s "$1" $dir/index.tex
+ # TODO: fix latex preamble if absent? -- mike@altlinux.com
+ latex2html -ascii_mode -noinfo -split 0 -verbosity 0 -noshow_init -dir $dir "$dir/index.tex" > /dev/null
+ lynx -dump $dir/index.html
+ rm -rf $dir
+}
+
+ShowData()
+{
+ echo $(basename "$1"): unprintable data
+}
+
+DisplayFileType()
+{
+ echo "[-- $(basename $0) file type: \"$1\" --]"
+ echo
+}
+
+ShowFileType()
+{
+ FILE_TYPE=$(echo $(file "$1" 2> /dev/null) | cut -d' ' -f 2-)
+ DisplayFileType "$FILE_TYPE"
+}
+
+DecodeFileName()
+{
+ # remove character set encodings:
+ # mutt translates "=?ISO-8859-1?Q?x=E4y.doc?="
+ # to "__ISO-8859-1_Q_x_E4y.doc__", we
+ # translate it to "x_E4y.doc"
+ echo "$1" | sed -e 's/__[^_]*_Q_\(.*\)__/\1/g'
+}
+
+ShowMISC()
+{
+ FILE_TYPE=$(file -z "$1" 2> /dev/null)
+
+ if [ $? -gt 0 ]
+ then
+ FILE_TYPE=$(file "$1" 2> /dev/null)
+ fi
+
+ FILE_TYPE=$(echo "$FILE_TYPE" | cut -d' ' -f 2-)
+
+ DisplayFileType "$FILE_TYPE"
+
+ case "$FILE_TYPE" in
+ *tar*archive*gzip* ) ShowTGZ "$1";;
+ *tar*archive* ) ShowTAR "$1";;
+ *gzip* ) ShowGZIP "$1";;
+ *ARJ*archive*data* ) ShowARJ "$1.";; # "." gets round bug in unarj.
+ *zip*archive*file* ) ShowZIP "$1";;
+ *DOS*executable* ) ShowEXE "$1";;
+ *ascii*text* ) ShowTXT "$1";;
+ *c*program*text* ) ShowTXT "$1";;
+ *8086*reloc*Micro* ) ShowOBJ "$1";;
+ *MS-DOS*prog*lib* ) ShowLIB "$1";;
+ *LaTeX*text ) ShowLaTeX "$1";;
+ *data* ) ShowData "$1";;
+ *Photoshop* ) ;;
+ * ) ShowTXT "$1";;
+ esac
+}
+
+if [ "$1" = "" ]
+then
+ echo "syntax: $(basename '$0') file"
+else
+ case $(DecodeFileName "$1") in
+ *.tar ) ShowFileType "$1"; ShowTAR "$1";;
+ *.tgz ) ShowFileType "$1"; ShowTGZ "$1";;
+ *.tar.gz ) ShowFileType "$1"; ShowTGZ "$1";;
+ *.tar.Z ) ShowFileType "$1"; ShowTGZ "$1";;
+ *.tar.z ) ShowFileType "$1"; ShowTGZ "$1";;
+ *.tbz2 ) ShowFileType "$1"; ShowTBZ "$1";;
+ *.tar.bz2 ) ShowFileType "$1"; ShowTBZ "$1";;
+ *.Z ) ShowFileType "$1"; ShowGZIP "$1";;
+ *.z ) ShowFileType "$1"; ShowGZIP "$1";;
+ *.gz ) ShowFileType "$1"; ShowGZIP "$1";;
+ *.bz2 ) ShowFileType "$1"; ShowBZIP "$1";;
+ *.zip ) ShowFileType "$1"; ShowZIP "$1";;
+ *.ZIP ) ShowFileType "$1"; ShowZIP "$1";;
+ *.arj ) ShowFileType "$1"; ShowARJ "$1";;
+ *.ARJ ) ShowFileType "$1"; ShowARJ "$1";;
+ *.rar ) ShowFileType "$1"; ShowRAR "$1";;
+ *.RAR ) ShowFileType "$1"; ShowRAR "$1";;
+ *.log ) ShowFileType "$1"; ShowTXT "$1";;
+ *.LOG ) ShowFileType "$1"; ShowTXT "$1";;
+ *.obj ) ShowFileType "$1"; ShowOBJ "$1";;
+ *.OBJ ) ShowFileType "$1"; ShowOBJ "$1";;
+ *.lib ) ShowFileType "$1"; ShowLIB "$1";;
+ *.LIB ) ShowFileType "$1"; ShowLIB "$1";;
+ *.NG ) ShowFileType "$1"; ShowNG "$1";;
+ *.ng ) ShowFileType "$1"; ShowNG "$1";;
+ *.vcf ) ShowFileType "$1"; ShowVCard "$1";;
+ *.tif ) ShowFileType "$1"; ShowTIF "$1";;
+ *.TIF ) ShowFileType "$1"; ShowTIF "$1";;
+ *.doc ) ShowFileType "$1"; ShowMSWord "$1";;
+ *.DOC ) ShowFileType "$1"; ShowMSWord "$1";;
+ *.o ) ShowFileType "$1"; ShowObject "$1";;
+ *.rpm ) ShowFileType "$1"; ShowRPM "$1";;
+ *.deb ) ShowFileType "$1"; ShowDEB "$1";;
+ *.tex ) ShowFileType "$1"; ShowLaTeX "$1";;
+ *.TEX ) ShowFileType "$1"; ShowLaTeX "$1";;
+ *.pcx ) ShowFileType "$1"; ShowImage "$1";;
+ *.PCX ) ShowFileType "$1"; ShowImage "$1";;
+ *.jpg ) ShowFileType "$1"; ShowImage "$1";;
+ *.JPG ) ShowFileType "$1"; ShowImage "$1";;
+ *.gif ) ShowFileType "$1"; ShowImage "$1";;
+ *.GIF ) ShowFileType "$1"; ShowImage "$1";;
+ *.png ) ShowFileType "$1"; ShowImage "$1";;
+ *.PNG ) ShowFileType "$1"; ShowImage "$1";;
+ *.asc ) ShowFileType "$1"; ShowTXT "$1";;
+ *.ASC ) ShowFileType "$1"; ShowTXT "$1";;
+ * ) ShowMISC "$1";;
+ esac
+fi