home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gold Fish 2
/
goldfish_vol2_cd1.bin
/
files
/
comm
/
fido
/
spot
/
rexx
/
brycc.spot
< prev
next >
Wrap
Text File
|
1993-09-19
|
5KB
|
177 lines
/*******************************************************************/
/* $VER: BryCC.spot 1.0 (19.9.93) */
/* */
/* Inspired by CarbonCopy.spot by Peter Hanrahan */
/* */
/* This script will send multiple copies of a letter to two or */
/* more users. */
/* */
/* Will either prompt you for receivers or read them from a file */
/* */
/* Both takes the format: Username @ Address */
/* */
/* Author: Brian Jacobsen FidoNet: 2:230/311.17 */
/*******************************************************************/
ADDRESS 'SPOT'
SIGNAL ON SYNTAX
OPTIONS RESULTS
ed = 'Ed -S'
CCfileDir = 'MAIL:' /* Where to look for *.CC*/
tempfile1 = 'T:CC.temp'
tempfile2 = 'T:CC1.temp'
kludge = '01'x||'Via BryCC V1.0'
cr = '0d'X /* Carriage return */
receivers. = 0
addresses. = 0
ReceiverCounter = 0
'lockgui' /* Lock Spot's GUI */
'getareaname'
IF LEFT(result,4) ~= 'NET_' THEN /* Only works from */
'gotomatrixarea' /* Netmail */
'ismessages'
IF rc ~=0 THEN 'messages'
requestdata = 'TITLE "Please choose..." PROMPT "Do you want enter receivers manually or'cr' read them from a file?" GADGETS "Manual|File"'
'requestresponse' requestdata
IF rc = 0 THEN /* File */
DO
requestdata = 'TITLE "Please choose a file..." PATH "'CCfileDir'" PATTERN "#?.cc"'
'requestfile' requestdata
IF rc = 0 THEN
CALL ReadCC result
ELSE
SIGNAL exit
END
ELSE /* Manual */
DO
RequestData = 'TITLE "Please enter receivers" PROMPT " (Format username @ address)'cr' Example: Brian Jacobsen @ 2:230/311.17'cr'When finished click _Ok or hit <return>"'
'requeststring' RequestData
IF rc ~= 0 THEN SIGNAL exit
DO WHILE result ~= ""
pos = index(result,"@")
IF pos > 1 THEN
DO
ReceiverCounter = ReceiverCounter + 1;
receivers.ReceiverCounter = STRIP(LEFT(result,pos-1))
addresses.ReceiverCounter = STRIP(SUBSTR(result,pos+1))
END
'requeststring' RequestData
IF rc ~= 0 THEN SIGNAL exit
END
receivers.0 = ReceiverCounter
END
IF receivers.0 = 0 THEN SIGNAL exit /* No users selected */
IF receivers.0 = 1 THEN /* Only one selected */
DO
'requestnotify PROMPT "Oh boy, you only selected one receiver.'cr'Please use write instead..."'
SIGNAL exit
END
ADDRESS COMMAND ed tempfile1 /* Enter message */
'spot2front'
RequestData = 'TITLE "Please enter subject..." PROMPT "Now please enter the subject for this message'cr'Selecting Cancel will abort the message..."'
'requeststring' RequestData
IF rc ~= 0 THEN SIGNAL exit
subject = result
IF OPEN(temphandle1,tempfile1,'Read') ~= 1 THEN
DO
requestdata = 'PROMPT "Could not open' tempfile1 'for reading.."'
'requestnotify' requestdata
SIGNAL exit
END
BodyText = READCH(temphandle1,60000)
CALL CLOSE temphandle1
DO i = 1 TO Receivers.0
IF OPEN(temphandle2,tempfile2,'Write') ~= 1 THEN
DO
requestdata = 'PROMPT "Could not open' tempfile2 'for writing.."'
'requestnotify' requestdata
SIGNAL exit
END
CALL WRITELN(temphandle2,kludge)
IF Receivers.0 > 2 THEN
CALL WRITECH(temphandle2,'0a'x||'[Copies sent to: ')
ELSE
CALL WRITECH(temphandle2,'0a'x||'[Copy sent to: ')
FirstReceiver = 1
DO x = 1 TO Receivers.0
IF x ~= i THEN
DO
IF FirstReceiver = 0 THEN
CALL WRITECH(temphandle2,', ')
ELSE
FirstReceiver = 0
CALL WRITECH(temphandle2,Receivers.x)
END
END
CALL WRITECH(temphandle2,']'||'0a0a'x)
CALL WRITECH(temphandle2,BodyText)
CALL CLOSE temphandle2
requestdata = 'TO "'receivers.i'" TOADDR "'addresses.i'" SUBJECT "'subject'" FILE "'tempfile2'" NOEDIT NOGUI'
'write' requestdata
END
SIGNAL exit /* End of main program */
ReadCC: PROCEDURE EXPOSE receivers. addresses.
ARG CfgFileName
ReceiverCounter = 0
IF OPEN('cfghandle',CfgFileName,'Read') ~= 1 THEN
DO
requestdata = 'PROMPT "Could not open' CfgFileName 'for reading.."'
'requestnotify' requestdata
SIGNAL exit
END
inline = READLN('cfghandle')
DO WHILE ~EOF('cfghandle')
PARSE VAR inline receiver '@' fidoaddress
receiver = STRIP(receiver,'B')
fidoaddress = STRIP(fidoaddress,'B')
IF receiver ~= "" THEN
DO
IF fidoaddress ~= "" THEN
DO
ReceiverCounter = ReceiverCounter + 1
receivers.ReceiverCounter = receiver
addresses.ReceiverCounter = fidoaddress
END
ELSE
DO
requestdata = 'PROMPT "There seems to be missing a @ in' CfgFileName'"'
'requestnotify' requestdata
SIGNAL exit
END
END
inline = READLN('cfghandle')
END
CALL CLOSE('cfghandle')
receivers.0 = ReceiverCounter
RETURN
syntax:
SAY rc ERRORTEXT(rc) 'in line' SIGL
failure:
exit:
ADDRESS COMMAND 'Delete >NIL:' tempfile1
ADDRESS COMMAND 'Delete >NIL:' tempfile2
'unlockgui'
EXIT