# 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;
}
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;
$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;