We now use a regular expression to parse the (restored to its previous
authorWayne Davison <wayned@samba.org>
Sat, 19 Feb 2005 19:36:54 +0000 (19:36 +0000)
committerWayne Davison <wayned@samba.org>
Sat, 19 Feb 2005 19:36:54 +0000 (19:36 +0000)
version) default logfile format.  Added parsing for a version of the
default logfile format where %o has been replaced with %i.

support/rsyncstats

index f172f60e1cdfc2483c2ccad86e0f3f1a29d4ca5a..b8cd00ee436a335ca549b269a09af4f8f7a5e606 100755 (executable)
@@ -1,9 +1,11 @@
 #!/usr/bin/perl
 #
 # This script parses the default logfile format produced by rsync when running
-# as a daemon with transfer logging enabled. It is derived from the xferstats
-# script that comes with wuftpd.  See the usage message at the bottom for the
-# options it takes.
+# as a daemon with transfer logging enabled.  It also parses a slightly tweaked
+# version of the default format where %o has been replaced with %i.
+#
+# This script is derived from the xferstats script that comes with wuftpd.  See
+# the usage message at the bottom for the options it takes.
 #
 # Andrew Tridgell, October 1998
 
@@ -50,10 +52,16 @@ if ($only_section) {
 
 line: while (<LOG>) {
 
-   ($day,$time,$pid,$op,$host,$ip,$module,$user,$bytes,$file) = split(' ', $_, 10);
-   next unless defined $file;
+   next unless ($day,$time,$op,$host,$module,$file,$bytes)
+      = m#^ (\d+/\d\d/\d\d)\s+(\d\d:\d\d:\d\d)\s+\[\d+\]\s+(send|recv|[<>]f\S+)\s+
+          (\S+)\s+\[\d+\.\d+\.\d+\.\d+\]\s+(\S+)\s+\(\S*\)\s+(.*)\s+(\d+) $ #x;
 
-   next if $op ne 'send' && $op ne 'recv';
+   # TODO actually divide the data by into send/recv categories
+   if ($op =~ /^>/) {
+      $op = 'send';
+   } elsif ($op =~ /^</) {
+      $op = 'recv';
+   }
 
    $daytime = $day;
    $hour = substr($time,0,2);