aboutsummaryrefslogtreecommitdiff
path: root/bin/upas/msgcat
diff options
context:
space:
mode:
Diffstat (limited to 'bin/upas/msgcat')
-rwxr-xr-xbin/upas/msgcat61
1 files changed, 61 insertions, 0 deletions
diff --git a/bin/upas/msgcat b/bin/upas/msgcat
new file mode 100755
index 00000000..7067a435
--- /dev/null
+++ b/bin/upas/msgcat
@@ -0,0 +1,61 @@
+#!/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