fix filter error handling and error counting
[spider.git] / perl / Filter.pm
index 64d05508a5311b63661aeab0095c7f9e3735aca2..10021a4eada0e886660e65b44e699451bd8fb452 100644 (file)
@@ -416,7 +416,8 @@ sub parse
        
        # check the line for non legal characters
        dbg("Filter::parse line: '$line'") if isdbg('filter');
-       return ('ill', $dxchan->msg('e19')) if $line !~ /{.*}/ && $line =~ /[^\s\w,_\-\*\/\(\)\$!]/;
+       my @ch = $line =~ m|([^\s\w,_\.:\/\-\*\(\)\$!])|g;
+       return ('ill', $dxchan->msg('e19', join(' ', @ch))) if $line !~ /{.*}/ && @ch;
 
        $line = lc $line;
 
@@ -558,7 +559,7 @@ sub parse
                                }
                                return (1, $dxchan->msg('e20', $lasttok)) unless $found;
                        } else {
-                               my $s = '{' . decode_regex($tok) . '}' if $tok =~ /^{.*}$/;
+                               $s = $tok =~ /^{.*}$/ ? '{' . decode_regex($tok) . '}' : $tok;
                                return (1, $dxchan->msg('filter2', $s));
                        }
                        $lasttok = $tok;
@@ -605,8 +606,8 @@ sub cmd
 
        $filter->{$fn}->{$type}->{user} = $user;
        $filter->{$fn}->{$type}->{asc} = $s;
-       $r = $filter->compile($fn, $type);
-       return (1,$r) if $r;
+       $r = $filter->compile($fn, $type);   # NOTE: returns an ERROR, therefore 0 = success
+       return (0,$r) if $r;
        
        $r = $filter->write;
        return (1,$r) if $r;