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";
30 my $file = $file{utm};
32 &::DEBUG("uGI: reading $file...");
34 if (!open(IN, $file)) {
35 &status("Writing uptime file for first time usage (nothing special).");
42 if (/^(\d+)\.(\d+) (.*)/) {
49 &uptimeStr(1) =~ /^(\d+)\.(\d+) (.*)/;
52 # fixed up bad implementation :)
53 # should be no problems, even if uptime or pid is duplicated.
54 ## WARN: run away forks may get through here, have to fix.
55 foreach $uptime (sort {$b <=> $a} keys %uptime) {
56 foreach $pid (keys %{ $uptime{$uptime} }) {
57 next if (exists $done{$pid});
59 push(@results,"$uptime.$pid $uptime{$uptime}{$pid}");
61 last if (scalar @results == $uptimerecords);
63 last if (scalar @results == $uptimerecords);
70 my @results = &uptimeGetInfo();
71 my $file = $file{utm};
74 &FIXME("uptime: forked process doing weird things!");
78 if (!open(OUT,">$file")) {
79 &status("error: cannot write to $file.");
89 $conn->schedule(&getRandomInt("1800-3600"), \&uptimeWriteFile, "");