also sprach pcg:
> also sprach drummond-m:
> > Hi all. A while back I mentioned modifying the qmailmrtg stuff to work
> > with multilog formatted files and some of you have asked me about them.
> > They are almost complete .. the mods seem pretty easy really, though I
> > am not much of a programmer. I think I have it working. The queue script
> > did not require any changing of course ... and the concurrency script
> > was easy to fix up. Just a change in the regexp that matches log files.
> > I am having some trouble with the message bandwidth script though ... it
> > seems to work when I run it by hand but not when run from cron.
> 
> I've attached the diff to alter the message file. This should make it work
> with multilog files. Works for me anyway... :)

Oops, no diff. Sorry, here it is.

/pg
-- 
Peter Green : Gospel Communications Network, SysAdmin : [EMAIL PROTECTED]
---
This  message was brought to  you by Linux, the free unix.
Windows without the X is like making love without a partner.
Sex, Drugs & Linux Rules
win-nt from the people who invented edlin
apples  have  meant  trouble  since  eden
Linux, the way to get rid of boot viruses
(By [EMAIL PROTECTED], MaDsen Wikholm)

--- qmail-mrtg-mess     Sat Oct  9 13:31:44 1999
+++ /usr/local/bin/qmail-mrtg-mess      Mon May 29 20:57:23 2000
@@ -21,18 +21,18 @@
 # the range of timestamps in a file by looking at its name and its mtime.
 # we simply presume that the latest file contains timestamps < $stop.
 opendir(DIR, $qmail_log_dir) or die;
-@_ = sort readdir(DIR);
+@_ = reverse sort readdir(DIR);
 for(;;) {
   $_ = pop(@_);
   die "Not enough log files to cover $logperiod seconds" unless $_;
-  next unless s/^\@//;
-  unshift(@ARGV, "$qmail_log_dir/\@$_");
-  last if $_ < $start - 10;    # give cyclog ten seconds to roll over the log file.
+  next unless (/^\@/ || /^current$/);
+  unshift(@ARGV, "$qmail_log_dir/$_");
+  last if $_ < tai64n2time($start) - 10;       # give cyclog ten seconds to roll over 
+the log file.
 }
 closedir(DIR);
 
 # process the two files, and run them through matchup.
-open(QA, "|$qa/matchup >/tmp/out.$$ 5>$holdingfile.new") or die;
+open(QA, "|/usr/local/bin/tai64n2time|$qa/matchup >/tmp/out.$$ 5>$holdingfile.new") 
+or die;
 if (-e "$holdingfile") {
   open(P, "<$holdingfile") or die;
   while(<P>) { print QA; }
@@ -40,7 +40,8 @@
 }
 while(<>) {
     split;
-    next if ($_[0] < $start || $_[0] >= $stop);
+    $n = tai64n2time($_[0]);
+    next if ($n < $start || $n >= $stop);
     print QA;
 }
 close(QA);
@@ -63,3 +64,16 @@
 # cleanup.
 rename("$holdingfile.new", "$holdingfile") or die;
 unlink("/tmp/out.$$");
+
+sub tai64n2time {
+  $src = shift;
+  if (($s,$t) = /^\@.(\w{15})(\w{8})/) {
+    $s = hex($s);
+    $t = hex($t); $t =~ s/500$//;
+    $tgt = "$s.$t";
+  }
+  else {
+    $tgt = $src;
+  }
+  return $tgt;
+}

Reply via email to