/*
 * Request: Request Handler © 1994 PSR Software
 *          Automizes the sending of messages when requested.
 * Freeware.  May not be altered or modified without permission!
 *
 * $VER: Request.spot v2.1 (22.01.94)
 *
 */

PREF = 'Request.prefs'
FILE = 'ENV:' || PREF
FILESAVE = 'ENVARC:' || PREF
TEMP = 'T:Spot.Request.temp'
LF = '0d'x

Address SPOT
Options Results

'IsIconified'
If RC=0 Then 'UnIconify'

POS=3
'IsAreaList'
If RC=0 Then POS=1
'IsMessageList'
If RC=0 Then POS=2

'AreaList'

If Open('Prefs',FILE,'r') Then Do
   FORMAT=ReadLn('Prefs')
   If ~(FORMAT='Request Handler (19.01.94)') Then Do
      'RequestNotify TITLE "Sorry!" PROMPT "Prefs file is not compatible with this version."'
     Exit
   End
   areacount=0
   entrycount=0
   MessageDir='S:'
   ToName='Request Handler'
   Do Until Eof('Prefs')
      LINE=Strip(ReadLn('Prefs'),'L')
      If Upper(Left(LINE,5))='AREA=' Then Do
         Area.areacount=Right(LINE,Length(LINE)-5)
         areacount=areacount+1
      End
      If Upper(Left(LINE,6))='ENTRY=' Then Do
         Entry.entrycount=Right(LINE,Length(LINE)-6)
         entrycount=entrycount+1
      End
      If Upper(Left(LINE,7))='TONAME=' Then Do
         ToName=Right(LINE,Length(LINE)-7)
      End
      If Upper(Left(LINE,7))='ORIGIN=' Then Do
         Origin=Right(LINE,Length(LINE)-7)
      End
      If Upper(Left(LINE,9))='FROMNAME=' Then Do
         FromName=Right(LINE,Length(LINE)-9)
      End
   End
   Call Close('Prefs')
End
Else Exit

If areacount=0 Then Do
   'RequestNotify TITLE "Problem" PROMPT "No areas specified."
   Exit
End
If entrycount=0 Then Do
   'RequestNotify TITLE "Problem" PROMPT "No entried specified."
   Exit
End
'ProgressOpen TITLE "Request Handler" PROMPT "Searching areas..."'
REQ=RESULT
Do arealoop=0 To areacount-1
   'ProgressUpdate' REQ arealoop+1 areacount
   'MessageList'
   'GotoArea "'Area.arealoop'"'
   If RC=0 Then Do
      'IncludeFlag UNREAD'
      'GetNumSelected'
      If RESULT>0 Then Do
         'FirstMessage UNREAD'
         'Messages'
         NM=0
         Do Until NM>0
            'GetTo'
            If Upper(RESULT)=Upper(ToName) Then Do
               'GetFrom'
               From=RESULT
               'GetFromAddress'
               FromAddress=RESULT
               'GetSubject'
               Subject=RESULT
               UnRead=0
               If Pos('UNREAD',Upper(Subject))>0 Then UnRead=1
               Address Command 'Delete >NIL: "'TEMP'"'
               'SaveAscii TO "'TEMP'" OVERWRITE NOHEADER NOTEARLINE NOORIGIN NOKLUDGES NOREFLOW'
               If Open('Mes',TEMP,'r') Then Do Until (Eof('Mes') | Left(LINE,3)='---')
                  LINE=Strip(ReadLn('Mes'),'L')
                  Do entryloop=0 To entrycount-1
                     Do c=1 to 4
                        p.c=0
                        WORD.c=''
                     End
                     p.1=Pos(',',Entry.entryloop)
                     If p.1=0 Then p.1=Length(Entry.entryloop)+1
                     Else Do
                        p.2=Pos(',',Entry.entryloop,p.1+1)
                        If p.2=0 Then p.2=Length(Entry.entryloop)+1
                        Else Do
                           p.3=Pos(',',Entry.entryloop,p.2+1)
                           If p.3=0 Then p.3=Length(Entry.entryloop)+1
                           Else Do
                              p.4=Pos(',',Entry.entryloop,p.3+1)
                              If p.4=0 Then p.4=Length(Entry.entryloop)+1
                           End
                        End
                     End
                     WORD.1=Upper(Left(Entry.entryloop,p.1-1))
                     If p.2>0 Then Do
                        WORDtemp.2=Left(Entry.entryloop,p.2-1)
                        WORD.2=Right(WORDtemp.2,Length(WORDtemp.2)-p.1)
                        If p.3>0 Then Do
                           WORDtemp.3=Left(Entry.entryloop,p.3-1)
                           WORD.3=Right(WORDtemp.3,Length(WORDtemp.3)-p.2)
                           If p.4>0 Then Do
                              WORDtemp.4=Left(Entry.entryloop,p.4-1)
                              WORD.4=Right(WORDtemp.4,Length(WORDtemp.4)-p.3)
                           End
                        End
                     End
                     If Upper(WORD.1)='TEXT' Then Do
                        NAME=Upper(WORD.2)
                        FILENAME=WORD.3
                        SUBJECT=WORD.4
                        If Upper(LINE)=NAME Then Do
                           If ~UnRead Then 'MarkMessage CLEAR'
                           'Write TO "'From'" TOADDR "'FromAddress'" FROM "'FromName'" SUBJECT "'SUBJECT'" ORIGIN "'ORIGIN'" FILE "'FILENAME'" NOSIG NOEDIT NOGUI'
                        End
                     End
                     Else If Upper(WORD.1)='DOS' Then Do
                        NAME=Upper(WORD.2)
                        FILENAME=WORD.3
                        If Upper(LINE)=NAME Then Do
                           Address Command '"'FILENAME'"'
                        End
                     End
                     Else If Upper(WORD.1)='AREXX' Then Do
                        NAME=Upper(WORD.2)
                        FILENAME=WORD.3
                        PARAMS=WORD.4
                        If Upper(LINE)=NAME Then Do
                            /* unsupported */
                        End
                     End
                  End               
               End
               Else Do
                  Say "Couldn't open temp file (program still running)."
               End
               Call Close('Mes')
            End
            'NextMarked'
            NM=RC
         End
         'MessageList'
         'SetFlags UNREAD'
      End 
   End
End
'ProgressClose' REQ

If POS=1 Then 'AreaList'
If POS=2 Then 'MessageList'
If POS=3 Then 'Messages'
