2 # Uptime.pl: Uptime daemon.
4 # Version: v0.3 (19991008)
10 my $uptimerecords = 3;
17 my $uptimenow = &uptimeNow();
19 if ( defined $_[0] ) {
20 return "$uptimenow.$$ running $bot_version, ended " . gmtime( time() );
23 return "$uptimenow running $bot_version";
28 my ( %uptime, %done );
31 my $file = $file{utm};
33 if ( !open( IN, $file ) ) {
34 &status("Writing uptime file for first time usage (nothing special).");
35 open( OUT, ">$file" );
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};
73 if ( $$ != $bot_pid ) {
74 &FIXME('uptime: forked process doing weird things!');
78 if ( !open( OUT, ">$file" ) ) {
79 &status("error: cannot write to $file.");
88 &status('--- Saved uptime records.');
93 # vim:ts=4:sw=4:expandtab:tw=80