--- trunk/MWS.pm 2004/05/06 23:06:08 16 +++ trunk/MWS.pm 2004/05/07 11:25:01 17 @@ -47,6 +47,7 @@ $self->{folder} = {}; $self->{wrap_margin} = $self->{config}->val('global', 'wrap_margin'); + $self->{max_results} = $self->{config}->val('global', 'max_results') || 100; return $self; } @@ -106,8 +107,13 @@ print STDERR "close_folder($mbox) forced on ",$self->{fetch_count},"iteration\n"; } - return $self->open_folder($mbox)->find($id) || + my $msg = $self->open_folder($mbox)->find($id); + if ($msg) { + return $msg; + } else { print STDERR "can't find message $id in $mbox. Time to re-index?\n"; + return; + } } @@ -121,8 +127,10 @@ $self->{'index_ids'} = \@index_ids; - my $results = $#index_ids + 1; - $self->{'results'} = $results; + #my $results = $#index_ids + 1; + #$self->{'results'} = $results; + + my $results = $self->{'total_hits'} || ($#index_ids + 1); $self->{'curr_result'} = 0; @@ -143,10 +151,11 @@ $qp =~ s/=([a-f0-9][a-f0-9])/chr(hex($1))/ieg; $qp =~ s/_/ /g; print STDERR "$qp\n" if ($debug == 2); - return $iconv->convert($qp); + return $iconv->convert($qp) || $qp; } - $tmp =~ s/=\?([^\?]+)\?Q\?(.+)\?=/decode($1,$2)/ex; + $tmp =~ s/=\?([^\?]+)\?Q\?(.+?)\?=/decode($1,$2)/ex; + $tmp =~ s/^\s*["']+(.*?)["']+\s*$/$1/g; return $tmp; } @@ -157,11 +166,12 @@ my @arr; + return if (! $message->$part); + foreach my $from ($message->$part) { my $tmp = $from->$sub || next; $tmp = $self->decode_qp($tmp); - $tmp =~ s/^\s*["'](.*)["']\s*$/$1/; push @arr, $tmp; } @@ -240,7 +250,7 @@ print STDERR "fetch_result_by_id($id) not in cache, hitting disk\n" if ($debug == 2); - my $message = $self->fetch_message($id) || print STDERR "can't fetch message '$id'"; + my $message = $self->fetch_message($id) || return; $row->{'id'} = $id; @{$row->{'from'}} = $self->unroll($message,'from','phrase');