]> git.donarmstrong.com Git - infobot.git/commitdiff
- undefining vars in wrong subs; fixed.
authordms <dms@c11ca15a-4712-0410-83d8-924469b57eb5>
Fri, 2 Feb 2001 13:11:49 +0000 (13:11 +0000)
committerdms <dms@c11ca15a-4712-0410-83d8-924469b57eb5>
Fri, 2 Feb 2001 13:11:49 +0000 (13:11 +0000)
- fixes reading user/chan files finally, again.

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

src/DynaConfig.pl

index 2450882f037688a01bf2334731be6914583592b7..cb9c30ea0860a3a3e881c3098ae25900f0fadcee 100644 (file)
@@ -19,7 +19,10 @@ sub readUserFile {
        exit 1;
     }
 
-    undef %users;              # clear on reload.
+    undef %users;      # clear on reload.
+    undef %bans;       # reset.
+    undef %ingore;     # reset.
+
     my $ver = <IN>;
     if ($ver !~ /^#v1/) {
        &ERROR("old or invalid user file found.");
@@ -60,12 +63,12 @@ sub readUserFile {
        } elsif (/^- (\S+):\+(\d+):\+(\d+):(\S+):(.*)$/ and $type eq "ignore") {
            ### ignore: middle entry.
            my $mask = $1;
+           my(@array) = ($2,$3,$4,$5);
            ### DEBUG purposes only!
            if ($mask !~ /^$mask{nuh}$/) {
                &WARN("ignore: mask $mask is invalid.");
                next;
            }
-           my(@array) = ($2,$3,$4,$5);
            $ignore{$chan}{$mask} = \@array;
 
        } elsif (/^::(\S+) bans$/) {            # bans: start entry.
@@ -146,8 +149,13 @@ sub writeUserFile {
        print OUT "::$chan bans\n";
        foreach (keys %{ $bans{$chan} }) {
 # format: bans: mask expire time-added count who-added reason
-           printf OUT "- %s:+%d:+%d:%d:%s:%s\n",
-           $_, @{ $bans{$chan}{$_} };
+           my @array = @{ $bans{$chan}{$_} };
+           if (scalar @array != 5) {
+               &WARN("bans: $chan/$_ is corrupted.");
+               next;
+           }
+
+           printf OUT "- %s:+%d:+%d:%d:%s:%s\n", $_, @array;
        }
     }
     print OUT "\n" if ($cbans);
@@ -166,15 +174,15 @@ sub writeUserFile {
 
        ### TODO: use hash instead of array for flexibility?
        print OUT "::$chan ignore\n";
-       &DEBUG("ignore: chan => $chan");
        foreach (keys %{ $ignore{$chan} }) {
-           &DEBUG("   => $_");
 # format: ignore: mask expire time-added who-added reason
-           printf OUT "- %s:+%d:+%d:%s:%s\n", $_,
-                                       @{ $ignore{$chan}{$_} };
-           foreach ( @{ $ignore{$chan}{$_} } ) {
-               &DEBUG("      => $_");
+           my @array = @{ $ignore{$chan}{$_} };
+           if (scalar @array != 4) {
+               &WARN("ignore: $chan/$_ is corrupted.");
+               next;
            }
+
+           printf OUT "- %s:+%d:+%d:%s:%s\n", $_, @array;
        }
     }
 
@@ -198,8 +206,7 @@ sub readChanFile {
     }
 
     undef %chanconf;   # reset.
-    undef %bans;       # reset.
-    undef %ingore;     # reset.
+
     $_ = <IN>;         # version string.
 
     my $chan;