/*******************************************************************/ /* $VER: SaveUUE v2.4 (06-10-94) */ /*******************************************************************/ /* Another script by Jan-willem van Eys (FIDO: 2:283/2.11) */ /* */ /* Major thanks go to Remco van Hooff & Robert van den Breemen! */ /* */ /*******************************************************************/ /* Saves all unread uuencoded messages out to disk and marks them */ /* read. (I use DiskMaster to decode them later) */ /* */ /* Change 'Path' to your setup... (Or use 'REQ' as an option to */ /* get a nice requester...) */ /*******************************************************************/ OPTIONS RESULTS ARG argument version='SaveUUE 2.4' NL='0d'x teller=0 TEXT='Selected areas:'NL'~~~~~~~~~~~~~~~' Path='Download:' FILE='MAIL:SaveUUE.Prefs' filefout=0 ADDRESS SPOT 'getareaname' rootarea=RESULT /***********************/ /* Argument testing... */ /***********************/ IF argument='REQ' THEN DO 'requestpath TITLE "Select destination path" PATH "'Path'"' Path=RESULT END IF ~((argument='REQ') | (argument='')) THEN DO 'requestnotify PROMPT "Wrong argument: 'argument'"' EXIT END /***********************/ /* Ask for choice... */ /***********************/ 'requestresponse TITLE "'version'" PROMPT "Which areas do you want to scan?" GADGETS "_Use Prefs|_Current area|_All areas|_Quit"' select=RC IF select=0 THEN DO EXIT END IF select=1 THEN DO CALL Prefsfile IF filefout=1 THEN DO CALL create CALL Prefsfile END END /***********************/ /* Fill arrays with */ /* area names... */ /***********************/ IF (select=3 | select=1) THEN DO einde=0 counter=0 'firstarea' 'unreadarea' IF RC=2 THEN DO 'requestnotify PROMPT "No unread mail found"' EXIT END area.1='' DO UNTIL einde 'unreadarea' 'getareaname' einde=(area.1=RESULT) IF ~einde THEN DO counter=counter+1 area.counter=RESULT END END areatop=counter IF select=1 THEN DO einde=0 teller=0 count=0 DO UNTIL einde teller=teller+1 eind=0 counter=0 DO UNTIL eind counter=counter+1 IF area.counter=read.teller THEN DO count=count+1 temp.count=read.teller END eind=(counter=areatop) END einde=(teller=readtop) END tijdtop=count IF tijdtop=0 THEN DO 'gotoarea 'rootarea'' 'requestnotify PROMPT "No areas in prefsfile that have unread mail!"' EXIT END einde=0 counter=0 DO UNTIL einde counter=counter+1 area.counter=temp.counter einde=(counter=tijdtop) END areatop=tijdtop END 'firstarea' END IF select=2 THEN DO 'getareaname' area.1=RESULT areatop=1 END /************************/ /* The part that */ /* actually does the */ /* selecting & saving */ /* of the messages */ /************************/ einde=0 teller=0 counter=1 'arealist' DO UNTIL einde 'gotoarea 'area.counter'' 'messagelist' 'getmessagenum' origin=RESULT 'firstmessage UNREAD' IF RC=5 THEN DO IF select=2 THEN DO 'requestnotify PROMPT "No unread mail found"' 'gotomessage "'origin'"' EXIT END 'gotomessage "'origin'"' END ELSE DO 'include STRING "#?'NL'Begin ??? #?'NL'M#?" TEXT UNREAD NOREQ NOGUI' 'getnumselected' selected=RESULT 'firstmessage' a=1 DO WHILE ~(a=selected+1) 'nextmarked' 'getmessagenum' getal.a=RESULT a=a+1 END 'clearflags UNREAD' 'excludeflag ALL' a=1 DO WHILE ~(a=selected+1) 'gotomessage "'getal.a'"' 'markmessage' 'getsubject' over=RESULT IF UPPER(LEFT(over,3))='RE:' THEN DO lengte=LENGTH(over) lengte=lengte - 4 over=RIGHT(over,lengte) END over=SPACE(over,1,'_') IF LENGTH(over) > 26 THEN DO over=LEFT(over,26) END 'saveascii TO "'path''over'.uue" NOTEARLINE NOORIGIN NOKLUDGES' teller=teller+1 'markmessage CLEAR' a=a+1 END END einde=(counter=areatop) counter=counter+1 'gotomessage "'origin'"' END 'arealist' 'gotoarea 'rootarea'' 'requestnotify PROMPT "Saved 'teller' messages to 'path'"' EXIT /***********************/ /* Read prefsfile */ /***********************/ Prefsfile: IF OPEN('Prefs',FILE,'read') THEN DO aantal=0 check=STRIP(READLN('Prefs'),'L') naam=LEFT(check,(LENGTH(check)-4)) versie=RIGHT(check,3) rev=RIGHT(versie,1) IF ~(naam='SaveUUE' & LEFT(versie,2)='2.' & rev>0) THEN DO 'requestresponse TITLE "'version'" PROMPT "Incompatible Prefs file!'NL'~~~~~~~~~~~~~~~~~~~~~~~~'NL'Create new Prefs?" GADGETS "_Yes|_Abort" CENTER' IF RC=0 THEN DO EXIT END CALL CLOSE('Prefs') filefout=1 RETURN END DO UNTIL EOF('Prefs') temp=STRIP(UPPER(READLN('Prefs')),'L') IF ~(temp='') THEN DO double=aantal DO WHILE (double>0) & ~(read.double=temp) double=double-1 END IF double=0 THEN DO aantal=aantal+1 read.aantal=temp END END END readtop=aantal CALL CLOSE('Prefs') END /***********************/ /* Couldn't open the */ /* prefs file... */ /* Now what? */ /***********************/ ELSE DO 'requestresponse TITLE "'version'" PROMPT "Couldn''t open prefsfile'NL''FILE''NL''NL' What now?" GADGETS "_Create prefs|_Abort" CENTER' IF rc=0 THEN DO EXIT END IF rc=1 THEN DO filefout=1 RETURN END END DO counter=1 TO readtop TEXT=TEXT || NL || read.counter END 'requestresponse TITLE "'version'" PROMPT "'TEXT'" GADGETS "_Continue|_Edit|_Abort" CENTER' SELECT WHEN RC=0 THEN EXIT WHEN RC=1 THEN RETURN WHEN RC=2 THEN CALL editlist OTHERWISE SAY "What did you do to get here?" EXIT END SAY "Wrong exit!!!" EXIT /***********************/ /* Create prefsfile */ /* if it doesn't exist */ /***********************/ create: filefout=0 einde=0 CALL OPEN('Prefs',FILE,'w') CALL WRITELN('Prefs',version) CALL WRITELN('Prefs','') DO UNTIL einde=1 'requestarea TITLE "Select areas to scan" ALL' IF RC=5 THEN DO einde=1 CALL CLOSE('Prefs') LEAVE END CALL WRITELN('Prefs',RESULT) END CALL CLOSE('Prefs') RETURN /***********************/ /* Edit prefsfile */ /***********************/ editlist: einde=0 klaar=0 teller=0 teller2=1 /***********************/ /* Ask for each area */ /* if we want to keep */ /* it */ /***********************/ DO UNTIL einde teller=teller+1 'requestresponse TITLE "'version'" PROMPT "'read.teller'" GADGETS "_Keep|_Delete"' IF RC=1 THEN DO edit.teller2=read.teller teller2=teller2+1 END /***********************/ /* Ask if we want to */ /* add any areas */ /***********************/ IF teller=readtop THEN DO teller=teller2-1 'requestresponse TITLE "'version'" PROMPT "Add more areas?" GADGETS "_Yes|_No"' IF RC=0 THEN DO teller=teller+1 einde=1 LEAVE END IF RC=1 THEN DO DO UNTIL klaar teller=teller+1 'requestarea TITLE "Select areas to scan" ALL' IF RC=5 THEN DO klaar=1 einde=1 LEAVE END edit.teller=RESULT END END END END edittop=teller-1 teller=0 DO UNTIL (teller=edittop) teller=teller+1 read.teller=edit.teller END readtop=edittop TEXT='Selected areas:'NL'~~~~~~~~~~~~~~~' DO counter=1 TO readtop TEXT=TEXT || NL || read.counter END 'requestresponse TITLE "'version'" PROMPT "'TEXT'" GADGETS "_Save & continue|_Edit|_Abort" CENTER' SELECT WHEN RC=0 THEN EXIT WHEN RC=1 THEN CALL savelist WHEN RC=2 THEN CALL editlist RETURN OTHERWISE SAY "What did you do to get here?" EXIT END SAY "Wrong Exit!!!" EXIT /***********************/ /* Save the edited */ /* arealist back to */ /* disk */ /***********************/ savelist: einde=0 teller=0 CALL OPEN('Prefs',FILE,'w') CALL WRITELN('Prefs',version) CALL WRITELN('Prefs','') DO UNTIL einde=1 teller=teller+1 CALL WRITELN('Prefs',read.teller) einde=(teller=readtop) END CALL CLOSE('Prefs') RETURN