use strict;
-# dynamic scalar. MUST BE REDUCED IN SIZE!!!
+# scalar. MUST BE REDUCED IN SIZE!!!
### TODO: reorder.
use vars qw(
$bot_misc_dir $bot_pid $bot_base_dir $bot_src_dir
$running
);
-# dynamic hash.
+# array.
use vars qw(@joinchan @ircServers @wingateBad @wingateNow @wingateCache
);
-### dynamic hash. MUST BE REDUCED IN SIZE!!!
+### hash. MUST BE REDUCED IN SIZE!!!
#
use vars qw(%count %netsplit %netsplitservers %flood %dcc %orig
%nuh %talkWho %seen %floodwarn %param %dbh %ircPort
###
if ( -d "CVS" ) {
use POSIX qw(strftime);
- $bot_release = strftime("cvs (%Y%m%d)", localtime( (stat("CVS"))[9] ) );
+ $bot_release = strftime("cvs (%Y%m%d)", gmtime( (stat("CVS"))[9] ) );
} else {
$bot_release = "1.0.10 (2001xxxx)";
}
&status("--- Start of quit.");
$ident ||= "blootbot"; # lame hack.
+ &status("Memory Usage: $memusage kB");
+
&closePID();
&closeStats();
# shutdown IRC and related components.
&writeUserFile();
&writeChanFile();
&uptimeWriteFile() if (&IsChanConf("uptime"));
- &News::writeNews() if (&ChanConfList("news"));
- &closeDB();
+ &sqlCloseDB();
&closeSHM($shm);
&dumpallvars() if (&IsParam("dumpvarsAtExit"));
&symdumpAll() if (&IsParam("symdumpAtExit"));
$c ||= $chan;
$c ||= "_default";
$c = "_default" if ($c eq "*"); # fix!
- my @c = grep /^$c$/i, keys %chanconf;
+ my @c = grep /^\Q$c\E$/i, keys %chanconf;
if (@c) {
if (0 and $c[0] ne $c) {
if (exists $param{$what}) {
if (!exists $cache{config}{$what}) {
- &status("conf: backward-compat: found param{$what} ($param{$what}) for $chan instead.");
+ &status("Config ($chan): backward-compatible option: found param{$what} ($param{$what}) instead");
$cache{config}{$what} = 1;
}
return $val if (defined $val);
$param{$what} = $default;
- &status("conf: $chan auto-setting param{$what} = $default");
+ &status("Config ($chan): auto-setting param{$what} = $default");
$cache{config}{$what} = 1;
return $default;
}
close IN;
} elsif ($^O eq "netbsd") {
- $memusage = (stat "/proc/$$/mem")[7]/1024;
+ $memusage = int( (stat "/proc/$$/mem")[7]/1024 );
} elsif ($^O =~ /^(free|open)bsd$/) {
my @info = split /\s+/, `/bin/ps -l -p $$`;
$shm = &openSHM();
&openSQLDebug() if (&IsParam("SQLDebug"));
- &openDB($param{'DBName'}, $param{'SQLUser'}, $param{'SQLPass'});
+ &sqlOpenDB($param{'DBName'}, $param{'DBType'}, $param{'SQLUser'},
+ $param{'SQLPass'});
&checkTables();
&status("Setup: ". &countKeys("factoids") ." factoids.");
- &News::readNews() if (&ChanConfList("news"));
&getChanConfDefault("sendPrivateLimitLines", 3);
&getChanConfDefault("sendPrivateLimitBytes", 1000);
&getChanConfDefault("sendPublicLimitLines", 3);
}
sub shutdown {
+ my ($sig) = @_;
# reverse order of &setup().
&status("--- shutdown called.");
$ident ||= "blootbot"; # hack.
- # opened files must be written to on shutdown/hup/whatever
- # unless they're write-only, like uptime.
- &writeUserFile();
- &writeChanFile();
- &News::writeNews() if (&ChanConfList("news"));
+ if (!&isFileUpdated("$bot_state_dir/blootbot.users", $wtime_userfile)) {
+ &writeUserFile()
+ }
+
+ if (!&isFileUpdated("$bot_state_dir/blootbot.chan", $wtime_chanfile)) {
+ &writeChanFile();
+ }
- &closeDB();
+ &sqlCloseDB();
&closeSHM($shm); # aswell. TODO: use this in &doExit?
&closeLog();
}
&status("--- $sig called.");
### crappy bug in Net::IRC?
- if (!$conn->connected and time - $msgtime > 900) {
- &status("reconnecting because of uncaught disconnect \@ ".scalar(localtime) );
+ my $delta = time() - $msgtime;
+ &DEBUG("restart: dtime = $delta");
+ if (!$conn->connected or time() - $msgtime > 900) {
+ &status("reconnecting because of uncaught disconnect \@ ".scalar(gmtime) );
### $irc->start;
&clearIRCVars();
$conn->connect();
&ircCheck(); # heh, evil!
&DCCBroadcast("-HUP called.","m");
- &shutdown();
+ &shutdown($sig);
&loadConfig($bot_config_dir."/blootbot.config");
&reloadAllModules() if (&IsParam("DEBUG"));
&setup();