!------------------------------------------------------------------------
! GATE_LocateNewsfeed
!------------------------------------------------------------------------
! Entry Conditions
! ----------------
! This routine needs a call to GATE_LoadFeedsList first
! 1. &1$ = NewsGroup Name
!
! Exit Conditions
! ---------------
! 1. &1 = Number of Local Sub Board
! 2. &2 = Number of Network Conference
!
! Error Codes
! -----------
! -1 = No feeds loaded
! -2 = No match found
!------------------------------------------------------------------------
GATE_LocateNewsFeed ! Match the newsfeed to the info in 2/use.feeds
]PullGroup
if not feed &1=-1:goto ]Exit
&2=instring(",",&1$):if not &2 goto ]KillSpace
if &2 &1$=left$(&1$,&2-1)
if debug gosub DisplayStatus("Newsgroup = "+&1$)
]KillSpace
&3=instring(",",&1$):if not &3 goto ]Loop
if &3 &1$=&1$[&3+1]
if debug gosub DisplayStatus("Newsgroup = "+&1$)
]Loop
for &1=1 to feed
if debug gosub DisplayStatus("Conf #"+str$(feed(&1))+" = "+feed$(&1))
if &1$=feed$(&1) pop for:&2=nconf(&1):&1=feed(&1):goto ]Exit ! Got it!
next &1
&1=-2 ! Signal an error / Unsupported feed
]Exit
return(&1,&2)
!------------------------------------------------------------------------
! GATE_PostMessage - Post a message to Local and Network (if avail)
!------------------------------------------------------------------------
! Entry Conditions
! ----------------
! Must have MSG.BASE.SUBS included for MSG_ calls.
! 1. lcl = Local Sub-Board Number
! 2. net = Network Conference Number
! 3. &1$ = File to be posted
!
! Exit Conditions
! ---------------
!
! Error Codes - returned in &1
! -----------
! 0 = No Error
! -1 = No Local Sub Base (Must have one if we are the host)
! -2 = Local: Board filename does not exist
! -3 = Local: Board was full
! -4 = Network: No Destinations found
!------------------------------------------------------------------------
GATE_PostMessage ! &1=Board Number &1$=file to post
if not lcl &1=-1:goto ]Exit ! No Local Sub Base
if debug gosub DisplayStatus("Fname:"+&1$+" L:"+str$(lcl)+" N:"+str$(net))
if debug get opt$
pst$=&1$
gosub GATE_PostLocal(lcl,pst$)(&1)
if debug gosub DisplayStatus("Fname:"+&1$+" L:"+str$(lcl)+" N:"+str$(net))
if debug get opt$
gosub GATE_PostNetwork(net,pst$)(&1)
lcl=0:net=0 ! Cleanup our var. Airtight now, I'll make it watertight later!
]Exit
return(&1)
!------------------------------------------------------------------------
! GATE_PostLocal - Post a message to Local Sub Board
!------------------------------------------------------------------------
! Entry Conditions
! ----------------
! 1. &1 = Local Sub Board to post on
! 1. &1$ = File to be posted
!
! Exit Conditions
! ---------------
!
! Error Codes - returned in &1
! -----------
! 0 = No error
! -2 = Board filename does not exist
! -3 = Board was full
!------------------------------------------------------------------------
GATE_PostLocal
&1$=pst$
if debug gosub DisplayStatus("Posting "+&1$+" to "+str$(&1)):get opt$
brdn=&1:gosub MSG_openbase ! Make the call and open the base
if (brdn$="") and (&1) &1=-2:goto ]Exit ! Board filename does not exist
]CompactBase
long if smf_info(msg,2)=smf_info(msg,1)
if parm(1)=0 pop if:&1=-3:goto ]Exit
bltn=parm(1):smf_delete(msg,bltn)
end if
bltn=smf_info(msg,2)+1
gosub NET_UnbuildDate(datp$)(datp$)
gosub MSG_CreateHeader
open #1,edd$:append #1:fcopy &1$ to #1:? #1,null$:close #1
f$=edd$
open #1,f$:x=filesize(1):close #1
smf_allocate(msg,bltn,x)
smf_write(msg,bltn,f$):smf_user(msg,bltn)=parm(0)+1
smf_flush(msg)
parm(0)==+1:stat(10,0)==+1:stat(10,1)==+1
stat(11,0)==+size:stat(11,1)==+size
gosub MSG_UpdateBase
gosub MSG_closebase
]Exit
return(&1) ! Error code or status
!------------------------------------------------------------------------
! GATE_PostNetwork - Send the message out to hosted conf's subscribers
!------------------------------------------------------------------------
! Entry Conditions
! ----------------
! Must have NETWORK.MANAGER included for NET_ calls.
! 1. &1 = Conference Number
! 1. &1$ = File to be posted
!
! Exit Conditions
! ---------------
!
! Error Codes - returned in &1
! -----------
! 0 = No error
! -4 = No Destinations Found
!------------------------------------------------------------------------
GATE_PostNetwork
&1$=pst$
if debug gosub DisplayStatus("Posting Net "+&1$+" Conf#"+str$(&1)):get opt$
]FindDests
open #1,"4/conf."+str$(&1)
input #1,dest:if dest>0 input #1,dest(1) to dest(dest)
if debug gosub DisplayStatus(str$(dest)+" Destinations")
close #1
]Check
if not dest &1=-4:goto ]Exit ! Conference has no subscribers
x$="~Conferencing":gosub NET_Startup ! We are now "conferencing"
long if debug
? "whom$="whom$" whom="whom" ds="ds
? "from$="from$" from="from" ss="ss
? "&1$="&1$" datp$="datp$" status="status
end if
gosub MSG_CreateHeader
open #1,edd$:append #1:fcopy &1$ to #1:close #1
chtyp=&1:src=ourid:ss=0:usr=0:ch=2:i=1
gosub NET_WriteToChannel
]Exit
dest=0 ! Cleanup our variables!
return(&1) ! Error code or status