home *** CD-ROM | disk | FTP | other *** search
/ Gold Fish 2 / goldfish_vol2_cd1.bin / files / comm / fido / spot / rexx / brycc.spot < prev    next >
Text File  |  1993-09-19  |  5KB  |  177 lines

  1. /*******************************************************************/
  2. /*                 $VER: BryCC.spot 1.0 (19.9.93)                  */
  3. /*                                                                 */
  4. /*         Inspired by CarbonCopy.spot by Peter Hanrahan           */
  5. /*                                                                 */
  6. /* This script will send multiple copies of a letter to two or     */
  7. /* more users.                                                     */
  8. /*                                                                 */
  9. /* Will either prompt you for receivers or read them from a file   */
  10. /*                                                                 */
  11. /* Both takes the format: Username @ Address                       */
  12. /*                                                                 */
  13. /*       Author: Brian Jacobsen   FidoNet: 2:230/311.17            */
  14. /*******************************************************************/
  15.  
  16. ADDRESS 'SPOT'
  17. SIGNAL ON SYNTAX
  18. OPTIONS RESULTS
  19.  
  20. ed = 'Ed -S'
  21. CCfileDir = 'MAIL:'                                    /* Where to look for *.CC*/
  22. tempfile1 = 'T:CC.temp'
  23. tempfile2 = 'T:CC1.temp'
  24. kludge = '01'x||'Via BryCC V1.0'
  25. cr = '0d'X                                            /* Carriage return       */
  26. receivers. = 0
  27. addresses. = 0
  28. ReceiverCounter = 0
  29.  
  30. 'lockgui'                                            /* Lock Spot's GUI       */
  31. 'getareaname'
  32. IF LEFT(result,4) ~= 'NET_' THEN                    /* Only works from       */
  33.     'gotomatrixarea'                                /* Netmail               */
  34. 'ismessages'
  35. IF rc ~=0 THEN 'messages'
  36.  
  37. requestdata = 'TITLE "Please choose..." PROMPT "Do you want enter receivers manually or'cr'    read them from a file?" GADGETS "Manual|File"'
  38. 'requestresponse' requestdata
  39.  
  40. IF rc = 0 THEN                                        /* File */
  41.     DO
  42.         requestdata = 'TITLE "Please choose a file..." PATH "'CCfileDir'" PATTERN "#?.cc"'
  43.         'requestfile' requestdata
  44.         IF rc = 0 THEN
  45.             CALL ReadCC result
  46.         ELSE
  47.             SIGNAL exit
  48.     END
  49. ELSE                                                /* Manual */
  50.     DO
  51.         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>"'
  52.         'requeststring' RequestData
  53.         IF rc ~= 0 THEN SIGNAL exit
  54.         DO WHILE result ~= ""
  55.             pos = index(result,"@")
  56.             IF pos > 1 THEN
  57.                 DO
  58.                 ReceiverCounter = ReceiverCounter + 1;
  59.                 receivers.ReceiverCounter = STRIP(LEFT(result,pos-1))
  60.                 addresses.ReceiverCounter = STRIP(SUBSTR(result,pos+1))
  61.                 END
  62.  
  63.             'requeststring' RequestData
  64.             IF rc ~= 0 THEN SIGNAL exit
  65.         END
  66.         receivers.0 = ReceiverCounter 
  67.     END
  68.  
  69. IF receivers.0 = 0 THEN SIGNAL exit                    /* No users selected */
  70. IF receivers.0 = 1 THEN                                /* Only one selected */
  71.     DO
  72.         'requestnotify PROMPT "Oh boy, you only selected one receiver.'cr'Please use write instead..."'
  73.         SIGNAL exit
  74.     END
  75.  
  76. ADDRESS COMMAND ed tempfile1                        /* Enter message */
  77. 'spot2front'
  78.  
  79. RequestData = 'TITLE "Please enter subject..." PROMPT "Now please enter the subject for this message'cr'Selecting Cancel will abort the message..."'
  80. 'requeststring' RequestData
  81. IF rc ~= 0 THEN SIGNAL exit
  82. subject = result
  83.  
  84. IF OPEN(temphandle1,tempfile1,'Read') ~= 1 THEN
  85.     DO
  86.         requestdata = 'PROMPT "Could not open' tempfile1 'for reading.."'
  87.         'requestnotify' requestdata
  88.         SIGNAL exit
  89.     END
  90.  
  91. BodyText = READCH(temphandle1,60000)
  92. CALL CLOSE temphandle1
  93.  
  94. DO i = 1 TO Receivers.0
  95.     IF OPEN(temphandle2,tempfile2,'Write') ~= 1 THEN
  96.         DO
  97.             requestdata = 'PROMPT "Could not open' tempfile2 'for writing.."'
  98.             'requestnotify' requestdata
  99.             SIGNAL exit
  100.         END
  101.  
  102.     CALL WRITELN(temphandle2,kludge)
  103.     IF Receivers.0 > 2 THEN
  104.         CALL WRITECH(temphandle2,'0a'x||'[Copies sent to: ')
  105.     ELSE
  106.         CALL WRITECH(temphandle2,'0a'x||'[Copy sent to: ')
  107.     FirstReceiver = 1
  108.     DO x = 1 TO Receivers.0
  109.         IF x ~= i THEN
  110.             DO
  111.                 IF FirstReceiver = 0 THEN
  112.                     CALL WRITECH(temphandle2,', ')
  113.                 ELSE
  114.                     FirstReceiver = 0
  115.  
  116.                 CALL WRITECH(temphandle2,Receivers.x)
  117.             END
  118.     END
  119.     CALL WRITECH(temphandle2,']'||'0a0a'x)
  120.     CALL WRITECH(temphandle2,BodyText)
  121.     CALL CLOSE temphandle2
  122.     requestdata = 'TO "'receivers.i'" TOADDR "'addresses.i'" SUBJECT "'subject'" FILE "'tempfile2'" NOEDIT NOGUI'
  123.     'write' requestdata
  124. END
  125.  
  126. SIGNAL exit                                            /* End of main program */
  127.  
  128. ReadCC: PROCEDURE EXPOSE receivers. addresses.
  129. ARG CfgFileName
  130. ReceiverCounter = 0
  131.  
  132. IF OPEN('cfghandle',CfgFileName,'Read') ~= 1 THEN
  133.     DO
  134.         requestdata = 'PROMPT "Could not open' CfgFileName 'for reading.."'
  135.         'requestnotify' requestdata
  136.         SIGNAL exit
  137.     END
  138.  
  139. inline = READLN('cfghandle')
  140.  
  141. DO WHILE ~EOF('cfghandle')
  142.     PARSE VAR inline receiver '@' fidoaddress
  143.     
  144.     receiver = STRIP(receiver,'B')
  145.     fidoaddress = STRIP(fidoaddress,'B')
  146.  
  147.     IF receiver ~= "" THEN
  148.         DO
  149.             IF fidoaddress ~= "" THEN
  150.                 DO
  151.                     ReceiverCounter = ReceiverCounter + 1
  152.                     receivers.ReceiverCounter = receiver
  153.                     addresses.ReceiverCounter = fidoaddress
  154.                 END
  155.             ELSE
  156.                 DO
  157.                     requestdata = 'PROMPT "There seems to be missing a @ in' CfgFileName'"'
  158.                     'requestnotify' requestdata
  159.                     SIGNAL exit
  160.                 END
  161.         END
  162.  
  163.     inline = READLN('cfghandle')
  164. END
  165. CALL CLOSE('cfghandle')
  166. receivers.0 = ReceiverCounter
  167. RETURN
  168.  
  169. syntax:
  170. SAY rc ERRORTEXT(rc) 'in line' SIGL
  171. failure:
  172. exit:
  173. ADDRESS COMMAND 'Delete >NIL:' tempfile1
  174. ADDRESS COMMAND 'Delete >NIL:' tempfile2
  175. 'unlockgui'
  176. EXIT
  177.