2 # fixscript will replace this line with code to load innshellvars
5 ## SH script to send IHAVE batches out.
8 LOG=${MOST_LOGS}/${PROGNAME}.log
10 ## How many Message-ID's per message.
13 ## Go to where the action is, start logging
17 if [ "X$1" = X-d ] ; then
21 test ! -f ${LOG} && touch ${LOG}
26 echo "${PROGNAME}: [$$] begin `date`"
28 ## List of sitename:hostname pairs to send to
32 echo "${PROGNAME}: [$$] no sites specified" >&2
37 for SITE in ${LIST}; do
40 HOST=`expr $SITE : '.*:\(.*\)'`
41 SITE=`expr $SITE : '\(.*\):.*'`
47 BATCHFILE=${SITE}.ihave.batch
48 LOCK=${LOCKS}/LOCK.${SITE}.ihave
49 trap 'rm -f ${LOCK} ; exit 1' 1 2 3 15
50 shlock -p $$ -f ${LOCK} || {
51 echo "${PROGNAME}: [$$] ${SITE}.ihave locked by `cat ${LOCK}`"
55 ## See if any data is ready for host.
56 if [ -f ${SITE}.ihave.work ] ; then
57 cat ${SITE}.ihave.work >>${BATCHFILE}
58 rm -f ${SITE}.ihave.work
60 if [ ! -f ${SITE}.ihave -o ! -s ${SITE}.ihave ] ; then
61 if [ ! -f ${BATCHFILE} -o ! -s ${BATCHFILE} ] ; then
66 mv ${SITE}.ihave ${SITE}.ihave.work
67 ctlinnd -s -t30 flush ${SITE}.ihave || continue
68 cat ${SITE}.ihave.work >>${BATCHFILE}
69 rm -f ${SITE}.ihave.work
70 if [ ! -s ${BATCHFILE} ] ; then
71 echo "${PROGNAME}: [$$] no articles for ${SITE}.ihave"
76 echo "${PROGNAME}: [$$] begin ${SITE}.ihave"
78 ## Write out the batchfile as a control message, in clumps.
79 export SITE PERMESSAGE BATCHFILE
80 while test -s ${BATCHFILE} ; do
82 echo Newsgroups: to.${SITE}
83 echo Control: ihave `innconfval pathhost`
84 echo Subject: cmsg ihave `innconfval pathhost`
86 ${SED} -e ${PERMESSAGE}q <${BATCHFILE}
88 ${SED} -e "1,${PERMESSAGE}d" <${BATCHFILE} >${BATCHFILE}.tmp
89 mv ${BATCHFILE}.tmp ${BATCHFILE}
91 echo "${PROGNAME}: [$$] end ${SITE}.ihave"
95 echo "${PROGNAME}: [$$] end `date`"