home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 5 / FreshFish_July-August1994.bin / bbs / comm / bbbbs-7.2.lha / BBBBS / BBBBS72.lha / rexx / bbsArcExt.rexx < prev    next >
OS/2 REXX Batch file  |  1994-04-15  |  3KB  |  94 lines

  1. /*       $VER: 7.2 bbsArcExt.rexx 15 Apr 1994 (15.4.94)
  2.    copyright 1990-94 Richard Lee Stockton FREELY DISTRIBUTABLE
  3.  
  4. Each archive should be no larger than 800,000 bytes
  5. All combined, the uncompressed files must be less than SIZE_LIMIT
  6. */
  7. SIZE_LIMIT=5000000   /* 5 megs */
  8.  
  9. LF='0A'x
  10. PARSE ARG name selected 
  11. IF selected='' THEN EXIT
  12. bbspath=GETCLIP('BBS_path')
  13. CALL CLOSE(STDOUT)
  14. CALL OPEN(STDOUT,'RAM:ArcExt.STDOUT','W')
  15.  
  16. bytes=0
  17. tbytes=0
  18. s.=''
  19. s.0=1
  20. lasti=0
  21. DO i=1 TO WORDS(selected)
  22.   info=STATEF(WORD(selected,i))
  23.   IF info='' THEN ITERATE i
  24.   bytes=bytes+WORD(info,2)
  25.   tbytes=tbytes+WORD(info,2)
  26.   IF tbytes>SIZE_LIMIT THEN LEAVE i
  27.   IF bytes>800000 & (i-lasti)>1 THEN
  28.     DO
  29.       s.0=s.0+1
  30.       bytes=0
  31.       lasti=i
  32.     END
  33.   n=s.0
  34.   s.n=STRIP(s.n WORD(selected,i))
  35. END
  36.  
  37. fdir=bbspath'EmailFiles/'name
  38. CALL MAKEDIR(fdir)
  39.  
  40. x=OPEN(f,bbspath'Numbers/LastMail','R')
  41. IF x=0 THEN EXIT 25
  42. lastm=READLN(f)
  43. CALL CLOSE(f)
  44. IF DATATYPE(lastm,'W') THEN lastm=lastm+1
  45. ELSE lastm=1
  46.  
  47. DO i=1 TO s.0
  48.   ADDRESS COMMAND 'ECHO >'bbspath'Numbers/LastMail 'lastm
  49.   x=OPEN(f,'RAM:ArcList','W')
  50.   IF x=0 THEN EXIT 26
  51.   CALL WRITELN(f,s.i) /* list in a file can be of unlimited length */
  52.   CALL CLOSE(f)
  53.   OPTIONS FAILAT 999
  54.   comm='LhA -2amNrZ a' fdir'/BBBBS_'lastm'.lha @RAM:ArcList'
  55.   ADDRESS COMMAND comm
  56.   temp=WORD(s.i,WORDS(s.i))
  57.   dev=LEFT(temp,POS(':',temp))
  58.   CALL PRAGMA('D',dev)
  59.   temp=PRAGMA('D')
  60.   dev=SPACE(LEFT(temp,POS(':',temp)-1),1,'_')
  61.   x=OPEN(f,fdir'/BBBBS_'lastm'.lha.xdl','W')
  62.   IF x=0 THEN EXIT 27
  63.   CALL WRITELN(f,dev)
  64.   CALL WRITELN(f,WORDS(s.i))
  65.   CALL CLOSE(f)
  66.   x=OPEN(f,bbspath'Email/'name'/BBBBS.'lastm,'W')
  67.   IF x=0 THEN EXIT 28
  68.   CALL WRITELN(f,' Mail: 'lastm'   FILE: BBBBS_'lastm'.lha')
  69.   CALL WRITELN(f,' From: BBBBS')
  70.   CALL WRITELN(f,'   To: 'name)
  71.   temp=' Subj: Archive of selected external device files'
  72.   IF s.0>1 THEN temp=temp', part' i 'of' s.0'.'
  73.   CALL WRITELN(f,temp)
  74.   CALL WRITELN(f,' Date: 'DATE('W') DATE() TIME('C'))
  75.   CALL WRITELN(f,LEFT('=',75,'='))
  76.   CALL WRITELN(f,'Here is the archive of files you requested.')
  77.   DO j=1 TO WORDS(s.i)
  78.     CALL WRITELN(f,WORD(s.i,j))
  79.   END
  80.   CALL CLOSE(f)
  81.   lastm=lastm+1
  82. END
  83.  
  84. newmess='Your file archive is waiting in Email.'
  85. IF GETCLIP('BBS_level')~='' & WORD(GETCLIP('BBS_lastcaller'),1)=name THEN
  86.   DO
  87.     oldmess=GETCLIP('BBS_MESSAGE')
  88.     IF oldmess~='' THEN oldmess=oldmess||'0D0A'x
  89.     CALL SETCLIP('BBS_MESSAGE',oldmess||newmess)
  90.   END
  91. IF GETCLIP('BBS_LOCAL')=name THEN CALL SETCLIP('BBS_LOCAL_MSG',newmess)
  92.  
  93. /* bbsArcExt.rexx */
  94.