Changeset 193

Show
Ignore:
Timestamp:
01/05/06 22:49:37 (5 years ago)
Author:
usu
Message:

MMagic.pm (checktype_data): performance improve.

Location:
MMagic/trunk
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • MMagic/trunk/ChangeLog

    r190 r193  
     12006-01-05  Yukio USUDA  <usu@namazu.org> 
     2 
     3        * MMagic.pm (checktype_data): performance improve. 
     4          http://www.namazu.org/trac-namazu/trac.cgi/ticket/8 
     5 
    162005-08-27  NOKUBI Takatsugu  <knok@daionet.gr.jp> 
    27 
  • MMagic/trunk/MMagic.pm

    r190 r193  
    679679        # in BSD's version, there's an effort to search from 
    680680        # more specific to less, but I don't do that. 
    681         my ($token, %val); 
     681        my %val; 
    682682        foreach my $type (keys %{$self->{SPECIALS}}) { 
    683             my $token = '(' .  
    684               (join '|', sort {length($a) <=> length($b)} @{$self->{SPECIALS}->{$type}}) 
    685                 . ')'; 
    686             my $tdata = $data; 
    687             if ($tdata =~ /$token/mg) { 
    688                 $val{$type} = pos($tdata); 
     683            my $matched_pos = undef; 
     684            foreach my $token (@{$self->{SPECIALS}->{$type}}){  
     685                pos($data) = 0; 
     686                if ($data =~ /$token/mg) { 
     687                    my $tmp =  pos($data); 
     688                    if ((! defined $matched_pos) || ($matched_pos > $tmp)) { 
     689                        $matched_pos = $tmp; 
     690                    } 
     691                } 
    689692            } 
    690         } 
    691  
     693            $val{$type} = $matched_pos if $matched_pos; 
     694        } 
    692695        # search latest match 
    693696        if (%val) { 
     
    696699        } 
    697700         
    698       ALLDONE: 
    699701#       $mtype = 'text/plain' if (! defined $mtype); 
    700702    }