home *** CD-ROM | disk | FTP | other *** search
- { NOCARRIER by Chua Chee Wee, Oct 19 1991
- This program analyses RA.LOG and finds out who's losing
- carrier and then send a message to them warning them not
- to do so.
-
- Required programs and/or files.
- RA.LOG(in the same directory as NOCARRIE.EXE)
- MBUTIL.EXE(in the \FD directory)
- NOCARRIE.TXT(in the same directory as RA.LOG)
- }
- {$M 4096,0,0}
- uses Dos;
- const
- MonthStr: Array[1..12] of String[3] = ('Jan', 'Feb', 'Mar', 'Apr',
- 'May', 'Jun', 'Jul', 'Aug',
- 'Sep', 'Oct', 'Nov', 'Dec');
- DayStr: Array[0..6] of String[3] = ('Sun', 'Mon', 'Tue', 'Wed',
- 'Thu', 'Fri', 'Sat');
- var
- LogFile: Text;
- LogLine, UserName: String;
- Time: String[8];
- Date: String[13];
- Garbage: String[2];
- LDT, LastDT: Longint;
- UserDT, DT: DateTime;
- Error, Sec100: Word;
- DataFile: File;
- LastDate: String[13];
- CurrDir: PathStr;
- Temp: String[5];
-
- function NewInfo(Line: String): Boolean;
- begin
- NewInfo := (LogLine<>'') and (LogLine[1]='-');
- end;
-
- function LostCarrier(Line: String): Boolean;
- begin
- LostCarrier := Pos('Lost carrier', Line)<>0;
- end;
-
- function UserOnline(Line: String): Boolean;
- begin
- UserOnline := Pos('on-line', Line)<>0;
- end;
-
- label Examine, WaitOnline;
-
- begin
- FillChar(UserDT, SizeOf(UserDT), 0);
- WriteLn('Carrier Lost! v1.0, Copyright (C) Oct 1991 Chua Chee Wee');
- Assign(DataFile, 'NOCARRIE.DAT');
- {$I-}
- Reset(DataFile);
- {$I+}
- if IOResult<>0 then
- begin
- with DT do
- begin
- Year := 1980; { Scan all RA log entries if run first time }
- Month := 1;
- Day := 1;
- end;
- Rewrite(DataFile);
- end else
- begin
- GetFTime(DataFile, LastDT);
- with DT do
- begin
- GetTime(Hour, Min, Sec, Sec100);
- GetDate(Year, Month, Day, Sec100);
- end;
- end;
- PackTime(DT, LDT);
- SetFTime(DataFile, LDT);
- UnpackTime(LastDT, DT);
- Close(DataFile);
- Assign(LogFile, 'RA.LOG'); { Change this filename to your own RA Logfile}
- Reset(LogFile);
- while not eof(LogFile) do
- begin
- repeat
- ReadLn(LogFile, LogLine);
- until NewInfo(LogLine) or eof(LogFile);
- Examine:
- if NewInfo(LogLine) then
- Date := Copy(LogLine, 13, 13);
- WaitOnline:
- repeat
- ReadLn(LogFile, LogLine);
- until UserOnline(LogLine) or NewInfo(LogLine);
- while not (UserOnline(LogLine) or eof(LogFile)) do
- ReadLn(LogFile, LogLine);
- if UserOnline(LogLine) then
- begin
- Time := Copy(LogLine, 3, 8);
- UserName := Copy(LogLine, 13, Pos(' on-line', LogLine)-13);
- repeat
- ReadLn(LogFile, LogLine);
- if (Pos('Did not enter a full name', LogLine)<>0) or
- (Pos('Name not in user file', LogLine)<>0) then goto WaitOnline;
- until NewInfo(LogLine) or eof(LogFile) or LostCarrier(LogLine);
- if (LostCarrier(LogLine)) then
- begin
- with UserDT do
- begin
- Temp := Copy(Date, 5, 2);
- Val(Temp, Day, Error);
- Temp := Copy(Date, 8, 3);
- for Error := 1 to 12 do
- if Temp = MonthStr[Error] then Month := Error;
- Temp := Copy(Date, 12, 2);
- Val(Temp, Year, Error);
- Inc(Year, 1900);
- end;
- if (UserDT.Year>=DT.Year) and (UserDT.Month>=DT.Month) and
- (UserDT.Day>=DT.Day) then
- begin
- GetDir(0, CurrDir);
- ChDir('\FD'); { Change this directory to suit your own }
- SwapVectors;
- { \RA\NOCARRIE.TXT
- \RA is a directory which contains NOCARRIE.TXT }
- Exec('MBUTIL.EXE','POST \RA\NOCARRIE.TXT MAIN -To "'+UserName+'" -Subject "Carrier Lost on '+Date+' at '+Time+'"');
- SwapVectors;
- ChDir(CurrDir);
- end;
- end else
- if NewInfo(LogLine) then goto Examine;
- end;
- end;
- Close(LogFile);
- end.
-