DEADSOFTWARE

put "{$MODE ...}" directive in each source file; removed trailing spaces, and convert...
[d2df-sdl.git] / src / engine / e_log.pas
index b8a185020749e2743f246793b402b78be25bddc5..1a2499060453086ace60781d3c3b85e7fabd995d 100644 (file)
@@ -1,3 +1,5 @@
+{$MODE DELPHI}
+{$R-}
 unit e_log;
 
 interface
@@ -14,6 +16,9 @@ procedure e_WriteLog(TextLine: String; RecordCategory: TRecordCategory;
                      WriteTime: Boolean = True);
 function DecodeIPV4(ip: LongWord): string;
 
+var
+  e_WriteToStdOut: Boolean = False;
+
 implementation
 
 var
@@ -31,38 +36,52 @@ procedure e_WriteLog(TextLine: String; RecordCategory: TRecordCategory;
                      WriteTime: Boolean = True);
 var
   LogFile: TextFile;
-  Prefix: ShortString;
+  Prefix: ShortString = '';
+  OutStr: String;
 begin
   if FileName = '' then Exit;
 
   Assign(LogFile, FileName);
-  if FileExists(FileName) then
-    Append(LogFile)
-  else
-    Rewrite(LogFile);
-  if FirstRecord then
-  begin
-    Writeln(LogFile, '--- Log started at '+TimeToStr(Time)+' ---');
-    FirstRecord := False;
-  end;
-  case RecordCategory of
-    MSG_FATALERROR: Prefix := '!!!';
-    MSG_WARNING:    Prefix := '!  ';
-    MSG_NOTIFY:     Prefix := '***';
+  try
+    if FileExists(FileName) then
+      Append(LogFile)
+    else
+      Rewrite(LogFile);
+    try
+      if FirstRecord then
+      begin
+        Writeln(LogFile, '--- Log started at '+TimeToStr(Time)+' ---');
+        FirstRecord := False;
+      end;
+      case RecordCategory of
+        MSG_FATALERROR: Prefix := '!!!';
+        MSG_WARNING:    Prefix := '!  ';
+        MSG_NOTIFY:     Prefix := '***';
+      end;
+      if WriteTime then
+        OutStr := '['+TimeToStr(Time)+'] '+Prefix+' '+TextLine
+      else
+        OutStr := Prefix+' '+TextLine;
+      Writeln(LogFile, OutStr);
+      if e_WriteToStdOut then
+        Writeln(OutStr);
+    finally
+      Close(LogFile);
+    end;
+  except // sorry
   end;
-  if WriteTime then
-    Writeln(LogFile, '['+TimeToStr(Time)+'] '+Prefix+' '+TextLine)
-  else
-    Writeln(LogFile, Prefix+' '+TextLine);
-  Close(LogFile);
 end;
 
 procedure e_InitLog(fFileName: String; fWriteMode: TWriteMode);
 begin
  FileName := fFileName;
  if fWriteMode = WM_NEWFILE then
-  if FileExists(FileName) then
-   DeleteFile(FileName);
+ begin
+   try
+     if FileExists(FileName) then DeleteFile(FileName);
+   except // sorry
+   end;
+ end;
  FirstRecord := True;
 end;