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 ". gmtime(time());
22 return "$uptimenow running $bot_version";
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 ## WARN: run away forks may get through here, have to fix.
53 foreach $uptime (sort {$b <=> $a} keys %uptime) {
54 foreach $pid (keys %{ $uptime{$uptime} }) {
55 next if (exists $done{$pid});
57 push(@results,"$uptime.$pid $uptime{$uptime}{$pid}");
59 last if (scalar @results == $uptimerecords);
61 last if (scalar @results == $uptimerecords);
68 my @results = &uptimeGetInfo();
69 my $file = $file{utm};
72 &FIXME("uptime: forked process doing weird things!");
76 if (!open(OUT,">$file")) {
77 &status("error: cannot write to $file.");
86 &status("--- Saved uptime records.");
88 return unless defined $conn;
90 $conn->schedule(&getRandomInt("1800-3600"), \&uptimeWriteFile, "");