use vars qw($notcount $nottime $notsize $msgcount $msgtime $msgsize
$pubcount $pubtime $pubsize);
use vars qw($b_blue $ob);
-use vars qw(@joinchan @ircServers);
+use vars qw(@ircServers);
$nickserv = 0;
# Usage: &joinNextChan();
sub joinNextChan {
- if (scalar @joinchan) {
- my $chan = shift @joinchan;
+ my @join = getJoinChans(1);
+ my $mynick = "UNDEFINED";
+
+ $mynick = $conn->nick() if $conn;
+ if (scalar @join) {
+ my $chan = shift @join;
&joinchan($chan);
- if (my $i = scalar @joinchan) {
- &status("joinNextChan: $i chans to join.");
+ if (my $i = scalar @join) {
+ &status("joinNextChan: $mynick $i chans to join.");
}
return;
}
- # !scalar @joinchan:
- my @c = &getJoinChans();
- if (exists $cache{joinTime} and scalar @c) {
+ if (exists $cache{joinTime}) {
my $delta = time() - $cache{joinTime} - 5;
my $timestr = &Time2String($delta);
- my $rate = sprintf("%.1f", $delta / @c);
+ # FIXME: @join should be @in instead (hacked to 10)
+ #my $rate = sprintf("%.1f", $delta / @in);
+ my $rate = sprintf("%.1f", $delta / 10);
delete $cache{joinTime};
&status("time taken to join all chans: $timestr; rate: $rate sec/join");
undef %channels;
undef %floodjoin;
- @joinchan = &getJoinChans(1);
$cache{joinTime} = time();
}
sub getJoinChans {
my($show) = @_;
- my @chans;
+
+ my @in;
my @skip;
+ my @join;
+
+ # can't join any if not connected
+ return @join if (!$conn);
+
+ my $nick = $conn->nick();
foreach (keys %chanconf) {
next if ($_ eq "_default");
if (defined $val) {
$skip++ if ($val eq "0");
- if (($conn) and ($val eq "1")) {
+ if ($val eq "1") {
# convert old +autojoin to autojoin <nick>
- $val = $conn->nick();
+ $val = $nick;
$chanconf{$_}{autojoin} = $val;
}
+ $skip++ if ($val ne $nick);
} else {
$skip++;
}
if ($skip) {
push(@skip, $_);
- } elsif (($conn) and ($conn->nick() eq $val)) {
- push(@chans, $_);
} else {
- push(@skip, $_);
+ if (defined $channels{$_} or exists $channels{$_}) {
+ push(@in, $_);
+ } else {
+ push(@join, $_);
+ }
}
}
my $str;
- if (scalar @skip) {
- $str = "channels not auto-joining: @skip (joining: @chans)";
- } else {
- $str = "auto-joining all chans: @chans";
- }
+ $str .= ' in:' . join(',', sort @in) if scalar @in;
+ $str .= ' skip:' . join(',', sort @skip) if scalar @skip;
+ $str .= ' join:' . join(',', sort @join) if scalar @join;
- &status("Chans: ".$str) if ($show);
+ &status("Chans: ($nick)$str") if ($show);
- return sort @chans;
+ return sort @join;
}
sub closeDCC {
&rawout("MODE $ident $param{'ircUMode'}");
}
- &status("End of motd. Now lets join some channels...");
- if (!scalar @joinchan) {
- &WARN("joinchan array is empty!");
- @joinchan = &getJoinChans(1);
- }
-
# ok, we're free to do whatever we want now. go for it!
$running = 1;
&rawout("PRIVMSG Q\@CServe.quakenet.org :AUTH $param{'Q_user'} $param{'Q_pass'}");
}
+ &status("End of motd. Now lets join some channels...");
&joinNextChan();
}
return if ($netsplit);
# who == bot.
- if ($who eq $ident or $who =~ /^\Q$ident\E$/i) {
+ if ($who =~ /^\Q$ident\E$/i) {
if (defined( my $whojoin = $cache{join}{$chan} )) {
&msg($chan, "Okay, I'm here. (courtesy of $whojoin)");
delete $cache{join}{$chan};
$cache{statusSafe} = 1;
- my @x = &getJoinChans();
- my $iconf = scalar( @x );
- my $inow = scalar( keys %channels );
- if ($iconf > 2 and $inow * 2 <= $iconf) {
- &FIXME("ircCheck: current channels ($inow) * 2 <= config channels ($iconf).");
-# @joinchan = @x;
+ my @join = &getJoinChans(1);
+ if (scalar @join) {
+ &FIXME('ircCheck: found channels to join! ' . join(',',@join));
&joinNextChan();
}
&ircloop();
delete $cache{connect};
} else {
- &status("IRCTEST: possible lost in space; checking. ".
+ &status('ircCheck: possible lost in space; checking.'.
scalar(gmtime) );
&msg($ident, "TEST");
$cache{connect} = time();
}
if (grep /^\s*$/, keys %channels) {
- &WARN("ircCheck: we have a NULL chan in hash channels? removing!");
+ &WARN('ircCheck: we have a NULL chan in hash channels? removing!');
if (!exists $channels{''}) {
- &DEBUG("ircCheck: this should never happen!");
+ &DEBUG('ircCheck: this should never happen!');
}
delete $channels{''};