DECLARE FUNCTION GetAddress$ (in$) DECLARE FUNCTION StripCR$ (aline$) ' take the second filename if there is more than one ... ' If includeall=1 then all headers are printed for lines like From ' where there may be multiple lines. includeall = 1 filename$ = COMMAND$ spacepos = INSTR(filename$, " ") IF spacepos > 0 THEN outfile$ = LEFT$(filename$, spacepos - 1) filename$ = MID$(filename$, spacepos + 1) ELSE outfile$ = "" END IF PRINT "FILENAME : "; filename$ PRINT "Out file : "; outfile$ IF outfile$ = "" THEN PRINT "Usage : EXTRACT " PRINT PRINT "This program will filter a mail message to remove all but the following" PRINT "headers : To, From, CC, Subject, Date and will include only the first line" PRINT "of each." PRINT PRINT "If used with pegasus filter the second filename will be supplied" PRINT "automatically, enter a Run A Program" PRINT PRINT PRINT "V1.01 cures bug in lock routine when used when used on a new system" PRINT "for the first time" PRINT PRINT "Press any key" SLEEP END END IF 'split off filename OPEN outfile$ FOR RANDOM SHARED AS #1 CLOSE #1 PRINT "Adding message from "; filename$; " to "; outfile$ PRINT PRINT "Program by Stephen Knight (stephenk@ftp.com)" PRINT DIM rec AS STRING * 1 timeout = 0 OPEN "lock" FOR RANDOM SHARED AS #3 LEN = 1 DO GET #3, 1, rec SLEEP 1 timeout = timeout + 1 LOOP UNTIL rec = " " OR rec = "" OR rec = CHR$(0) OR timeout = 90 CLOSE #3 rec = "X" OPEN "lock" FOR RANDOM SHARED AS #3 LEN = 1 PUT #3, 1, rec CLOSE #3 OPEN filename$ FOR INPUT AS #1 OPEN outfile$ FOR APPEND AS #2 DO LINE INPUT #1, line1$ colonpos = INSTR(line1$, ":") IF colonpos > 0 THEN printedline = 0 Header$ = LCASE$(LEFT$(line1$, colonpos - 1)) SELECT CASE Header$ CASE "from", "subject", "cc", "date", "to" printedline = 1 PRINT #2, line1$ END SELECT ELSE IF printedline = 1 AND includeall = 1 THEN PRINT #2, line1$ END IF END IF LOOP UNTIL RTRIM$(line1$) = "" PRINT #2, "" IF NOT EOF(1) THEN DO LINE INPUT #1, aline$ IF INSTR(aline$, CHR$(26)) = 0 THEN PRINT #2, aline$ END IF LOOP UNTIL EOF(1) END IF PRINT #2, "" PRINT #2, STRING$(30, "-") PRINT #2, "" CLOSE #1, #2 rec = " " OPEN "lock" FOR RANDOM SHARED AS #3 LEN = 1 PUT #3, 1, rec CLOSE #3 FUNCTION GetAddress$ (in$) leftbracket = INSTR(in$, "<") IF leftbracket > 0 THEN rightbracket = INSTR(leftbracket + 1, in$, ">") IF rightbracket > 0 THEN GetAddress$ = MID$(in$, leftbracket + 1, rightbracket - leftbracket - 1) ELSE GetAddress$ = MID$(in$, leftbracket + 1) END IF ELSE GetAddress$ = in$ END IF END FUNCTION FUNCTION StripCR$ (aline$) IF RIGHT$(aline$, 1) = CHR$(13) OR RIGHT$(aline$, 1) = CHR$(10) THEN stripped$ = LEFT$(aline$, LEN(aline$) - 1) ELSE stripped$ = aline$ END IF IF LEFT$(stripped$, 1) = CHR$(10) THEN stripped$ = MID$(stripped$, 1) PRINT "strip chr(10)" END IF StripCR$ = stripped$ END FUNCTION