X-Git-Url: http://gb7djk.dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FFilter.pm;h=b927dc1f0700c0917e9bccbc61f0f345123c2c54;hb=e39b738850b9a122b60b179e9723e546ddacfd62;hp=6359b319dfd14c2d839dbd334e812a4e7e7afd45;hpb=956e3acab807900fdbccc0e2fa5e999327a1c1ce;p=spider.git diff --git a/perl/Filter.pm b/perl/Filter.pm index 6359b319..b927dc1f 100644 --- a/perl/Filter.pm +++ b/perl/Filter.pm @@ -184,8 +184,6 @@ sub it { my $self = shift; - my $hops = undef; - my $filter; my @keys = sort $self->getfilkeys; my $key; @@ -210,17 +208,9 @@ sub it } } - # hops are done differently - if ($self->{hops}) { - my ($comp, $ref); - while (($comp, $ref) = each %{$self->{hops}}) { - my ($field, $h) = @$ref; - if ($_[$field] =~ m{$comp}) { - $hops = $h; - last; - } - } - } + # hops are done differently (simply) + my $hops = $self->{hops} if exists $self->{hops}; + return ($r, $hops); } @@ -254,19 +244,21 @@ sub write sub print { my $self = shift; + my $name = shift || $self->{name}; + my $sort = shift || $self->{sort}; + my $flag = shift || ""; my @out; - my $name = $self->{name}; $name =~ s/.pl$//; - push @out, join(' ', $name , ':', $self->{sort}); + push @out, join(' ', $name , ':', $sort, $flag); my $filter; my $key; foreach $key (sort $self->getfilkeys) { my $filter = $self->{$key}; - if ($filter->{reject} && exists $filter->{reject}->{user}) { + if (exists $filter->{reject} && exists $filter->{reject}->{user}) { push @out, ' ' . join(' ', $key, 'reject', $filter->{reject}->{user}); } - if ($filter->{accept} && exists $filter->{accept}->{user}) { + if (exists $filter->{accept} && exists $filter->{accept}->{user}) { push @out, ' ' . join(' ', $key, 'accept', $filter->{accept}->{user}); } } @@ -367,7 +359,7 @@ sub parse } $filter = Filter::read_in($sort, $call, $flag); - $filter = Filter->new($sort, $call, $flag) unless $filter; + $filter = Filter->new($sort, $call, $flag) if !$filter || $filter->isa('Filter::Old'); $ntoken++; next; @@ -464,6 +456,13 @@ sub parse push @t, "(\$r->[$fref->[2]]>=$1 && \$r->[$fref->[2]]<=$2)"; } $s .= "(" . join(' || ', @t) . ")"; + } elsif ($fref->[1] eq 't') { + my @t; + for (@val) { + s/\*//g; + push @t, "\$r->[$fref->[2]]=~/$_/i"; + } + $s .= "(" . join(' || ', @t) . ")"; } else { confess("invalid letter $fref->[1]"); } @@ -588,6 +587,14 @@ sub it } } +sub print +{ + my $self = shift; + my $call = shift; + my $sort = shift; + my $flag = shift || ""; + return "$call: Old Style Filter $flag $sort"; +} 1; __END__