REM SCAN Eudora Pro mailbox file REM and break each message into REM a separate DOS .htm file. DIM J1(0 TO 999) REM INITIALIZE N = 0 N0 = 0 I0 = 0 FOR I = 0 TO 999 J1(I) = 0 NEXT I I = 0 REM get input filename INPUT "Input Filename: "; N$ REM open input file OPEN N$ FOR INPUT AS #1 REM get last message number REM (begin with 0) INPUT "Last file number (or 0): "; I IF I < 0 THEN I = 0 REM check for log file INPUT "want a log file (Y/N): "; A$ IF A$ = "Y" THEN OPEN "log." FOR OUTPUT AS #3 ELSEIF A$ = "y" THEN OPEN "log." FOR OUTPUT AS #3 END IF REM open INDEX file OPEN "index." FOR OUTPUT AS #5 REM open ECHO file OPEN "echo." FOR OUTPUT AS #4 REM look thru input file DO WHILE NOT EOF(1) REM read next line of text LINE INPUT #1, R$ REM save this line K$ = R$ REM check for new message header IF LEFT$(R$, 5) = "From " THEN REM found a record header N0 = 1 REM replace with "Time:" MID$(R$,1,5) = "Time:" REM check for "???@???" IF (MID$(R$,6,7)) = "???@???" THEN S$ = MID$(R$,13) T$ = LTRIM$(S$) MID$(R$,6) = " " + T$ K1 = LEN(R$) K1 = K1 - 6 MID$(R$,K1,8) = " " R$ = RTRIM$(R$) END IF REM build output filename I = I + 1 T$ = STR$(I) + ".htm" O$ = LTRIM$(T$) J = LEN(O$) IF J = 5 THEN O$ = "msg0000" + O$ IF J = 6 THEN O$ = "msg000" + O$ IF J = 7 THEN O$ = "msg00" + O$ IF J = 8 THEN O$ = "msg0" + O$ IF J = 9 THEN O$ = "msg" + O$ REM REM check if max exceeded IF J >= 10 THEN PRINT "message count exceeds 99999" PRINT "aborting this run" PRINT #4, "message count exceeds 99999" PRINT #4, "aborting this run" GOTO 10 END IF REM make subdir as needed: S$ = MID$(O$,4,3) J = I / 100 J = FIX(J) IF J1(J) = 0 THEN T$ = "mkdir box" + S$ SHELL T$ PRINT "executing: " + T$ PRINT #4, "executing: " + T$ J1(J) = 1 END IF REM build full pathname: P$ = "box" + S$ P$ = P$ + "\" T$ = LTRIM$(O$) P$ = P$ + T$ REM report number of lines removed REM (i.e. unneeded routing text) IF N = 1 THEN PRINT " lines removed: ",M PRINT #4, " lines removed: ",M REM open epilog.htm for input OPEN "epilog.htm" FOR INPUT AS #6 DO WHILE NOT EOF(6) LINE INPUT #6, G$ PRINT #2, G$ LOOP CLOSE #6 END IF REM close output unit CLOSE #2 REM open I'th output file OPEN P$ FOR OUTPUT AS #2 PRINT "opening " + P$ PRINT #4, "opening " + P$ REM open prolog.htm for input OPEN "prolog.htm" FOR INPUT AS #6 DO WHILE NOT EOF(6) LINE INPUT #6, G$ IF MID$(G$,7,7) = "" THEN G$ = " <TITLE>Supreme Law School : E-mail : Box " + S$ + " : Msg " + MID$(P$,11,5) + "" END IF PRINT #2, G$ LOOP CLOSE #6 REM save INDEX filename & time stamp: C$ = P$ + " " + R$ REM initialize counters and flags: L = 0 M = 0 N = 1 I0 = 0 END IF REM Check for routing data: K = 1 FOR M1 = 1 TO 5 IF MID$(R$,M1, 2) = "X-" THEN GOTO 400 IF MID$(R$,M1, 7) = "Sender:" THEN GOTO 400 IF MID$(R$,M1, 9) = "Encoding:" THEN GOTO 400 IF MID$(R$,M1, 9) = "Received:" THEN GOTO 400 IF MID$(R$,M1, 9) = "Reply-To:" THEN GOTO 400 IF MID$(R$,M1,10) = "Errors-To:" THEN GOTO 400 IF MID$(R$,M1,11) = "Message-Id:" THEN GOTO 400 IF MID$(R$,M1,11) = "Precedence:" THEN GOTO 400 IF MID$(R$,M1,12) = "Return-Path:" THEN GOTO 400 IF MID$(R$,M1,13) = "Content-Type:" THEN GOTO 400 IF MID$(R$,M1,13) = "Mime-Version:" THEN GOTO 400 IF MID$(R$,M1,15) = "Auto-Submitted:" THEN GOTO 400 NEXT M1 REM Check for Subject: line IF LEFT$(R$, 8) = "Subject:" THEN REM write index record: IF I0 = 0 THEN PRINT #5, C$ + " " + R$ END IF I0 = 1 END IF REM check for "" L9 = LEN(R$) - 20 IF L9 >= 1 THEN FOR M1 = 1 TO L9 IF MID$(R$,M1,21) = "" THEN MID$(R$,M1,21) = "[address in tool bar]" END IF NEXT M1 END IF REM check for "" L9 = LEN(R$) - 19 IF L9 >= 1 THEN FOR M1 = 1 TO L9 IF MID$(R$,M1,20) = "" THEN MID$(R$,M1,20) = "[address in toolbar]" ENDIF NEXT M1 END IF REM check for random "<" or ">" M2 = 1 900 L9 = LEN(R$) FOR M1 = M2 TO L9 IF MID$(R$,M1,1) = "<" THEN IF M1 = 1 THEN L8 = L9 - 1 E$ = MID$(R$,2,L8) R$ = "<" + E$ ELSEIF M1 = L9 THEN L8 = M1 - 1 R$ = MID$(R$,1,L8) + "<" ELSE L8 = M1 - 1 L7 = L8 + 2 E$ = MID$(R$,L7) R$ = MID$(R$,1,L8) + "<" + E$ END IF M2 = M1 + 4 GOTO 900 END IF IF MID$(R$,M1,1) = ">" THEN IF M1 = 1 THEN L8 = L9 - 1 E$ = MID$(R$,2,L8) R$ = ">" + E$ ELSEIF M1 = L9 THEN L8 = M1 - 1 R$ = MID$(R$,1,L8) + ">" ELSE L8 = M1 - 1 L7 = L8 + 2 E$ = MID$(R$,L7) R$ = MID$(R$,1,L8) + ">" + E$ END IF M2 = M1 + 4 GOTO 900 END IF NEXT M1 GOTO 500 REM set FOUND flag: 400 K = 0 REM write this line 500 IF K = 1 THEN REM check if header found IF N0 = 1 THEN PRINT #2, R$ END IF ELSE REM just increment counter M = M + 1 END IF REM log debug statements L = L + 1 IF A$ = "Y" THEN PRINT #3, "file";I;" line ";L;" is: ";K$ ELSEIF A$ = "y" THEN PRINT #3, "file";I;" line ";L;" is: ";K$ END IF REM get next record LOOP REM report number of lines removed REM (i.e. unneeded routing text) 10 IF N = 1 THEN PRINT " lines removed: ",M PRINT #4, " lines removed: ",M REM open epilog.htm for input OPEN "epilog.htm" FOR INPUT AS #6 DO WHILE NOT EOF(6) LINE INPUT #6, G$ PRINT #2, G$ LOOP CLOSE #6 END IF REM report no message headers IF N0 = 0 THEN PRINT "no message headers found" PRINT #4, "no message headers found" END IF PRINT "all done!" PRINT #4, "all done!" REM close files CLOSE STOP END