Francois Gouget : testbot/lib: Tweak Log. pm to not open the log file for every message.

Alexandre Julliard julliard at winehq.org
Thu Oct 4 13:29:38 CDT 2012


Module: tools
Branch: master
Commit: 9267a1169b5d362c9499683b35a74a1454d4d309
URL:    http://source.winehq.org/git/tools.git/?a=commit;h=9267a1169b5d362c9499683b35a74a1454d4d309

Author: Francois Gouget <fgouget at codeweavers.com>
Date:   Thu Oct  4 14:40:08 2012 +0200

testbot/lib: Tweak Log.pm to not open the log file for every message.

Also issue a meaningful message to stderr if we cannot open the log file.

---

 testbot/lib/WineTestBot/Log.pm |   26 +++++++++++++++++++-------
 1 files changed, 19 insertions(+), 7 deletions(-)

diff --git a/testbot/lib/WineTestBot/Log.pm b/testbot/lib/WineTestBot/Log.pm
index a6762cc..6883968 100644
--- a/testbot/lib/WineTestBot/Log.pm
+++ b/testbot/lib/WineTestBot/Log.pm
@@ -32,16 +32,28 @@ require Exporter;
 @ISA = qw(Exporter);
 @EXPORT = qw(&LogMsg);
 
-sub LogMsg
+my $logfile;
+sub LogMsg(@)
 {
-  my $oldumask = umask(002);
-  my $LOGFILE;
-  if (open LOGFILE, ">>$LogDir/log")
+  if (!defined $logfile)
   {
-    print LOGFILE scalar localtime, " ", @_;
-    close LOGFILE;
+    my $oldumask = umask(002);
+    if (open($logfile, ">>", "$LogDir/log"))
+    {
+      # Flush after each print
+      my $tmp=select($logfile);
+      $| = 1;
+      select($tmp);
+    }
+    else
+    {
+      require File::Basename;
+      print STDERR File::Basename::basename($0), ":warning: could not open '$LogDir/log' for writing: $!\n";
+      $logfile = undef;
+    }
+    umask($oldumask);
   }
-  umask($oldumask);
+  print $logfile scalar localtime, " ", @_ if ($logfile);
 }
 
 1;




More information about the wine-cvs mailing list