home *** CD-ROM | disk | FTP | other *** search
- #! /bin/sh
- # Incoming-news spooling.
- # We ignore arguments -- it looks tempting to put "$*" after cat and
- # newsspool, but there are security problems.
-
- # =()<. ${NEWSCONFIG-@<NEWSCONFIG>@}>()=
- . ${NEWSCONFIG-/var/lib/news/bin/config}
-
- PATH=$NEWSCTL/bin:$NEWSBIN/input:$NEWSBIN:$NEWSPATH ; export PATH
- umask $NEWSUMASK
-
- # check space, assuming a pretty large batch (no cheap way to find real size)
- counter=1
- while test " `spacefor 250000 incoming`" -le 0
- do
- # Warn sysadmin -- he just might be listening and able to act -- and
- # stall a little bit in hopes that it's transient.
- if test " $counter" -eq 1
- then
- (
- echo 'Incoming news will be discarded due to space'
- echo 'shortage unless more room becomes available'
- echo 'within 15 min.'
- ) | mail "$NEWSMASTER"
- fi
- sleep 300
- if test " $counter" -gt 1111 # four tries is plenty
- then
- # oh no! -- nothing we can do, really...
- cat >/dev/null
- echo incoming news discarded due to space shortage >&2
- exit 1
- fi
- if test ! -f $NEWSCTL/rnews.stall
- then
- counter="1$counter"
- else # avoid repeating the sysadmin warning
- counter=2
- fi
- done
-
- # spool it
- if test -f $NEWSCTL/rnews.immed
- then
- opt=-i
- else
- opt=
- fi
- if newsspool $opt >/tmp/ngripe.$$ 2>&1
- then
- rm -f /tmp/ngripe.$$
- exit 0
- else
- # there really isn't any way to save the data if newsspool fails,
- # not without causing other problems
- (
- echo newsspool failed!!!
- cat /tmp/ngripe.$$
- ) | mail "$NEWSMASTER"
- cat /tmp/ngripe.$$ >&2
- rm -f /tmp/ngripe.$$
- exit 1
- fi
-