home *** CD-ROM | disk | FTP | other *** search
/ Il CD di internet / CD.iso / SOURCE / N / CNEWS / _CNEWS.TAR / usr / lib / newsbin / relay / dodelayed < prev    next >
Encoding:
Text File  |  1994-09-02  |  1.2 KB  |  60 lines

  1. #! /bin/sh
  2. # dodelayed - handle delayed control messages, if they still exist
  3. # =()<. ${NEWSCONFIG-@<NEWSCONFIG>@}>()=
  4. . ${NEWSCONFIG-/var/lib/news/bin/config}
  5. PATH=$NEWSCTL/bin:$NEWSBIN/ctl:$NEWSBIN:$NEWSPATH ; export PATH
  6. umask $NEWSUMASK
  7.  
  8. lock="$NEWSCTL/LOCK"
  9. ltemp="$NEWSCTL/L.$$"
  10. echo $$ >$ltemp
  11. trap "rm -f $ltemp ; exit 0" 0 1 2 15
  12. while true
  13. do
  14.     if newslock $ltemp $lock
  15.     then
  16.         trap "rm -f $ltemp $lock ; exit 0" 0 1 2 15
  17.         break
  18.     fi
  19.     sleep 30
  20. done
  21.  
  22. cd $NEWSARTS
  23.  
  24. # first, which ones are due?
  25. now="`getdate now`"
  26. awk 'BEGIN { now = '$now' }
  27.     {
  28.         if ($1 > now)
  29.             print $1, $2
  30.         else
  31.             print "do", $2
  32.     }' $NEWSCTL/delayed >/tmp/delayed$$
  33.  
  34. # second, which of those still exist?
  35. sed -n '/^do /s///p' /tmp/delayed$$ | dbz -x $NEWSCTL/history |
  36.     awk -F'    ' 'NF == 3 { print $3 }' | tr . / |
  37.     while read first rest
  38.     do
  39.         if test -r "$first"
  40.         then
  41.             echo "$first"
  42.         fi
  43.     done >/tmp/delaydo$$
  44.  
  45. # do them
  46. if test -s /tmp/delaydo$$
  47. then
  48.     for f in `cat /tmp/delaydo$$`
  49.     do
  50.         canonhdr $f | 
  51.             sed -n 's;^Control:[     ]*;'$NEWSBIN/relay/del';p' |
  52.             egrep -v '/^(cancel|ihave|sendme) ' >/tmp/ctl$$
  53.         sh /tmp/ctl$$ <$f
  54.     done
  55. fi
  56.  
  57. # and clean up
  58. egrep -v '^do' /tmp/delayed$$ >$NEWSCTL/delayed
  59. rm -f /tmp/ctl$$ /tmp/delayed$$ /tmp/delaydo$$
  60.