]> git.donarmstrong.com Git - infobot.git/blobdiff - src/Misc.pl
* Allow leading and trailing spaces in the server list
[infobot.git] / src / Misc.pl
index 76f11ebe0ad9de7502240a52bed3eccfa9e4db43..bf95b602216638c250c00dae377f83a13fe2f12d 100644 (file)
@@ -16,7 +16,7 @@ sub help {
     my $file  = $bot_data_dir."/blootbot.help";
     my %help  = ();
 
-    # crude hack for pSReply() to work as expected.
+    # crude hack for performStrictReply() to work as expected.
     $msgType = "private" if ($msgType eq "public");
 
     if (!open(FILE, $file)) {
@@ -70,10 +70,10 @@ sub help {
 
     if (exists $help{$topic}) {
        foreach (split /\n/, $help{$topic}) {
-           &pSReply($_);
+           &performStrictReply($_);
        }
     } else {
-       &pSReply("no help on $topic.  Use 'help' without arguments.");
+       &performStrictReply("no help on $topic.  Use 'help' without arguments.");
     }
 
     return '';
@@ -96,7 +96,7 @@ sub timeget {
     } else {                   # the real thing.
        return [gettimeofday()];
     }
-}    
+}
 
 sub timedelta {
     my($start_time) = shift;
@@ -117,10 +117,13 @@ sub timedelta {
 sub formListReply {
     my($rand, $prefix, @list) = @_;
     my $total  = scalar @list;
-    my $maxshow = $param{'maxListReplyCount'}  || 10;
-    my $maxlen = $param{'maxListReplyLength'} || 400;
+    my $maxshow = &getChanConfDefault('maxListReplyCount', 15, $chan);
+    my $maxlen = &getChanConfDefault('maxListReplyLength', 400, $chan);
     my $reply;
 
+    # remove irc overhead
+    $maxlen -= 30;
+
     # no results.
     return $prefix ."returned no results." unless ($total);
 
@@ -131,7 +134,11 @@ sub formListReply {
            push(@rand, $list[$_]);
            last if (scalar @rand == $maxshow);
        }
-       @list = @rand;
+       if ($total > $maxshow) {
+           @list = sort @rand;
+       } else {
+           @list = @rand;
+       }
     } elsif ($total > $maxshow) {
        &status("formListReply: truncating list.");
 
@@ -139,10 +146,11 @@ sub formListReply {
     }
 
     # form the reply.
+    # FIXME: should grow and exit when full, not discard any that are oversize
     while () {
-       $reply  = $prefix ."(\002". scalar(@list). "\002 shown";
-       $reply .= "; \002$total\002 total" if ($total != scalar @list);
-       $reply .= "): ". join(" \002;;\002 ",@list) .".";
+       $reply  = $prefix ."(\002". scalar(@list). "\002";
+       $reply .= " of \002$total\002" if ($total != scalar @list);
+       $reply .= "): " . join(" \002;;\002 ", @list) .".";
 
        last if (length($reply) < $maxlen and scalar(@list) <= $maxshow);
        last if (scalar(@list) == 1);
@@ -374,7 +382,7 @@ sub getRandomInt {
        my $i = $1;
        my $fuzzy = int(rand 5);
        if ($i < 10) {
-           return $i*60;
+           return $i;
        }
        if (rand > 0.5) {
            return ($i - $fuzzy)*60;
@@ -479,7 +487,7 @@ sub isFileUpdated {
 
     my $time_file = (stat $file)[9];
 
-    if ($time == $time_file) {
+    if ($time <= $time_file) {
        return 0;
     } else {
        return 1;
@@ -557,7 +565,7 @@ sub checkMsgType {
 sub validExec {
     my ($str) = @_;
 
-    if ($str =~ /[\'\"\|]/) {  # invalid.
+    if ($str =~ /[\`\'\"\|]/) {        # invalid.
        return 0;
     } else {                   # valid.
        return 1;
@@ -572,7 +580,7 @@ sub hasProfanity {
     for (lc $string) {
        /fuck/ and last;
        /dick|dildo/ and last;
-       /shit|turd|crap/ and last;
+       /shit/ and last;
        /pussy|[ck]unt/ and last;
        /wh[0o]re|bitch|slut/ and last;
 
@@ -582,10 +590,10 @@ sub hasProfanity {
     return $profanity;
 }
 
-sub hasParam {
+sub IsChanConfOrWarn {
     my ($param) = @_;
 
-    if (&IsChanConf($param) or &IsParam($param)) {
+    if (&IsChanConf($param) > 0) {
        return 1;
     } else {
        ### TODO: specific reason why it failed.
@@ -610,7 +618,7 @@ sub Forker {
 
        select(undef, undef, undef, 0.2);
 #      &status("fork starting for '$label', PID == $$.");
-       &status("--- fork starting for '$label', PID == $$ ---");
+       &status("--- fork starting for '$label', PID == $$, bot_pid == $bot_pid ---");
        &shmWrite($shm,"SET FORKPID $label $$");
 
        sleep 1;
@@ -618,7 +626,7 @@ sub Forker {
 
     ### TODO: use AUTOLOAD
     ### very lame hack.
-    if ($label !~ /-/ and !&loadMyModule($myModules{$label})) {
+    if ($label !~ /-/ and !&loadMyModule($label)) {
        &DEBUG("Forker: failed?");
        &delForked($label);
     }