diff options
| author | ralphe <boyo.ralph@protonmail.com> | 2018-03-19 09:19:49 +0100 | 
|---|---|---|
| committer | Luke Smith <luke@lukesmith.xyz> | 2018-03-19 09:18:19 -0700 | 
| commit | 0be646ca968da10f5b1615aa366f0af90e26ab3d (patch) | |
| tree | cc0c899ef6c9d634f0e8209543861965c2dbff6f | |
| parent | ddd64d29e7a3497585be5f9c559f7bdae625f43d (diff) | |
wiew_attchment.sh
| -rwxr-xr-x | view_attachment.sh | 127 | 
1 files changed, 127 insertions, 0 deletions
| diff --git a/view_attachment.sh b/view_attachment.sh new file mode 100755 index 0000000..df8b9a1 --- /dev/null +++ b/view_attachment.sh @@ -0,0 +1,127 @@ +#!/bin/bash +# +# Author:  Eric Gebhart +# +# Purpose:  To be called by mutt as indicated by .mailcap to handle mail attachments. +# +# Function: Copy the given file to a temporary directory so mutt +#           Won't delete it before it is read by the application. +# +#           Along the way, discern the file type or use the type +#           That is given. +# +#           Finally use 'open' or 'open -a' if the third argument is +#           given. +# +# +# Arguments: +# +#     $1 is the file +#     $2 is the type - for those times when file magic isn't enough. +#                      I frequently get html mail that has no extension +#                      and file can't figure out what it is. +# +#                      Set to '-' if you don't want the type to be discerned. +#                      Many applications can sniff out the type on their own. +#                      And they do a better job of it too. +# +#                      Open Office and MS Office for example. +# +#     $3 is open with.  as in open -a 'open with this .app' foo.xls +# +# Examples:  These are typical .mailcap entries which use this program. +# +#     Image/JPEG; /Users/vdanen/.mutt/view_attachment %s +#     Image/PNG; /Users/vdanen/.mutt/view_attachment %s +#     Image/GIF; /Users/vdanen/.mutt/view_attachment %s +# +#     Application/PDF; /Users/vdanen/.mutt/view_attachment %s +# +#         #This HTML example passes the type because file doesn't always work and +#         #there aren't always extensions. +# +#     text/html; /Users/vdanen/.mutt/view_attachment %s html +# +#         # If your Start OpenOffice.org.app is spelled with a space like this one, <-- +#         # then you'll need to precede the space with a \ .  I found that too painful +#         # and renamed it with an _. +# +#     Application/vnd.ms-excel; /Users/vdanen/.mutt/view_attachment %s "-" '/Applications/OpenOffice.org1.1.2/Start_OpenOffice.org.app' +#     Application/msword; /Users/vdanen/.mutt/view_attachment %s "-" '/Applications/OpenOffice.org1.1.2/Start_OpenOffice.org.app' +# +# +# Debugging:  If you have problems set debug to 'yes'.  That will cause a debug file +#             be written to /tmp/mutt_attach/debug so you can see what is going on. +# +# See Also:  The man pages for open, file, basename +# + +# the tmp directory to use. +tmpdir="$HOME/.tmp/mutt_attach" + +# the name of the debug file if debugging is turned on. +debug_file=$tmpdir/debug + +# debug.  yes or no. +#debug="no" +debug="yes" + +type=$2 +open_with=$3 + +# make sure the tmpdir exists. +mkdir -p $tmpdir + +# clean it out.  Remove this if you want the directory +# to accumulate attachment files. +rm -f $tmpdir/* + +# Mutt puts everything in /tmp by default. +# This gets the basic filename from the full pathname. +filename=`basename $1` + +# get rid of the extenson and save the name for later. +file=`echo $filename | cut -d"." -f1` + +if [ $debug = "yes" ]; then +    echo "1:" $1 " 2:" $2 " 3:" $3 > $debug_file +    echo "Filename:"$filename >> $debug_file +    echo "File:"$file >> $debug_file +    echo "===========================" >> $debug_file +fi + +# if the type is empty then try to figure it out. +if [ -z $type ]; then +    file  $1 +    type=`file -bi $1 | cut -d"/" -f2` +fi + +# if the type is '-' then we don't want to mess with type. +# Otherwise we are rebuilding the name.  Either from the +# type that was passed in or from the type we discerned. +if [ $type = "-" ]; then +    newfile=$filename +else +    newfile=$file.$type +fi + +newfile=$tmpdir/$newfile + +# Copy the file to our new spot so mutt can't delete it +# before the app has a chance to view it. +cp $1 $newfile + +if [ $debug = "yes" ]; then +    echo "File:" $file "TYPE:" $type >> $debug_file +    echo "Newfile:" $newfile >> $debug_file +    echo "Open With:" $open_with >> $debug_file +fi + +# If there's no 'open with' then we can let preview do it's thing. +# Otherwise we've been told what to use.  So do an open -a. + +if [ -z $open_with ]; then +    open $newfile +else +    open -a "$open_with" $newfile +fi | 
