> I also don't have the URL handy, but it should be available in the
> list archives at least.  Possibly also on the Links page at
> www.mutt.org.
I have been using it for a long time and made some small extensions.
It's attached to this mail.  No idea where the original is, sorry.

Have fun,
 Andy.

-- 
 E-Mail: [EMAIL PROTECTED]     URL: http://andy.spiegl.de
 PGP/GPG: see headers
                                o      _     _         _
  --------- __o       __o      /\_   _ \\o  (_)\__/o  (_)
  ------- _`\<,_    _`\<,_    _>(_) (_)/<_    \_| \   _|/' \/
  ------ (_)/ (_)  (_)/ (_)  (_)        (_)   (_)    (_)'  _\o_
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 Those who do not understand Unix are condemned to reinvent it, poorly.  
  -- Henry Spencer
#!/bin/sh
#
#     mutt.octet.filter - Octet filter for use with the mutt autoview facility
#     Copyright (C) 1997,1998,1999 David A Pearson
#
#     Changes by Andy Spiegl <[EMAIL PROTECTED]>, 1999, 2000
#
#     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 | vcat -s; copiousoutput
#
# 'vcat' is a silly little utility that strips any non-printing
# characters, use your non-printing filter of choice. You don't need
# that filter there, mutt.octet.filter attempts to not show binary
# data, but belt and braces can be a good idea now and again.
#
# 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:
#
#               [EMAIL PROTECTED]
#

# $Log: mutt.octet.filter,v $
# 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
#
# many changes by ASp
# among them: -t switch
#  if -t is given as parameter, all output is converted to text
#  if not, images etc. are displayed using X

ShowTAR()
{
    tar tvvf "$1" 2> /dev/null
}

ShowTGZ()
{
    tar tzvvf "$1" 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
}

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()
{
    if [ "$textoutput" == "true" ]; then
      tiffinfo "$1"
    else
      xv "$1"
    fi
}

ShowIMG()
{
    if [ "$textoutput" == "true" ]; then
      (djpeg -pnm $1 | pnmscale -xysize 80 92 | ppmtopgm | pgmtopbm | pbmtoascii -1x2 
) 2>&1
    else
      xv "$1"
    fi
}

ShowPNG()
{
    if [ "$textoutput" == "true" ]; then
      echo $1 is a PNG image.  Sorry, cannot convert to ASCII.
    else
      xv "$1"
    fi
}

ShowPS()
{
    if [ "$textoutput" == "true" ]; then
#      echo $1 is a Postscript document.
          ps2ascii $1
    else
      acroread "$1"
    fi
}

ShowPDF()
{
    if [ "$textoutput" == "true" ]; then
#      echo $1 is a PDF document.
          pdf2ascii $1
    else
      acroread "$1"
    fi
}

ShowMSWord()
{
#    catdoc "$1"
    # ASp: first, let's see if this is really MicroSoft nonsense...
    ldat "$1" | grep -is microsoft > /dev/null

    if [ $? -eq 0 ]; then
       echo "`basename "$1"` is a Microsoft document:"
       ldat "$1"
       lhalw -F "$1"
    else
       echo "`basename "$1"` unprintable data:"
       strings --bytes=5 $1
    fi
}

Showdata()
{
    # let's see if this is MicroSoft nonsense..."
    ldat "$1" | grep -is microsoft > /dev/null

    if [ $? -eq 0 ]; then
       echo "`basename "$1"` is a Microsoft document:"
       ldat "$1"
       lhalw -F "$1"
    else
      echo "`basename "$1"` unprintable data:"
      strings --bytes=5 $1
    fi
}

DisplayFileType()
{
    echo "[-- $(basename $0) file type: \"$1\" --]"
    echo
}

ShowFileType()
{
    FILE_TYPE=$(echo $(file "$1" 2> /dev/null) | cut -d' ' -f 2-)
    DisplayFileType "$FILE_TYPE"
}

# ASp
ShowUnknown()
{
    echo "`basename "$1"` is of unknown file type"
    echo "Contains these strings:"
    strings --bytes=5 $1
}

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";;
        *TIFF*image*data*  ) ShowTIF  "$1";;
        *JPEG*image*data*  ) ShowIMG  "$1";;
        *GIF*image*data*   ) ShowIMG  "$1";;
        *PNG*image*data*   ) ShowPNG  "$1";;
        *PostScript*       ) ShowPS   "$1";;
        *postscript*       ) ShowPS   "$1";;
        *PDF*document*     ) ShowPDF  "$1";;
        *DOS*executable*   ) ShowEXE  "$1";;
        *ascii*text*       ) cat      "$1";;
        *c*program*text*   ) cat      "$1";;
        *8086*reloc*Micro* ) ShowOBJ  "$1";;
        *MS-DOS*prog*lib*  ) ShowLIB  "$1";;
        data               ) Showdata "$1";;
#       *                  ) cat      "$1";;
        *                  ) ShowUnknown "$1";;
    esac
}

if [ "$1" = "" ]
then
    echo "syntax: $(basename [-t] '$0') file"
else
    if [ "$1" = "-t" ]
    then
      textoutput=true
      shift
    fi

    case "$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";;
        *.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";;
        *.log )    ShowFileType "$1"; cat        "$1";;
        *.LOG )    ShowFileType "$1"; cat        "$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";;
        *.jpg )    ShowFileType "$1"; ShowIMG    "$1";;
        *.doc )    ShowFileType "$1"; ShowMSWord "$1";;
        * )        ShowMISC "$1";;
    esac
fi

Reply via email to