| #!/usr/local/plan9/bin/rc |
| |
| fn read9p { |
| srv=$1; shift |
| 9p read $srv >[2=1]|grep -v '^9p\:' |
| } |
| |
| fn dir9p { |
| srv=$1; shift |
| 9p ls $srv >[2=1]|grep -v '^9p\:' |
| } |
| |
| |
| fn catmesg { |
| # hold on for a second |
| TMP=/tmp/$USER.`{date -n}; sleep 1 |
| msg=$1; |
| read9p $msg/body >$TMP.body |
| t=`{read9p $msg/type} |
| switch($t){ |
| case text/html |
| echo ' |
| ,x/<!--(-?[^\-]|--[^>]|\n)*-->/ c// |
| ,x/<[^>]+>/d |
| ,p |
| u |
| ,y/<[^>]+>/d |
| ,p |
| '| sam -d $TMP.body|[2] sed '1d;/^\?/d' |
| case text/* |
| cat $TMP.body |
| case message/* |
| cat $TMP.body |
| case multipart/related |
| if (~ `{read9p $msg/1/type} text/plain) |
| catmesg $msg/1 |
| if not if (~ `{read9p $msg/2/type} text/plain) |
| catmesg $msg/2 |
| if not { |
| for (i in `{dir9p $msg|awk '$10 ~ /[0-9][0-9]*/ {print $10}'}) |
| catmesg $msg/$i |
| } |
| case * |
| echo $t |
| # should there be more? |
| } |
| rm -f $TMP.body |
| } |
| |
| if (~ $#* 0) |
| echo usage: msgcat mail/mbox/msgn && exit 1 |
| |
| mesg=$1 |
| if (~ `{read9p $mesg/lines} '') |
| echo no such message $mesg && exit 2 |
| |
| |
| read9p $mesg/unixheader; read9p $mesg/header |
| echo |
| catmesg $mesg |
| echo |