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$ = " 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