tmsgcat - plan9port - [fork] Plan 9 from user space
 (HTM) git clone git://src.adamsgaard.dk/plan9port
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       tmsgcat (1084B)
       ---
            1 #!/usr/local/plan9/bin/rc
            2 
            3 fn read9p {
            4         srv=$1; shift
            5         9p read $srv >[2=1]|grep -v '^9p\:'
            6 }
            7 
            8 fn dir9p {
            9         srv=$1; shift
           10         9p ls $srv >[2=1]|grep -v '^9p\:'
           11 }
           12         
           13 
           14 fn catmesg {
           15         # hold on for a second
           16         TMP=/tmp/$USER.`{date -n}; sleep 1
           17         msg=$1;
           18         read9p $msg/body >$TMP.body
           19         t=`{read9p $msg/type}
           20         switch($t){
           21                 case text/html
           22                         echo '
           23                                         ,x/<!--(-?[^\-]|--[^>]|\n)*-->/ c//
           24                                         ,x/<[^>]+>/d
           25                                         ,p
           26                                         u
           27                                         ,y/<[^>]+>/d
           28                                         ,p
           29                                 '| sam -d $TMP.body|[2] sed '1d;/^\?/d'
           30                 case text/*
           31                         cat $TMP.body
           32                 case message/*
           33                         cat $TMP.body
           34                 case multipart/related
           35                         if (~ `{read9p $msg/1/type} text/plain)
           36                                 catmesg $msg/1
           37                         if not if (~ `{read9p $msg/2/type} text/plain)
           38                                 catmesg $msg/2
           39                         if not {
           40                                 for (i in `{dir9p $msg|awk '$10 ~ /[0-9][0-9]*/ {print $10}'})
           41                                         catmesg $msg/$i
           42                         }
           43                 case *
           44                         echo $t
           45                 # should there be more?
           46         }
           47         rm -f $TMP.body
           48 }
           49 
           50 if (~ $#* 0)
           51         echo usage: msgcat mail/mbox/msgn && exit 1
           52 
           53 mesg=$1
           54 if (~ `{read9p $mesg/lines} '')
           55         echo no such message $mesg && exit 2
           56 
           57                         
           58 read9p $mesg/unixheader; read9p $mesg/header
           59 echo
           60 catmesg $mesg
           61 echo