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]*)
45 if(! ~ $date(3) `{date | awk '{print $6;}'})
48 ti=`{echo $date(4) | awk '{print substr($0,0,5);}'}
53 from=`{awk -F ' ' '{print $3;}' $i/xover}
54 if(! ~ $#from 0 && ! ~ $#from 1){
58 echo $i | sed 's/(<|>)//g'
65 date=`{awk -F ' ' '{print $4;}' $i/xover >[2]/dev/null | fmtd}
66 awk -v date'='$"date -v from'='$from(1) -F ' ' \
67 '{print " " $1 " " date " " from " " substr($2,0,50);}' $i/xover >[2]/dev/null
70 echo ' '$"i' nil nil nil'
73 fn getposts{ ls | grep -e '^[0-9]+$' | sort -n | tail -$maxposts }
75 kmnt=`{echo $mnt | sed 's/\//\\\//g'}
77 grep -v -e '\/([0-9]+|article|body|header|post|xover)$' |
78 sed 's/^'$"kmnt'\// g /g' |
81 fn nshift{ shift; echo $* }
83 echo '[0-9]+ print specified message
86 f jump to first message
87 g ... go to specified group
88 h print message headlines
89 help print this help message
90 k ... list sub-groups under specified group
91 kf ... grep $home/lib/newsgroups for regexp
92 l jump to last message
94 p print message with minimal headers
95 P print message with full headers
98 y synchronize message list with server
99 " print message in quoted form, suitable for reply
100 |cmd pipe message body to a command
101 ||cmd pipe raw message to a command
102 ? print debug information'
105 if(test -d $mnt/$group/$1){
106 grep -e '(^From|^Newsgroups|^Subject|^Date)' $1/header
114 if(test -d $mnt/$group/$1){
121 echo usage: $argv0 '[ -f newsgroup ] [ -m mountpoint ] [ -p maxposts ]' >[1=2]
127 group=`{echo $2 | sed 's/\./\//g'}
143 if(! test -d $mnt/$group){
144 echo !$mnt/$group does not exist >[1=2]
147 builtin cd $mnt/$group
152 echo $#posts messages
158 if(grep -s -e '^[0-9]+$' <{echo $cmd(1)}){
163 if(! ~ $post $posts(1)){
164 post=`{echo $post^-1 | bc}
173 ngroup=`{nshift $cmd | sed 's/\./\//g'}
174 if(test -d $mnt/$ngroup){
175 if(grep -s -e '^[0-9]+$' <{ls -p $mnt/$ngroup}){
177 builtin cd $mnt/$group
183 echo $#posts messages
186 echo !$ngroup contains no messages
189 echo !$ngroup does not exist
197 k `{nshift $cmd | sed 's/\./\//g'}
199 grep -e `{nshift $cmd} $home/lib/newsgroups |
217 if(test -f $mnt/$group/$post/header){
218 subject='Re: '^`{grep -e '^Subject: ' $mnt/$group/$post/header | sed 's/^Subject: //g'}
222 echo !message missing
226 echo $#posts messages
228 printp $post | sed 1d | sed 's/^/> /g' | sed 's/^> >/>>/g'
230 cmd=`{echo $"cmd | sed 's/^\|\|//g'}
231 cat $mnt/$group/$post/article | eval $cmd
233 cmd=`{echo $"cmd | sed 's/^\|//g'}
234 cat $mnt/$group/$post/body | eval $cmd
238 echo maxposts: $maxposts
242 if(~ $post $posts(1) && ~ $#go 0){
246 if not if(! ~ $post $posts($#posts)){
248 post=`{echo $post^+1 | bc}
249 if(test $post -gt $posts($#posts))