]> git.donarmstrong.com Git - infobot.git/blobdiff - src/core.pl
- bleh. no need to explain. had to back out one change by mistake.
[infobot.git] / src / core.pl
index a7ba007a4e60fb0eb48abd7d9e16816c9995a528..77c8f9c4fc3767d981a0d99290c6f14e5ae75532 100644 (file)
@@ -49,7 +49,7 @@ $SIG{'__WARN__'} = 'doWarn';
 $last{buflen}  = 0;
 $last{say}     = "";
 $last{msg}     = "";
-$userHandle    = "default";
+$userHandle    = "_default";
 $wingaterun    = time();
 $firsttime     = 1;
 $utime_userfile        = 0;
@@ -100,18 +100,22 @@ sub doExit {
        &status("--- Start of quit.");
        $ident ||= "blootbot";  # lame hack.
 
-       &closeDCC();
        &closePID();
        &closeStats();
-       &seenFlush();
-       &quit($param{'quitMsg'}) if (&whatInterface() =~ /IRC/);
+       # shutdown IRC and related components.
+       if (&whatInterface() =~ /IRC/) {
+           &closeDCC();
+           &seenFlush();
+           &quit($param{'quitMsg'});
+       }
        &writeUserFile();
        &writeChanFile();
-       &uptimeWriteFile()      if (&ChanConfList("uptime"));
+       &uptimeWriteFile()      if (&IsChanConf("uptime"));
        &News::writeNews()      if (&ChanConfList("news"));
        &closeDB();
        &closeSHM($shm);
        &dumpallvars()          if (&IsParam("dumpvarsAtExit"));
+       &symdumpAll()           if (&IsParam("symdumpAtExit"));
        &closeLog();
        &closeSQLDebug()        if (&IsParam("SQLDebug"));
 
@@ -205,6 +209,13 @@ sub IsChanConf {
        return 0;
     }
 
+    # should we use IsParam() externally where needed or hack it in 
+    # here just in case? fix it later.
+    if (&IsParam($param)) {
+       &status("ICC: found '$param' option in main config file.");
+       return 1;
+    }
+
     $chan      ||= "_default";
 
     my $old = $chan;
@@ -277,7 +288,7 @@ sub getChanConf {
     my($param,$c)      = @_;
 
     if (!defined $param) {
-       &WARN("param == NULL.");
+       &WARN("gCC: param == NULL.");
        return 0;
     }
 
@@ -302,6 +313,27 @@ sub getChanConf {
     return $chanconf{"_default"}{$param};
 }
 
+sub getChanConfDefault {
+    my($what, $default, $chan) = @_;
+
+    if (exists $param{$what}) {
+       if (!exists $cache{config}{$what}) {
+           &status("conf: backward-compat: found param{$what} ($param{$what}) instead.");
+           $cache{config}{$what} = 1;
+       }
+
+       return $param{$what};
+    }
+    my $val = &getChanConf($what, $chan);
+    return $val if (defined $val);
+
+    $param{$what}      = $default;
+    &status("conf: auto-setting param{$what} = $default");
+    $cache{config}{$what} = 1;
+    return $default;
+}
+
+
 #####
 #  Usage: &findChanConf($param);
 #  About: Retrieve value for 'param' value from any chan.
@@ -330,12 +362,12 @@ sub findChanConf {
 sub showProc {
     my ($prefix) = $_[0] || "";
 
-    if (!open(IN, "/proc/$$/status")) {
-       &ERROR("cannot open '/proc/$$/status'.");
-       return;
-    }
-
     if ($^O eq "linux") {
+       if (!open(IN, "/proc/$$/status")) {
+           &ERROR("cannot open '/proc/$$/status'.");
+           return;
+       }
+
        while (<IN>) {
            $memusage = $1 if (/^VmSize:\s+(\d+) kB/);
        }
@@ -366,7 +398,7 @@ sub showProc {
        } else {        # delta < 0.
            $delta = -$delta;
            # never knew RSS could decrease, probably Size can't?
-           $str = "MEM:$prefix decreased by $delta kB. YES YES YES";
+           $str = "MEM:$prefix decreased by $delta kB.";
        }
 
        &status($str);
@@ -383,13 +415,6 @@ sub setup {
     &openLog();                # write, append.
     &status("--- Started logging.");
 
-    foreach ("debian") {
-       my $dir = "$bot_base_dir/$_/";
-       next if ( -d $dir);
-       &status("Making dir $_");
-       mkdir $dir, 0755;
-    }
-
     # read.
     &loadLang($bot_data_dir. "/blootbot.lang");
     &loadIRCServers();
@@ -421,7 +446,7 @@ sub setupConfig {
     $param{'VERBOSITY'} = 1;
     &loadConfig($bot_config_dir."/blootbot.config");
 
-    foreach ("ircNick", "ircUser", "ircName", "DBType", "tempDir") {
+    foreach ( qw(ircNick ircUser ircName DBType tempDir) ) {
        next if &IsParam($_);
        &ERROR("Parameter $_ has not been defined.");
        exit 1;
@@ -438,7 +463,7 @@ sub setupConfig {
 
     if (! -d $param{tempDir}) {
        &status("making $param{tempDir}...");
-       system("mkdir $param{tempDir}");
+       mkdir $param{tempDir}, 0755;
     }
 
     # static scalar variables.