# dynamic scalar. MUST BE REDUCED IN SIZE!!!
### TODO: reorder.
use vars qw(
+ $bot_misc_dir $bot_pid $bot_base_dir $bot_src_dir
+ $bot_data_dir $bot_config_dir $bot_state_dir $bot_run_dir
$answer $correction_plausible $talkchannel $bot_release
$statcount $memusage $user $memusageOld $bot_version $dbh
- $shm $host $msg $bot_misc_dir $bot_pid $bot_base_dir $noreply
- $bot_src_dir $conn $irc $learnok $nick $ident $no_syscall
+ $shm $host $msg $noreply $conn $irc $learnok $nick $ident
$force_public_reply $addrchar $userHandle $addressedother
$floodwho $chan $msgtime $server $firsttime $wingaterun
- $flag_quit $msgType
+ $flag_quit $msgType $no_syscall
$utime_userfile $wtime_userfile $ucount_userfile
$utime_chanfile $wtime_chanfile $ucount_chanfile
- $pubsize $pubcount $pubtime $pubsleep
- $msgsize $msgcount $msgtime $msgsleep
- $notsize $notcount $nottime $notsleep
+ $pubsize $pubcount $pubtime
+ $msgsize $msgcount $msgtime
+ $notsize $notcount $nottime
+ $running
);
# dynamic hash.
$utime_chanfile = 0;
$wtime_chanfile = 0;
$ucount_chanfile = 0;
+$running = 0;
### more variables...
$msgtime = time();
$msgsize = 0;
-$msgcount = $msgsleep = 0;
+$msgcount = 0;
$pubtime = 0;
$pubsize = 0;
-$pubcount = $pubsleep = 0;
+$pubcount = 0;
$nottime = 0;
$notsize = 0;
-$notcount = $notsleep = 0;
+$notcount = 0;
###
if ( -d "CVS" ) {
use POSIX qw(strftime);
&closeDCC();
&closePID();
+ &closeStats();
&seenFlush();
&quit($param{'quitMsg'}) if (&whatInterface() =~ /IRC/);
&writeUserFile();
return 0;
}
+ $chan ||= "_default";
+
my $old = $chan;
if ($chan =~ tr/A-Z/a-z/) {
&WARN("IsChanConf: lowercased chan. ($old)");
# About: Retrieve value for 'param' value in current/default chan.
# Return: scalar for success, undef for failure.
sub getChanConf {
- my($param,$chan) = @_;
+ my($param,$c) = @_;
if (!defined $param) {
&WARN("param == NULL.");
return 0;
}
- $chan ||= "_default";
- my @c = grep /^$chan$/i, keys %chanconf;
+ # this looks evil...
+ if (0 and !defined $chan) {
+ &DEBUG("gCC: ok !chan... doing _default instead.");
+ }
+
+ $c ||= $chan;
+ $c ||= "_default";
+ $c = "_default" if ($c eq "*"); # fix!
+ my @c = grep /^$c$/i, keys %chanconf;
if (@c) {
- if ($c[0] ne $chan) {
+ if (0 and $c[0] ne $c) {
&WARN("c ne chan ($c[0] ne $chan)");
}
return $chanconf{$c[0]}{$param};
}
+# &DEBUG("gCC: returning _default... ");
return $chanconf{"_default"}{$param};
}
+#####
+# Usage: &findChanConf($param);
+# About: Retrieve value for 'param' value from any chan.
+# Return: scalar for success, undef for failure.
+sub findChanConf {
+ my($param) = @_;
+
+ if (!defined $param) {
+ &WARN("param == NULL.");
+ return 0;
+ }
+
+ my $c;
+ foreach $c (keys %chanconf) {
+ foreach (keys %{ $chanconf{$c} }) {
+ next unless (/^$param$/);
+
+ &DEBUG("chanconf{$c}{$_} ...");
+ return $chanconf{$c}{$_};
+ }
+ }
+
+ return;
+}
+
sub showProc {
my ($prefix) = $_[0] || "";
}
# read.
- &loadLang($bot_misc_dir. "/blootbot.lang");
+ &loadLang($bot_data_dir. "/blootbot.lang");
&loadIRCServers();
&readUserFile();
&readChanFile();
$param{tempDir} =~ s#\~/#$ENV{HOME}/#;
&status("Initial memory usage: $memusage kB");
+ &status("-------------------------------------------------------");
}
sub setupConfig {
$param{'VERBOSITY'} = 1;
- &loadConfig($bot_misc_dir."/blootbot.config");
+ &loadConfig($bot_config_dir."/blootbot.config");
foreach ("ircNick", "ircUser", "ircName", "DBType", "tempDir") {
next if &IsParam($_);
}
# static scalar variables.
- $file{utm} = "$bot_base_dir/$param{'ircUser'}.uptime";
- $file{PID} = "$bot_base_dir/$param{'ircUser'}.pid";
+ $file{utm} = "$bot_state_dir/$param{'ircUser'}.uptime";
+ $file{PID} = "$bot_run_dir/$param{'ircUser'}.pid";
}
sub startup {
sub shutdown {
# reverse order of &setup().
- &DEBUG("shutdown called.");
+ &status("--- shutdown called.");
$ident ||= "blootbot"; # hack.
### crappy bug in Net::IRC?
if (!$conn->connected and time - $msgtime > 900) {
- &status("reconnecting because of uncaught disconnect.");
+ &status("reconnecting because of uncaught disconnect \@ ".scalar(localtime) );
### $irc->start;
+ &clearIRCVars();
$conn->connect();
### return;
}
&DCCBroadcast("-HUP called.","m");
&shutdown();
- &loadConfig($bot_misc_dir."/blootbot.config");
+ &loadConfig($bot_config_dir."/blootbot.config");
&reloadAllModules() if (&IsParam("DEBUG"));
&setup();
my ($file) = @_;
if (!open(FILE, $file)) {
- &ERROR("FAILED loadConfig ($file): $!");
- &status("Please copy files/sample.config to files/blootbot.config");
- &status(" and edit files/blootbot.config, modify to tastes.");
+ &ERROR("Failed to read configuration file ($file): $!");
+ &status("Please read the INSTALL file on how to install and setup this file.");
exit 0;
}