2 # bloated, featureful usenet reader for use with nntpfs
12 newtname=newt@dont-email.me
16 echo Newsgroups: `{echo $group | sed 's/\//\./g'}
17 echo Subject: $"subject
20 eval $editor /tmp/post
21 cat /tmp/post >$mnt/$group/post
23 fn f { du -a $* | sed 's/^.* //g' }
26 if(! ~ $date(1) [0-9]*)
43 if(! ~ $date(3) `{date | awk '{print $6;}'})
46 ti=`{echo $date(4) | awk '{print substr($0,0,5);}'}
51 from=`{awk -F ' ' '{print $3;}' $i/xover}
52 if(! ~ $#from 0 && ! ~ $#from 1){
56 echo $i | sed 's/(<|>)//g'
63 date=`{awk -F ' ' '{print $4;}' $i/xover >[2]/dev/null | fmtd}
64 awk -v date'='$"date -v from'='$from(1) -F ' ' \
65 '{print " " $1 " " date " " from " " substr($2,0,50);}' $i/xover >[2]/dev/null
68 echo ' '$"i' nil nil nil'
71 fn getposts{ ls | grep -e '^[0-9]+$' | sort -n | tail -$maxposts }
73 kmnt=`{echo $mnt | sed 's/\//\\\//g'}
75 grep -v -e '\/([0-9]+(\/|$)|post$)' |
76 sed 's/^'$"kmnt'\// g /g' |
79 fn nshift{ shift; echo $* }
81 echo '[0-9]+ print specified message
84 f jump to first message
85 g ... go to specified group
86 h print message headlines
87 help print this help message
88 k ... list sub-groups under specified group
89 l jump to last message
91 p print message with minimal headers
92 P print message with full headers
95 y synchronize message list with server
96 " print message in quoted form, suitable for reply
97 |cmd pipe message body to a command
98 ||cmd pipe raw message to a command
99 ? print debug information'
102 if(test -d $mnt/$group/$1){
103 grep -e '(^From|^Newsgroups|^Subject|^Date)' $1/header
111 if(test -d $mnt/$group/$1){
118 echo usage: $argv0 '[ -f newsgroup ] [ -m mountpoint ] [ -p maxposts ]' >[1=2]
124 group=`{echo $2 | sed 's/\./\//g'}
140 if(! test -d $mnt/$group){
141 echo !$mnt/$group does not exist >[1=2]
144 builtin cd $mnt/$group
149 echo $#posts messages
158 if(! ~ $post $posts(1)){
159 post=`{echo $post^-1 | bc}
168 ngroup=`{nshift $cmd | sed 's/\./\//g'}
169 if(test -d $mnt/$ngroup){
170 if(grep -s -e '^[0-9]+$' <{ls -p $mnt/$ngroup}){
172 builtin cd $mnt/$group
178 echo $#posts messages
181 echo !$ngroup contains no messages
184 echo !$ngroup does not exist
192 k `{nshift $cmd | sed 's/\./\//g'}
209 if(test -f $mnt/$group/$post/header){
210 subject='Re: '^`{grep -e '^Subject: ' $mnt/$group/$post/header | sed 's/^Subject: //g'}
214 echo !message missing
218 echo $#posts messages
220 printp $post | sed 1d | sed 's/^/> /g' | sed 's/^> >/>>/g'
222 cmd=`{echo $"cmd | sed 's/^\|\|//g'}
223 cat $mnt/$group/$post/article | eval $cmd
225 cmd=`{echo $"cmd | sed 's/^\|//g'}
226 cat $mnt/$group/$post/body | eval $cmd
230 echo maxposts: $maxposts
234 if(~ $post $posts(1) && ~ $#go 0){
238 if not if(! ~ $post $posts($#posts)){
240 post=`{echo $post^+1 | bc}
241 if(test $post -gt $posts($#posts))