#! /bin/sh
##  $Revision: 1.14 $
##  SH script to send NNTP news out.

# =()<NEWSBIN=@<_PATH_NEWSBIN>@>()=
NEWSBIN=/usr/local/news/bin
PATH=${NEWSBIN}:${PATH}:/bin:/usr/bin ; export PATH

# =()<BATCH=@<_PATH_BATCHDIR>@>()=
BATCH=/var/spool/news/out.going
# =()<LOCKS=@<_PATH_LOCKS>@>()=
LOCKS=/usr/local/news
# =()<NEWSLIB=@<_PATH_NEWSLIB>@>()=
NEWSLIB=/usr/local/news

NAME=`basename $0`

# Go to where the action is, start logging
cd $BATCH
umask 002
DEBUG=""
if [ "X$1" = X-d ] ; then
    DEBUG="-d"
    shift
else
    exec >>${NEWSLIB}/${NAME}.out 2>&1
fi

echo "${NAME}: [$$] begin `date`"

##  List of sitename:hostname pairs to send to
if [ -n "$1" ] ; then
    LIST="$*"
else
    LIST="site:site.their.domain"
    LIST="${LIST} site2:foo.bar.com"
fi

for L in ${LIST} ; do
    case $L in
    *:*)
	SITE=`expr $L : '\(.*\):.*'`
	HOST=`expr $L : '.*:\(.*\)'`
	;;
    *)
	SITE=$L
	HOST=$L
	;;
    esac
    LOCK=NNTP_LOCK.${HOST}
    BATCHFILE=${HOST}.nntp
    LOCK=${LOCKS}/LOCK.${L}
    trap 'rm -f ${LOCK} ; exit 1' 1 2 3 15
    if shlock -p $$ -f ${LOCK} ; then
	if [ -f ${SITE}.work ] ; then
	    cat ${SITE}.work >>${BATCHFILE}
	    rm ${SITE}.work
	fi
	if [ ! -f ${SITE} -o ! -s ${SITE} ] ; then
	    if [ ! -f ${BATCHFILE} -o ! -s ${BATCHFILE} ] ; then
		rm -f ${LOCK}
	    fi
	    continue
	fi
	mv ${SITE} ${SITE}.work
	if ctlinnd -s -t30 flush ${SITE} ; then
	    cat ${SITE}.work >>${BATCHFILE}
	    rm -f ${SITE}.work
	    if [ -s ${BATCHFILE} ] ; then
		echo "${NAME}: [$$] begin ${HOST}"
		time innxmit ${DEBUG} ${HOST} ${BATCH}/${BATCHFILE}
		echo "${NAME}: [$$] end   ${HOST}"
	    fi
	fi
	rm -f ${LOCK}
    else
	echo "${NAME}: [$$] ${HOST} locked by `cat ${LOCK}`"
    fi
done

echo "${NAME}: [$$] end   `date`"
