X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=src%2Fcore.pl;h=28c24bdf5951a1758038f661b70b78d79752c3cf;hb=9297b6322dc6a785b2ba574a59425a24ef8daf19;hp=714c1250475a85001e100f6102e0b6ac98e18331;hpb=02dd5778cf86851ed8158551400149133843516a;p=infobot.git diff --git a/src/core.pl b/src/core.pl index 714c125..28c24bd 100644 --- a/src/core.pl +++ b/src/core.pl @@ -10,18 +10,19 @@ use strict; # dynamic scalar. MUST BE REDUCED IN SIZE!!! ### TODO: reorder. use vars qw( + $bot_misc_dir $bot_pid $bot_base_dir $bot_src_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 $msgsize $msgcount $msgtime $notsize $notcount $nottime + $running ); # dynamic hash. @@ -56,6 +57,7 @@ $ucount_userfile = 0; $utime_chanfile = 0; $wtime_chanfile = 0; $ucount_chanfile = 0; +$running = 0; ### more variables... $msgtime = time(); $msgsize = 0; @@ -99,6 +101,7 @@ sub doExit { &closeDCC(); &closePID(); + &closeStats(); &seenFlush(); &quit($param{'quitMsg'}) if (&whatInterface() =~ /IRC/); &writeUserFile(); @@ -201,6 +204,8 @@ sub IsChanConf { return 0; } + $chan ||= "_default"; + my $old = $chan; if ($chan =~ tr/A-Z/a-z/) { &WARN("IsChanConf: lowercased chan. ($old)"); @@ -268,26 +273,59 @@ sub IsChanConf { # 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] || ""; @@ -352,7 +390,7 @@ sub setup { } # read. - &loadLang($bot_misc_dir. "/blootbot.lang"); + &loadLang($bot_data_dir. "/blootbot.lang"); &loadIRCServers(); &readUserFile(); &readChanFile(); @@ -380,7 +418,7 @@ sub setup { 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($_); @@ -403,8 +441,8 @@ sub setupConfig { } # 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 { @@ -422,7 +460,7 @@ sub startup { sub shutdown { # reverse order of &setup(). - &DEBUG("shutdown called."); + &status("--- shutdown called."); $ident ||= "blootbot"; # hack. @@ -445,8 +483,9 @@ sub restart { ### 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; } @@ -455,7 +494,7 @@ sub restart { &DCCBroadcast("-HUP called.","m"); &shutdown(); - &loadConfig($bot_misc_dir."/blootbot.config"); + &loadConfig($bot_config_dir."/blootbot.config"); &reloadAllModules() if (&IsParam("DEBUG")); &setup();