#!/bin/sh
# An rcp-delivery daemon for C news
# by Kenneth Herron, 26-Dec-1990
# (kherron@ms.uky.edu)
# Arg 1 should be the site to rcp to (ie, its full name as needed by rcp).

site=$1
batchdir=/usr/spool/news/out.going/${site}
libdir=/usr/local/lib/cnews
locker=/usr/local/bin/newslock
glock=$libdir/locks/LOCK_$$
rlock=$libdir/locks/LOCK_${site}
rlog=${site}.log
errors=3

cd $batchdir
echo $$ > $glock
trap "rm -f $glock; exit 0" 0 1 2 3 15
if $locker $glock $rlock; then
	# No other process rcp'ing to this site
	trap "rm -f $glock $rlock; exit 0" 0 1 2 3 15
	set `grep "^$1" $libdir/rcp-sites`
	site=$1
	dir=$2
	pre=$3
	post=$4
	if [ "$pre" = '-' ]; then
		pre=
	fi
	if [ "$post" = '-' ]; then
		post=
	fi
	cnt=`/usr/local/bin/getdate now`
	cnt=`expr $cnt % 100000000`
	ecnt=0
	tcnt=0
	while files=`ls [0-9]* 2>/dev/null`; [ -n "$files" ]; do
		for file in $files; do
			if [ ! -f $file ]; then
				echo $file went poof! `date` >> $rlog
				continue
			fi
			ofile="${pre}${cnt}${post}"
			if rcp $file "${site}:${dir}/${ofile}"; then
				tcnt=`expr $tcnt + 1`
				cnt=`expr $cnt + 1`
				rm $file > /dev/null 2>&1
			else
				echo "$file -> $site:${ofile} failed" `date` >> $rlog
				ecnt=`expr $ecnt + 1`
			fi
			if [ $ecnt -ge $errors ]; then
				echo "$ecnt strikes and $site is out" >> $rlog
				break 2
			fi
		done
	done
	echo `date` $tcnt transfers to $site >> $rlog
	cat $rlog >> $libdir/rcp-out.log
	rm -f $rlock $glock $rlog
fi
exit 0
