]> git.donarmstrong.com Git - infobot.git/commitdiff
- changed &Get*() to &get*(), &Delete*() to &del*()
authordms <dms@c11ca15a-4712-0410-83d8-924469b57eb5>
Sun, 6 May 2001 13:42:06 +0000 (13:42 +0000)
committerdms <dms@c11ca15a-4712-0410-83d8-924469b57eb5>
Sun, 6 May 2001 13:42:06 +0000 (13:42 +0000)
- do command stats counter for News
- add DELAY support to sql INSERT calls.
- sql REPLACE works now - use for seenFlush()
- remove $sched{}{RUNNING}
- anything that used timeget indirectly - fixed. Stupid of me!

git-svn-id: https://svn.code.sf.net/p/infobot/code/trunk/blootbot@474 c11ca15a-4712-0410-83d8-924469b57eb5

src/CommandStubs.pl
src/IRC/Irc.pl
src/IRC/IrcHooks.pl
src/IRC/Schedulers.pl
src/Misc.pl
src/Modules/Debian.pl
src/Modules/News.pl
src/UserExtra.pl
src/db_mysql.pl

index c31129e5924edab61fbc5e2f6c4857a2116f8728..e4380702bbe1e4ed97978aaf2f082478303ade64 100644 (file)
@@ -498,7 +498,7 @@ sub seen {
     my $reply;
     ### TODO: multi channel support. may require &IsNick() to return
     ###        all channels or something.
-    my @chans = &GetNickInChans($seen[0]);
+    my @chans = &getNickInChans($seen[0]);
     if (scalar @chans) {
        $reply = "$seen[0] is currently on";
 
index c650cbdc668ef00b2a6556e628d87b4d84fd656c..5d03222be91ce6c1947a362f37aa3699eeb45859 100644 (file)
@@ -638,8 +638,8 @@ sub joinNextChan {
     }
 }
 
-# Usage: &GetNickInChans($nick,$chan);
-sub GetNickInChans {
+# Usage: &getNickInChans($nick);
+sub getNickInChans {
     my ($nick) = @_;
     my @array;
 
@@ -651,8 +651,8 @@ sub GetNickInChans {
     return @array;
 }
 
-# Usage: &GetNicksInChan($chan);
-sub GetNicksInChan {
+# Usage: &getNicksInChan($chan);
+sub getNicksInChan {
     my ($chan) = @_;
     my @array;
 
@@ -707,8 +707,8 @@ sub validChan {
 }
 
 ###
-# Usage: &DeleteUserInfo($nick,@chans);
-sub DeleteUserInfo {
+# Usage: &delUserInfo($nick,@chans);
+sub delUserInfo {
     my ($nick,@chans) = @_;
     my ($mode,$chan);
 
@@ -764,12 +764,12 @@ sub getJoinChans {
 
     my $str;
     if (scalar @skip) {
-       $str = "gJC: channels not auto-joining: @skip";
+       $str = "channels not auto-joining: @skip (joining: @chans)";
     } else {
-       $str = "gJC: auto-joining all chans.";
+       $str = "auto-joining all chans: @chans";
     }
 
-    &status($str) if ($show);
+    &status("Chans: ".$str) if ($show);
 
     return @chans;
 }
index 9b7c45918f13b79b8248ddd1a51fdff3b7ba763d..561eebb5c7e30cee56b5dda4cc8c9c0c61ba72a2 100644 (file)
@@ -540,7 +540,7 @@ sub on_kick {
        &status("SELF attempting to rejoin lost channel $chan");
        &joinchan($chan);
     } else {
-       &DeleteUserInfo($kickee,$chan);
+       &delUserInfo($kickee,$chan);
     }
 }
 
@@ -626,7 +626,7 @@ sub on_nick {
     }
     # todo: do %flood* aswell.
 
-    &DeleteUserInfo($nick, keys %channels);
+    &delUserInfo($nick, keys %channels);
     $nuh{lc $newnick} = $nuh{lc $nick};
     delete $nuh{lc $nick};
 
@@ -727,7 +727,7 @@ sub on_part {
     }
 
     $chanstats{$chan}{'Part'}++;
-    &DeleteUserInfo($nick,$chan);
+    &delUserInfo($nick,$chan);
     &clearChanVars($chan) if ($nick eq $ident);
     if (!&IsNickInAnyChan($nick) and &IsChanConf("seenStats")) {
        delete $userstats{lc $nick};
@@ -813,7 +813,7 @@ sub on_quit {
        &DEBUG("on_quit: nick $nick was not found in any chan.");
     }
 
-    &DeleteUserInfo($nick, keys %channels);
+    &delUserInfo($nick, keys %channels);
 
     if (exists $nuh{lc $nick}) {
        delete $nuh{lc $nick};
@@ -840,9 +840,10 @@ sub on_quit {
        }
     }
 
-    &status(">>> $b_cyan$nick$ob has signed off IRC $b_red($ob$reason$b_red)$ob");
+    my $chans = join(' ', &getNickInChans($nick) );
+    &status(">>> $b_cyan$nick$ob has signed off IRC $b_red($ob$reason$b_red)$ob [$chans]");
     if ($nick =~ /^\Q$ident\E$/) {
-       &DEBUG("^^^ THIS SHOULD NEVER HAPPEN.");
+       &ERROR("^^^ THIS SHOULD NEVER HAPPEN (10).");
     }
 
     if ($nick !~ /^\Q$ident\E$/ and $nick =~ /^\Q$param{'ircNick'}\E$/i) {
index f2c35667e4ecfdb52d1b3a231af5dff817bf384f..2420895ed6701087ac69b0a01a5c9b77c4bfe980 100644 (file)
@@ -74,7 +74,7 @@ sub ScheduleThis {
     my $retval = $conn->schedule($waittime, \&$codename, @args);
     $sched{$codename}{LABEL}   = $retval;
     $sched{$codename}{TIME}    = time()+$waittime;
-    $sched{$codename}{RUNNING} = 1;
+    $sched{$codename}{LOOP}    = 1;
 }
 
 ####
@@ -86,8 +86,6 @@ sub randomQuote {
     if (@_) {
        &ScheduleThis($interval, "randomQuote");
        return if ($_[0] eq "2");       # defer.
-    } else {
-       delete $sched{"randomQuote"}{RUNNING};
     }
 
     my $line = &getRandomLineFromFile($bot_misc_dir. "/blootbot.randtext");
@@ -114,8 +112,6 @@ sub randomFactoid {
     if (@_) {
        &ScheduleThis($interval, "randomFactoid");
        return if ($_[0] eq "2");       # defer.
-    } else {
-       delete $sched{"randomFactoid"}{RUNNING};
     }
 
     while (1) {
@@ -146,8 +142,6 @@ sub randomFreshmeat {
     if (@_) {
        &ScheduleThis($interval, "randomFreshmeat");
        return if ($_[0] eq "2");       # defer.
-    } else {
-       delete $sched{"randomFreshmeat"}{RUNNING};
     }
 
     my @chans = &ChanConfList("randomFreshmeat");
@@ -169,8 +163,6 @@ sub logLoop {
     if (@_) {
        &ScheduleThis(60, "logLoop");
        return if ($_[0] eq "2");       # defer.
-    } else {
-       delete $sched{"logLoop"}{RUNNING};
     }
 
     return unless (defined fileno LOG);
@@ -243,8 +235,6 @@ sub seenFlushOld {
     if (@_) {
        &ScheduleThis(1440, "seenFlushOld");
        return if ($_[0] eq "2");       # defer.
-    } else {
-       delete $sched{"seenFlushOld"}{RUNNING};
     }
 
     # is this global-only?
@@ -287,10 +277,8 @@ sub seenFlushOld {
 
 sub newsFlush {
     if (@_) {
-       &ScheduleThis(1440, "newsFlush");
+       &ScheduleThis(60, "newsFlush");
        return if ($_[0] eq "2");       # defer.
-    } else {
-       delete $sched{"newsFlush"}{RUNNING};
     }
 
     return unless (&IsChanConf("news") > 0);
@@ -348,9 +336,8 @@ sub newsFlush {
     if ($delete or $duser) {
        &DEBUG("newsF: Writing news.");
        &News::writeNews();
+       &status("NEWS deleted: $delete news entries; $duser user cache.");
     }
-
-    &status("NEWS deleted: $delete news entries; $duser user cache.");
 }
 
 sub chanlimitCheck {
@@ -359,8 +346,6 @@ sub chanlimitCheck {
     if (@_) {
        &ScheduleThis($interval, "chanlimitCheck");
        return if ($_[0] eq "2");
-    } else {
-       delete $sched{"chanlimitCheck"}{RUNNING};
     }
 
     foreach $chan ( &ChanConfList("chanlimitcheck") ) {
@@ -422,8 +407,6 @@ sub netsplitCheck {
     if (@_) {
        &ScheduleThis(30, "netsplitCheck");
        return if ($_[0] eq "2");
-    } else {
-       delete $sched{"netsplitCheck"}{RUNNING};
     }
 
     foreach $s1 (keys %netsplitservers) {
@@ -465,8 +448,6 @@ sub floodLoop {
     if (@_) {
        &ScheduleThis(60, "floodLoop"); # minutes.
        return if ($_[0] eq "2");
-    } else {
-       delete $sched{"floodLoop"}{RUNNING};
     }
 
     my $time           = time();
@@ -493,8 +474,6 @@ sub seenFlush {
        my $interval = &getChanConfDefault("seenFlushInterval", 60);
        &ScheduleThis($interval, "seenFlush");
        return if ($_[0] eq "2");
-    } else {
-       delete $sched{"seenFlush"}{RUNNING};
     }
 
     my %stats;
@@ -506,8 +485,6 @@ sub seenFlush {
 
     if ($param{'DBType'} =~ /^mysql|pg|postgres/i) {
        foreach $nick (keys %seencache) {
-           if (0) {
-           #BROKEN#
            my $retval = &dbReplace("seen", "nick", $nick, (
                        "nick" => $seencache{$nick}{'nick'},
                        "time" => $seencache{$nick}{'time'},
@@ -515,13 +492,14 @@ sub seenFlush {
                        "channel" => $seencache{$nick}{'chan'},
                        "message" => $seencache{$nick}{'msg'},
            ) );
-           &DEBUG("retval => $retval.");
            delete $seencache{$nick};
            $flushed++;
 
            next;
-           }
-           ### OLD CODE...
+
+           ###
+           ### old code.
+           ###
 
            my $exists = &dbGet("seen","nick", $nick, "nick");
 
@@ -590,8 +568,6 @@ sub leakCheck {
     if (@_) {
        &ScheduleThis(240, "leakCheck");
        return if ($_[0] eq "2");
-    } else {
-       delete $sched{"leakCheck"}{RUNNING};
     }
 
     # flood. this is dealt with in floodLoop()
@@ -648,8 +624,6 @@ sub ignoreCheck {
     if (@_) {
        &ScheduleThis(60, "ignoreCheck");
        return if ($_[0] eq "2");       # defer.
-    } else {
-       delete $sched{"ignoreCheck"}{RUNNING};
     }
 
     my $time   = time();
@@ -675,8 +649,6 @@ sub ircCheck {
     if (@_) {
        &ScheduleThis(60, "ircCheck");
        return if ($_[0] eq "2");       # defer.
-    } else {
-       delete $sched{"ircCheck"}{RUNNING};
     }
 
     my @x      = &getJoinChans();
@@ -748,8 +720,6 @@ sub miscCheck {
     if (@_) {
        &ScheduleThis(240, "miscCheck");
        return if ($_[0] eq "2");       # defer.
-    } else {
-       delete $sched{"miscCheck"}{RUNNING};
     }
 
     # SHM check.
@@ -803,8 +773,6 @@ sub miscCheck2 {
     if (@_) {
        &ScheduleThis(240, "miscCheck2");
        return if ($_[0] eq "2");       # defer.
-    } else {
-       delete $sched{"miscCheck2"}{RUNNING};
     }
 
     &DEBUG("miscCheck2: Doing debian checking...");
@@ -843,8 +811,6 @@ sub shmFlush {
     if (@_) {
        &ScheduleThis(5, "shmFlush");
        return if ($_[0] eq "2");
-    } else {
-       delete $sched{"shmFlush"}{RUNNING};
     }
 
     my $time;
@@ -892,8 +858,6 @@ sub getNickInUse {
     if (@_) {
        &ScheduleThis(30, "getNickInUse");
        return if ($_[0] eq "2");       # defer.
-    } else {
-       delete $sched{"getNickInUse"}{RUNNING};
     }
 
     &nick( $param{'ircNick'} );
@@ -905,8 +869,6 @@ sub uptimeLoop {
     if (@_) {
        &ScheduleThis(60, "uptimeLoop");
        return if ($_[0] eq "2");       # defer.
-    } else {
-       delete $sched{"uptimeLoop"}{RUNNING};
     }
 
     &uptimeWriteFile();
@@ -917,8 +879,6 @@ sub slashdotLoop {
     if (@_) {
        &ScheduleThis(60, "slashdotLoop");
        return if ($_[0] eq "2");
-    } else {
-       delete $sched{"slashdotLoop"}{RUNNING};
     }
 
     my @chans = &ChanConfList("slashdotAnnounce");
@@ -941,8 +901,6 @@ sub freshmeatLoop {
     if (@_) {
        &ScheduleThis(60, "freshmeatLoop");
        return if ($_[0] eq "2");
-    } else {
-       delete $sched{"freshmeatLoop"}{RUNNING};
     }
 
     my @chans = &ChanConfList("freshmeatAnnounce");
@@ -964,8 +922,6 @@ sub kernelLoop {
     if (@_) {
        &ScheduleThis(240, "kernelLoop");
        return if ($_[0] eq "2");
-    } else {
-       delete $sched{"kernelLoop"}{RUNNING};
     }
 
     my @chans = &ChanConfList("kernelAnnounce");
@@ -1024,8 +980,6 @@ sub wingateWriteFile {
     if (@_) {
        &ScheduleThis(60, "wingateWriteFile");
        return if ($_[0] eq "2");       # defer.
-    } else {
-       delete $sched{"wingateWriteFile"}{RUNNING};
     }
 
     return unless (scalar @wingateCache);
@@ -1058,8 +1012,6 @@ sub factoidCheck {
     if (@_) {
        &ScheduleThis(1440, "factoidCheck");
        return if ($_[0] eq "2");       # defer.
-    } else {
-       delete $sched{"factoidCheck"}{RUNNING};
     }
 
     my @list   = &searchTable("factoids", "factoid_key", "factoid_key", " #DEL#");
@@ -1100,8 +1052,6 @@ sub dccStatus {
     if (@_) {
        &ScheduleThis(10, "dccStatus");
        return if ($_[0] eq "2");       # defer.
-    } else {
-       delete $sched{"dccStatus"}{RUNNING};
     }
 
     my $time = strftime("%H:%M", localtime(time()) );
@@ -1191,10 +1141,9 @@ sub mkBackup {
     }
     return unless ($backup);
 
-    my $delta = time() - (stat $file)[9];
-    &DEBUG("mkb: delta => $delta");
-
-    my $age = &Time2String($delta);
+    # should delta be time(file) - time(file~)?
+    my $delta  = time() - (stat "$file~")[9];
+    my $age    = &Time2String($delta);
 
     ### TODO: do internal copying.
     &status("Backup: $file ($age)");
index c5069f892dbe3baba3c7a88b56262ad60e8c9ab8..b03bef73ea7ba4da80421f2b1c8020607349dea3 100644 (file)
@@ -90,7 +90,7 @@ sub timeget {
     if ($no_timehires) {       # fallback.
        return time();
     } else {                   # the real thing.
-       return gettimeofday();
+       return [gettimeofday()];
     }
 }    
 
index 75af9609584f44e73eb116724d992ee49ff7c6e4..e191496f223addc0d83b4361d1a18cf2af09c6f5 100644 (file)
@@ -302,12 +302,16 @@ sub searchContents {
        $pkg =~ s/\,/\037\,\037/g;      # underline ','.
        push(@list, "(". join(', ',@sublist) .") in $pkg");
     }
+    &::DEBUG("debian: 0");
     # sort the total list from shortest to longest...
     @list = sort { length $a <=> length $b } @list;
 
     # show how long it took.
+    &::DEBUG("debian: 1");
     my $delta_time = &::timedelta($start_time);
+    &::DEBUG("debian: 2");
     &::status(sprintf("Debian: %.02f sec to complete query.", $delta_time)) if ($delta_time > 0);
+    &::DEBUG("debian: 3");
 
     my $prefix = "Debian Search of '$query' ";
     if (scalar @list) {        # @list.
index 79324f6ac8414ee2e3d0aa2ce6bb9fe28b8a1231..8c0ff10ce0bf7e74bc4fa6e2519017a858a93f2b 100644 (file)
@@ -45,7 +45,7 @@ sub Parse {
     }
 
     if (!defined $chan) {
-       my @chans = &::GetNickInChans($::who);
+       my @chans = &::getNickInChans($::who);
 
        if (scalar @chans > 1) {
            &::notice($::who, "error: I dunno which channel you are referring to since you're on more than one. Try 'news #chan ...' instead");
@@ -139,7 +139,7 @@ sub Parse {
 
 sub readNews {
     my $file = "$::bot_base_dir/blootbot-news.txt";
-    if (! -f $file) {
+    if (! -f $file or -z $file) {
        return;
     }
 
@@ -182,13 +182,14 @@ sub readNews {
     }
     close NEWS;
 
-    &::status("News: Read $ci items for ".scalar(keys %::news)
-               ." chans, $cu users cache");
+    my $cn = scalar(keys %::news);
+    &::status("News: Read $ci items for $cn chans, $cu users cache")
+               if ($ci or $cn or $cu);
 }
 
 sub writeNews {
     if (!scalar keys %::news and !scalar keys %::newsuser) {
-       &::DEBUG("wN: nothing to write.");
+       &::VERB("wN: nothing to write.",2);
        return;
     }
 
@@ -656,7 +657,7 @@ sub latest {
 
     # todo: if chan = undefined, guess.
     if (!exists $::news{$chan}) {
-       &::notice($::who, "invalid chan $chan");
+       &::notice($::who, "invalid chan $chan") if ($flag);
        return;
     }
 
index 92bb19537093209d74ca076a65a90b50e52d80c2..184a3f03a53adb39c213fbdebe81d682f7c84b2d 100644 (file)
@@ -33,7 +33,7 @@ use vars qw(%channels %chanstats %cmdstats);
        Help => 'tell', Identifier => 'allowTelling',
        Cmdstats => 'Tell') );
 &addCmdHook("main", 'news', ('CODEREF' => 'News::Parse', 
-       Module => 'news', ) );
+       Module => 'news', 'Cmdstats' => 'News' ) );
 &addCmdHook("main", 'countrystats', ('CODEREF' => 'countryStats', 
 #      Forker => "NULL",
  ) );
index 9bb777f9ef9a7dca04b02a167eca1eaf91001908..3b659b7df41100806e5ee2b60c8a91b9b6d6f546 100644 (file)
@@ -170,15 +170,21 @@ sub dbUpdate {
 #####
 # Usage: &dbInsert($table, $primkey, %hash);
 sub dbInsert {
-    my ($table, $primkey, %hash) = @_;
+    my ($table, $primkey, %hash, $delay) = @_;
     my (@keys, @vals);
+    my $p      = "";
+
+    if ($delay) {
+       &DEBUG("dbI: delay => $delay");
+       $p      = " DELAYED";
+    }
 
     foreach (keys %hash) {
        push(@keys, $_);
        push(@vals, &dbQuote($hash{$_}));
     }
 
-    &dbRaw("Insert($table)", "INSERT INTO $table (".join(',',@keys).
+    &dbRaw("Insert($table)", "INSERT $p INTO $table (".join(',',@keys).
                ") VALUES (".join(',',@vals).")"
     );
 
@@ -192,14 +198,12 @@ sub dbReplace {
     my (@keys, @vals);
 
     foreach (keys %hash) {
-       &DEBUG("hash{$_} => $hash{$_}");
        push(@keys, $_);
        push(@vals, &dbQuote($hash{$_}));
     }
 
     &dbRaw("Replace($table)", "REPLACE INTO $table (".join(',',@keys).
-               ") VALUES (".join(',',@vals).") WHERE $primkey=".
-               &dbQuote($primval)
+               ") VALUES (". join(',',@vals). ")"
     );
 
     return 1;
@@ -207,14 +211,15 @@ sub dbReplace {
 
 #####
 # Usage: &dbSetRow($table, @values);
-sub dbSetRow {
-    my ($table, @values) = @_;
+sub dbSetRow ($@$) {
+    my ($table, @values, $delay) = @_;
+    my $p      = ($delay) ? " DELAYED " : "";
 
     foreach (@values) {
        $_ = &dbQuote($_);
     }
 
-    return &dbRaw("SetRow", "INSERT INTO $table VALUES (".
+    return &dbRaw("SetRow", "INSERT $p INTO $table VALUES (".
        join(",", @values) .")" );
 }