2 # Uptime.pl: Uptime daemon.
4 # Version: v0.3 (19991008)
10 my $uptimerecords = 3;
17 my $uptimenow = &uptimeNow();
20 return "$uptimenow.$$ running $bot_version, ended ". localtime(time());
22 return "$uptimenow running $bot_version";
27 my (%uptime,%done,%pid);
30 my $file = $file{utm};
32 if (!open(IN, $file)) {
33 &status("Writing uptime file for first time usage (nothing special).");
40 if (/^(\d+)\.(\d+) (.*)/) {
47 &uptimeStr(1) =~ /^(\d+)\.(\d+) (.*)/;
50 # fixed up bad implementation :)
51 # should be no problems, even if uptime or pid is duplicated.
52 foreach $uptime (sort {$b <=> $a} keys %uptime) {
53 foreach $pid (keys %{$uptime{$uptime}}) {
54 next if (exists $done{$pid});
56 push(@results,"$uptime.$pid $uptime{$uptime}{$pid}");
58 last if (scalar @results == $uptimerecords);
60 last if (scalar @results == $uptimerecords);
67 my @results = &uptimeGetInfo();
68 my $file = $file{utm};
71 &WARN("uptime: forked process doing weird things! FIXME");
75 if (!open(OUT,">$file")) {
76 &status("error: cannot write to $file.");
86 $conn->schedule(&getRandomInt("1800-3600"), \&uptimeWriteFile, "");