#! /bin/sh
##
## cnews like batcher for INN
## single site version

. /usr/lib/batcher/send-lib || exit 1

SITE=$1
MODE=$2

##  Start logging.
touch ${LOG}
chmod 0660 ${LOG}
exec >>${LOG} 2>&1
cd ${BATCH} || exit 1

batchdefault
batchpar ${SITE}

trap 'rm -f ${LOCKPREFIX}.${SITE} ; exit 1' 1 2 3 15

terminate() {
	res=$1
	shift
	rm -f ${LOCKPREFIX}.${SITE}
        echo "${PROGNAME}: [$$] `date "+%m/%d-%H:%M:%S"` ${SITE} $*"
	exit ${res} 
}

shlock -p $$ -f ${LOCKPREFIX}.${SITE} || terminate 1 locked

test "$MODE" = PUSH && {
	SPOOLDU=`du -s /var/spool/uucp/${SITE} 2>/dev/null`
	test -z "$SPOOLDU" || {
		set $SPOOLDU
		test "$1" -ge 100 && terminate 0 "${1}k spooled"
	}
	SITEjobs=1
	SITEsize=`expr ${SITEsize} / 3`
}

##  See if any data is ready for host.
BATCHFILE=${SITE}.uucp
test -f ${SITE}.uucp.work && {
	cat ${SITE}.uucp.work >>${BATCHFILE}
	rm -f ${SITE}.uucp.work
}
test -f ${SITE} && {
	mv ${SITE} ${SITE}.uucp.work
	ctlinnd -s -t30 flush ${SITE} || terminate 1 ctlinnd failed
	cat ${SITE}.uucp.work >>${BATCHFILE}
	rm -f ${SITE}.uucp.work
}
test ! -s ${BATCHFILE} && {
	rm -f ${BATCHFILE}
	terminate 1 no articles
}

JOBS=`uustat -s${SITE} -c rnews 2>/dev/null | wc -l`
test "${JOBS}" -ge "${SITEjobs}" && terminate 1 backlogged

TODO=`wc -l <${BATCHFILE} 2>/dev/null`

QUEUEJOBS=`expr ${SITEjobs} - ${JOBS}`
batcher -b ${SITEsize} -N ${QUEUEJOBS} -p"${SITEcomp} | ${SITEtran} %s" \
		${SITE} ${BATCHFILE}

if test -s "${BATCHFILE}"; then
	terminate 0 ${TODO} "articles, more waiting"
else
	terminate 1 ${TODO} "articles"
fi
