From: jonathan@ucsvc.ucs.unimelb.edu.au
Newsgroups: news.software.anu-news
Subject: NEWSSKIM_ALT.4-OF-7
Date: 15 Oct 92 03:09:22 GMT
Organization: The University of Melbourne

-+-+-+-+-+-+-+-+ START OF PART 4 -+-+-+-+-+-+-+-+
Vde'`20"`20+`20-
X`09`09`20`20`20"has`20NO`20node`20address`20defined.`20(''f$time()')"
X$`20`20`20mail`20NL:`20usenet`20/subject="''Mail_Subject'"
X$`20`20`20goto`20`20DIR_SEARCH
X$`20endif
X$
X$`20if`20MAIL_Address`20.eqs.`20"NL:"`09`09!`20`20Newsfeed`20disabled.
X$`20then
X$`20`20`20say`20"%NEWSPOST`20WARNING:`20MAIL`20Newsfeed`20to`20''Node'`20"`20+
V`20-
X`09"is`20disabled`20in`20NODE_INFO.DAT`20(''f$time()')"
X$`20`20`20goto`20`20DIR_SEARCH
X$`20endif
X$
X$`20Post_Batch_Files`20=`20"NEWS_MANAGER_DEV:`5BPOST_''Node'`5DNEWS.BATCH;*"
X$`20Post_Files`20`20`20`20`20`20`20=`20"NEWS_MANAGER_DEV:`5BPOST_''Node'`5DNEW
VS.SEND_BATCH;"
X$`20if`20f$search`20(Post_Batch_Files)`20.nes.`20""
X$`20then
X$`20`20`20set`20noon
X$`20`20`20rename`20/nolog`20'Post_Batch_Files'`20'Post_Files'
X$`20`20`20set`20on
X$`20endif
X$`20Post_Files`20=`20Post_Files`20+`20"*"
X$
X$FILE_SEARCH:
X$`20on`20warning`20`20then`20`20goto`20`20ABORT
X$`20gosub`20`20Check_Stop`09`09!`20Check`20before`20each`20batch`20file.
X$
X$`20if`20(Xfer_Failure`20.ge.`20Failure_Limit)`20.or.`20(Batch_Count`20.ge.
V`20Max_Mail_Batches)
X$`20then
X$`20`20`20Batch_File`20=`20""`09`09!`20Force`20end`20for`20this`20node.
X$`20else
X$`20`20`20Batch_File`20=`20f$search`20(Post_Files,File_Search)
X$`20endif
X$
X$`20if`20Batch_File`20.eqs.`20""
X$`20then
X$`20`20`20if`20Postmaster`09`09!`20Give`20up`20the`20lock
X$`20`20`20then
X$`20`20`20`20`20close`20/nolog`20Post_Lock
X$`20`20`20`20`20Postmaster`20=`200
X$`20`20`20`20`20set`20noon
X$`20`20`20`20`20if`20f$search`20(Post_Lock_File)`20.nes.`20""`20`20then`20-
X`09`20`20delete`20/nolog`20'Post_Lock_File';*`09`09!`20Clean`20up.
X$`20`20`20`20`20set`20on
X$`20`20`20endif
X$`20`20`20if`20Xfer_Failure`20.gt.`200
X$`20`20`20then
X$`20`20`20`20`20if`20Notify_Failed_Mail`20`20then`20`20mail`20NL:`20usenet`20/
Vsubject=`20-
X`09`20`20"%NEWSPOST`20Alarm:`20MAIL`20XFER_FAILURE`20to`20''Node'`20(''f$time(
V)')"
X$`20`20`20endif
X$`20`20`20if`20Postman`20`20then`20`20RETURN
X$`20`20`20goto`20`20DIR_SEARCH
X$`20endif
X$
X$`20if`20Postmaster`20`20then`20`20goto`20`20DIRECT_MAIL_TO_NODE`09!`20We`20ha
Vve`20the`20lock`20!
X$
X$!`20`20Check`20the`20post`20lock`20-`20only`20one`20process`20within`20the
V`20cluster`20should`20post
X$
X$`20Post_Lock_File`20=`20"NEWS_MANAGER:LOCK_MAIL.''Node'"
X$`20if`20f$search`20(Post_Lock_File)`20.nes.`20""
X$`20then
X$`20`20`20msgs`20=`20f$environment`20("MESSAGE")`09!`20No`20need`20to`20worry
V`20about`20FLK`20messages.
X$`20`20`20set`20message`20/nofacility`20/noidentification`20/noseverity`20/not
Vext
X$`20`20`20set`20noon
X$`20`20`20delete`20/nolog`20'Post_Lock_File';*`09!`20Clean`20up`20any`20strays
V`20not`20open`20elsewhere
X$`20`20`20set`20on
X$`20`20`20set`20message`20'msgs'
X$`20`20`20if`20f$search`20(Post_Lock_File)`20.nes.`20""`09!`20Still`20there
V`20=`20Locked`20=`20go`20away
X$`20`20`20then
X$`20`20`20`20`20say`20"%NEWSPOST:`20Another`20process`20is`20MAILing`20to`20''
VNode'`20at`20''f$time()'"
X$`20`20`20`20`20if`20Postman`20`20then`20`20RETURN`09`09`09!`20All`20done`20he
Vre.
X$`20`20`20`20`20goto`20`20DIR_SEARCH`09`09`09`09!`20Try`20another`20one`20mayb
Ve.
X$`20`20`20endif
X$`20endif
X$
X$!`20`20If`20posting`20asynchronously,`20fire`20off`20the`20batch`20job.
X$
X$`20if`20Asynchronous_Post`09`09`09!`20True`20only`20in`20News_Skim`20process.
V
X$`20then
X$`20`20`20say`20"%Starting`20asynchronous`20MAIL`20job`20to`20node`20''Node'
V`20at`20''f$time()'"
X$`20`20`20submit`20NEWS_ROOT:NEWSSKIM`20-
X`09`20/queue='Batch_Q'`20-
X`09`20'Q_Chars'`20-
X`09`20/keep`20-
X`09`20/notify`20-
X`09`20/noprint`20-
X`09`20/parameter=("#P",'Node')`20-
X`09`20/name=POST_'Node'`20-
X`09`20/log=NEWS_ROOT:NEWSPOST_'Node'.LOG
X$`20`20`20goto`20`20DIR_SEARCH
X$`20endif
X$
X$`20close`20/nolog`20Post_Lock
X$`20open`20`20/write`20Post_Lock`20'Post_Lock_File'`09!`20Get`20the`20lock.
X$`20Postmaster`20=`201
X$
X$DIRECT_MAIL_TO_NODE:
X$`20on`20warning`20`20then`20`20goto`20`20XFER_ERROR_MAIL
X$
X$`20say`20"%Mailing`20to`20''Node':`20''Batch_File'"
X$`20if`20Mail_From_Usenet`20`20then`20`20setuser`20USENET`09!`20Avoid`20bounce
Vd`20mail`20to`20NEWSMGR.
X$`20mail`20'Batch_File'`20'MAIL_Address'`20/subject="Usenet`20News`20Items`20f
Vrom`20''Newsnode'"
X$`20if`20Mail_From_Usenet`20`20then`20`20setuser`20'Me'`09!`20MUST`20return
V`20to`20normal`20!
X$`20delete`20'Batch_File'
X$`20Batch_Count`20=`20Batch_Count`20+`201
X$`20goto`20`20FILE_SEARCH
X$
X$XFER_ERROR_MAIL:
X$`20Xfer_Failure`20=`20Xfer_Failure`20+`201
X$`20goto`20`20FILE_SEARCH
X$
X$`20RETURN`09!`20Safety`20net.
X$
X$!----------------------------------------------------------------------------
V--
X$!`20`20Wait`20until`20all`20NEWSPOST`20jobs`20are`20finished.
X$
X$WAIT_POST_JOBS:
X$
X$`20Node`20=`20f$search`20("NEWS_MANAGER:LOCK_MAIL.*")
X$`20if`20Asynchronous_Post`20.and.`20Node`20.nes.`20""`09!`20Clean`20up.
X$`20then
X$`20`20`20if`20.not.`20Wait_Deliver`20`20then`20`20goto`20`20END_PSYNC
X$`20`20`20say`20"%Waiting`20for`20asynchronous`20MAIL`20jobs`20to`20complete
V`20at`20''f$time()'"
X$BEGIN_PSYNC:
X$`20`20`20if`20Node`20.eqs.`20""`20then`20`20goto`20`20END_PSYNC
X$`20`20`20Node`20=`20f$parse`20(Node,,,"TYPE","SYNTAX_ONLY")
X$`20`20`20say`20"%Waiting`20for`20asynchronous`20MAIL`20to`20''Node'`20to`20co
Vmplete`20at`20''f$time()'"
X$`20`20`20set`20noon
X$`20`20`20synchronize`20/queue='Batch_Q'`20`20POST_'Node'
X$`20`20`20set`20on
X$`20`20`20Node`20=`20f$search`20("NEWS_MANAGER:LOCK_MAIL.*")
X$`20`20`20goto`20`20BEGIN_PSYNC
X$END_PSYNC:
X$`20`20`20set`20noon
X$`20`20`20msgs`20=`20f$environment`20("MESSAGE")`09!`20No`20need`20to`20worry
V`20about`20FLK`20messages.
X$`20`20`20set`20message`20/nofacility`20/noidentification`20/noseverity`20/not
Vext
X$`20`20`20delete`20/nolog`20/modified`20/before=YESTERDAY`20NEWS_ROOT:NEWSPOST
V_*.LOG;*
X$`20`20`20purge`20`20/nolog`20/keep=40`20NEWS_ROOT:NEWSPOST_*.LOG
X$`20`20`20set`20message`20'msgs'
X$`20`20`20set`20on
X$`20endif
X$
X$`20RETURN
X$
X$!----------------------------------------------------------------------------
V--
X$!`20`20Send`20News`20items`20using`20the`20NNTP`20protocol.`20`20Search`20for
V`20all`20directories`20of
X$!`20`20the`20form`20`20NEWS_MANAGER:NNTP_<protocol>.DIR`20`20where`20<protoco
Vl>`20is`20one`20of
X$!`20`20"DECNET",`20"MULTINET",`20"CMUTCP",`20etc.`20`20These`20directories
V`20will`20contain`20files
X$!`20`20of`20the`20form`20`20<node>.IDS`20`20where`20<node>`20indicates`20the
V`20node`20to`20feed.`20`20Rename
X$!`20`20file`20to`20<node>.SEND_IDS`20to`20allow`20NNTP`20to`20continue`20to
V`20update`20the`20database
X$!`20`20whilst`20freeing`20the`20already`20added`20items`20to`20be`20sent.
X$
X$DO_XMIT_NNTP_NEWS:
X$
X$`20on`20warning`20`20then`20`20goto`20`20ABORT
X$
X$`20if`20NNTPman
X$`20then
X$`20`20`20say`20"%Checking`20for`20news`20to`20send`20to`20''Node'`20via`20NNT
VP`20at`20''f$time()'"
X$`20else
X$`20`20`20say`20"%Checking`20for`20news`20to`20send`20to`20other`20sites`20via
V`20NNTP`20at`20''f$time()'"
X$`20endif
X$
X$`20NNTP_xmit`20:=`20$NEWS_MANAGER:NNTP_XMIT
X$`20Failure_Limit`20=`202
X$
X$PROTOCOL_SEARCH:
X$`20on`20warning`20`20then`20`20goto`20`20ABORT
X$
X$`20if`20NNTPman
X$`20then
X$`20`20`20NNTP_Dir`20=`20f$search`20("NEWS_MANAGER:NNTP_''Protocol'.DIR")
X$`20`20`20if`20NNTP_Dir`20.eqs.`20""
X$`20`20`20then
X$`20`20`20`20`20Fail_msg1`20=`20"%NEWSNNTP`20Error:`20No`20NNTP`20directory
V`20for`20protocol`20''Protocol'"
X$`20`20`20`20`20goto`20`20ABORT
X$`20`20`20endif
X$`20else
X$`20`20`20NNTP_Dir`20=`20f$search`20("NEWS_MANAGER:NNTP_*.DIR",NNTP_Proto_Sear
Vch)
X$`20`20`20if`20NNTP_Dir`20.eqs.`20""`20`20then`20`20RETURN
X$`20`20`20Protocol`20=`20f$parse`20(NNTP_Dir,,,"NAME","SYNTAX_ONLY")`20-`20"NN
VTP_"
X$`20endif
X$
X$NODE_SEARCH:
X$`20on`20warning`20`20then`20`20goto`20`20ABORT
X$`20Xfer_Failure`20=`200
X$
X$`20NNTP_Ids_Files`20=`20"NEWS_MANAGER_DEV:`5BNNTP_''Protocol'`5D*.IDS;*"
X$`20NNTP_Files`20`20`20`20`20=`20"NEWS_MANAGER_DEV:`5BNNTP_''Protocol'`5D*.SEN
VD_IDS;"
X$`20if`20f$search`20(NNTP_Ids_Files)`20.nes.`20""
X$`20then
X$`20`20`20set`20noon
X$`20`20`20rename`20/nolog`20'NNTP_Ids_Files'`20'NNTP_Files'
X$`20`20`20set`20on
X$`20endif
X$
X$`20if`20NNTPman
X$`20then
X$`20`20`20NNTP_Files`20=`20f$search`20-
X`09("NEWS_MANAGER_DEV:`5BNNTP_''Protocol'`5D''Node'.SEND_IDS;")
X$`20`20`20if`20NNTP_Files`20.eqs.`20""
X$`20`20`20then
X$`20`20`20`20`20Fail_msg1`20=`20"%NEWSNNTP`20Error:`20No`20NNTP`20IDS`20files
V`20for`20node`20''Node'"
X$`20`20`20`20`20goto`20`20ABORT
X$`20`20`20endif
X$`20else
X$`20`20`20NNTP_Files`20=`20f$search`20-
X`09("NEWS_MANAGER_DEV:`5BNNTP_''Protocol'`5D*.SEND_IDS;",NNTP_Node_Search)
X$`20`20`20if`20NNTP_Files`20.eqs.`20""`20`20then`20`20goto`20`20PROTOCOL_SEARC
VH
X$`20`20`20Node`20=`20f$parse`20(NNTP_Files,,,"NAME","SYNTAX_ONLY")
X$`20endif
X$
X$`20gosub`20`20Get_Address
X$`20if`20NNTP_Address`20.eqs.`20""`09`09!`20`20Unknown`20node.
X$`20then
X$`20`20`20NNTP_Subject`20=`20"%NEWSNNTP`20Alarm:`20NNTP`20XFER_FAILURE:`20''No
Vde'`20"`20+`20-
X`09`09`20`20`20"has`20NO`20node`20address`20defined.`20(''f$time()')"
X$`20`20`20mail`20NL:`20usenet`20/subject="''NNTP_Subject'"
X$`20`20`20goto`20`20NODE_SEARCH
X$`20endif
X$
X$`20if`20NNTP_Address`20.eqs.`20"NL:"`09`09!`20`20Newsfeed`20disabled.
X$`20then
X$`20`20`20say`20"%NEWSNNTP`20WARNING:`20NNTP`20Newsfeed`20to`20''Node'`20"`20+
V`20-
X`09"is`20disabled`20in`20NODE_INFO.DAT`20(''f$time()')"
X$`20`20`20goto`20`20NODE_SEARCH
X$`20endif
X$
X$`20NNTP_Files`20=`20"NEWS_MANAGER_DEV:`5BNNTP_''Protocol'`5D''Node'.SEND_IDS;
V*"
X$
X$IDS_SEARCH:
X$`20on`20warning`20`20then`20`20goto`20`20ABORT
X$`20gosub`20`20Check_Stop`09`09!`20Check`20before`20each`20ids`20file.
X$
X$`20if`20Xfer_Failure`20.ge.`20Failure_Limit
X$`20then
X$`20`20`20Ids_File`20=`20""`09`09!`20Force`20end`20for`20this`20node.
X$`20else
X$`20`20`20Ids_File`20=`20f$search`20(NNTP_Files)
X$`20endif
X$
X$`20if`20Ids_File`20.eqs.`20""
X$`20then
X$`20`20`20if`20NNTPmaster`09`09!`20Give`20up`20the`20lock
X$`20`20`20then
X$`20`20`20`20`20close`20/nolog`20NNTP_Lock
X$`20`20`20`20`20NNTPmaster`20=`200
X$`20`20`20`20`20set`20noon
X$`20`20`20`20`20if`20f$search`20(NNTP_Lock_File)`20.nes.`20""`20`20then`20-
X`09`20`20delete`20/nolog`20'NNTP_Lock_File';*`09`09!`20Clean`20up.
X$`20`20`20`20`20set`20on
X$`20`20`20endif
X$`20`20`20if`20Xfer_Failure`20.gt.`200
X$`20`20`20then
X$`20`20`20`20`20if`20Notify_Failed_NNTP`20`20then`20`20mail`20NL:`20usenet`20/
Vsubject=`20-
X`09`20`20"%NEWSNNTP`20Alarm:`20NNTP`20XFER_FAILURE`20to`20''Node'`20(''f$time(
V)')"
X$`20`20`20endif
X$`20`20`20if`20NNTPman`20`20then`20`20RETURN
X$`20`20`20goto`20`20NODE_SEARCH
X$`20endif
X$
X$`20if`20NNTPmaster`20`20then`20`20goto`20`20IMMED_NNTP_TO_NODE`09`09!`20We
V`20have`20the`20lock`20!
X$
X$!`20`20Check`20the`20NNTP`20lock`20-`20only`20one`20process`20within`20the
V`20cluster`20should`20NNTP
X$
X$`20NNTP_Lock_File`20=`20"NEWS_MANAGER:LOCK_NNTP.''Node'"
X$`20if`20f$search`20(NNTP_Lock_File)`20.nes.`20""
X$`20then
X$`20`20`20msgs`20=`20f$environment`20("MESSAGE")`09!`20No`20need`20to`20worry
V`20about`20FLK`20messages.
X$`20`20`20set`20message`20/nofacility`20/noidentification`20/noseverity`20/not
Vext
X$`20`20`20set`20noon
X$`20`20`20delete`20/nolog`20'NNTP_Lock_File';*`09!`20Clean`20up`20any`20strays
V`20not`20open`20elsewhere
X$`20`20`20set`20on
X$`20`20`20set`20message`20'msgs'
X$`20`20`20if`20f$search`20(NNTP_Lock_File)`20.nes.`20""`09!`20Still`20there
V`20=`20Locked`20=`20go`20away
X$`20`20`20then
X$`20`20`20`20`20say`20"%NEWSNNTP:`20Another`20process`20is`20NNTPing`20to`20''
VNode'`20at`20''f$time()'"
X$`20`20`20`20`20if`20NNTPman`20`20then`20`20RETURN`09`09`09!`20All`20done`20he
Vre.
X$`20`20`20`20`20goto`20`20NODE_SEARCH`09`09`09`09!`20Try`20another`20one`20may
Vbe.
X$`20`20`20endif
X$`20endif
X$
X$!`20`20If`20NNTPing`20asynchronously,`20fire`20off`20the`20batch`20job.
X$
X$`20if`20Asynchronous_NNTP`09`09`09!`20True`20only`20in`20News_Skim`20process.
V
X$`20then
X$`20`20`20say`20"%Starting`20asynchronous`20NNTP`20job`20to`20node`20''Node'
V`20at`20''f$time()'"
X$`20`20`20submit`20NEWS_ROOT:NEWSSKIM`20-
X`09`20/queue='Batch_Q'`20-
X`09`20'Q_Chars'`20-
X`09`20/keep`20-
X`09`20/notify`20-
X`09`20/noprint`20-
X`09`20/parameter=("#N",'Node','Protocol')`20-
X`09`20/name=NNTP_'Node'`20-
X`09`20/log=NEWS_ROOT:NEWSNNTP_'Node'.LOG
X$`20`20`20goto`20`20NODE_SEARCH
X$`20endif
X$
X$`20close`20/nolog`20NNTP_Lock
X$`20open`20`20/write`20NNTP_Lock`20'NNTP_Lock_File'`09!`20Get`20the`20lock.
X$`20NNTPmaster`20=`201
X$
X$IMMED_NNTP_TO_NODE:
X$`20on`20warning`20`20then`20`20goto`20`20XFER_FAILURE_NNTP
X$`20say`20"%Using`20NNTP`20to`20connect`20to`20node`20''Node'`20with`20''Proto
Vcol'`20at`20''f$time()'"
X$`20NNTP_xmit`20'NNTP_Address'`20'Protocol'`20'Ids_File'`20-
X`09NEWS_MANAGER:NNTP_XMIT_'File_Ext'.TXT`20`20NEWS_MANAGER:NNTP_'Node'.LOG
X$`20goto`20`20IDS_SEARCH
X$
X$XFER_FAILURE_NNTP:
X$`20Xfer_Failure`20=`20Xfer_Failure`20+`201
X$`20goto`20`20IDS_SEARCH
X$
X$`20RETURN`09!`20Safety`20net.
X$
X$!----------------------------------------------------------------------------
V--
X$!`20`20Wait`20until`20all`20NEWSNNTP`20jobs`20are`20finished.
X$
X$WAIT_NNTP_JOBS:
X$
X$`20Node`20=`20f$search`20("NEWS_MANAGER:LOCK_NNTP.*")
X$`20if`20Asynchronous_NNTP`20.and.`20Node`20.nes.`20""`09!`20Clean`20up.
X$`20then
X$`20`20`20if`20.not.`20Wait_Deliver`20`20then`20`20goto`20`20END_NSYNC
X$`20`20`20say`20"%Waiting`20for`20asynchronous`20NNTP`20jobs`20to`20complete
V`20at`20''f$time()'"
X$BEGIN_NSYNC:
X$`20`20`20if`20Node`20.eqs.`20""`20then`20`20goto`20`20END_NSYNC
X$`20`20`20Node`20=`20f$parse`20(Node,,,"TYPE","SYNTAX_ONLY")
X$`20`20`20say`20"%Waiting`20for`20asynchronous`20NNTP`20to`20''Node'`20to`20co
Vmplete`20at`20''f$time()'"
X$`20`20`20set`20noon
X$`20`20`20synchronize`20/queue='Batch_Q'`20`20NNTP_'Node'
X$`20`20`20set`20on
X$`20`20`20Node`20=`20f$search`20("NEWS_MANAGER:LOCK_NNTP.*")
X$`20`20`20goto`20`20BEGIN_NSYNC
X$END_NSYNC:
X$`20`20`20set`20noon
X$`20`20`20msgs`20=`20f$environment`20("MESSAGE")`09!`20No`20need`20to`20worry
V`20about`20FLK`20messages.
X$`20`20`20set`20message`20/nofacility`20/noidentification`20/noseverity`20/not
Vext
X$`20`20`20delete`20/nolog`20/modified`20/before=YESTERDAY`20NEWS_ROOT:NEWSNNTP
V_*.LOG;*
X$`20`20`20purge`20`20/nolog`20/keep=40`09`09`20`20`20`20`20`20NEWS_ROOT:NEWSNN
VTP_*.LOG
X$`20`20`20delete`20/nolog`20/modified`20/before="-2-0:0:0"`20NEWS_MANAGER:NNTP
V_*.LOG;*
+-+-+-+-+-+-+-+-  END  OF PART 4 +-+-+-+-+-+-+-+-
Newsgroups: news.software.anu-news