|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- #!/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
|