]> git.donarmstrong.com Git - debbugs.git/blobdiff - Debbugs/Estraier.pm
Drop more unused variables
[debbugs.git] / Debbugs / Estraier.pm
index a079a20c9de0019831aaa087ace12171e019ec71..174ad4c6493306dd2e5f2b5acb11157ec27cf9f8 100644 (file)
@@ -1,3 +1,9 @@
+# This module is part of debbugs, and is released
+# under the terms of the GPL version 2, or any later
+# version at your option.
+# See the file README and COPYING for more information.
+#
+# Copyright 2007 by Don Armstrong <don@donarmstrong.com>.
 
 package Debbugs::Estraier;
 
@@ -22,13 +28,13 @@ None known.
 use warnings;
 use strict;
 use vars qw($VERSION $DEBUG %EXPORT_TAGS @EXPORT_OK @EXPORT);
-use base qw(Exporter);
+use Exporter qw(import);
 use Debbugs::Log;
-#use Params::Validate;
 use Search::Estraier;
-use Date::Manip;
-use Debbugs::Common qw(getbuglocation getbugcomponent);
+use Debbugs::Common qw(getbuglocation getbugcomponent make_list);
 use Debbugs::Status qw(readbug);
+use Debbugs::MIME qw(parse);
+use Encode qw(encode_utf8);
 
 BEGIN{
      ($VERSION) = q$Revision: 1.3 $ =~ /^Revision:\s+([^\s+])/;
@@ -69,7 +75,7 @@ sub add_bug_log{
          my ($msg_id) = $record->{text} =~ /^Message-Id:\s+<(.+)>/im;
          next if defined $msg_id and exists $seen_msg_ids{$msg_id};
          $seen_msg_ids{$msg_id} = 1 if defined $msg_id;
-         next if $msg_id =~ /handler\..+\.ack(?:info)?\@/;
+         next if defined $msg_id and $msg_id =~ /handler\..+\.ack(?:info)?\@/;
          add_bug_message($est,$record->{text},$bug_num,$msg_num,$status)
      }
      return $msg_num;
@@ -89,7 +95,6 @@ sub remove_old_messages{
      my $cond = new Search::Estraier::Condition;
      $cond->add_attr('@uri STRBW '.$bug_num.'/');
      $cond->set_max(50);
-     my $skip;
      my $nres;
      while ($nres = $est->search($cond,0) and $nres->doc_num > 0){
          for my $rdoc (map {$nres->get_doc($_)} 0..($nres->doc_num-1)) {
@@ -112,7 +117,9 @@ sub add_bug_message{
      my $uri = "$bug_num/$msg_num";
      $doc = $est->get_doc_by_uri($uri);
      $doc = new Search::Estraier::Document if not defined $doc;
-     $doc->add_text($bug_message);
+
+     my $message = parse($bug_message);
+     $doc->add_text(encode_utf8(join("\n",make_list(values %{$message}))));
 
      # * @id : the ID number determined automatically when the document is registered.
      # * @uri : the location of a document which any document should have.
@@ -131,17 +138,17 @@ sub add_bug_message{
      my @attr = qw(status subject date submitter package tags severity);
      # parse the date
      my ($date) = $bug_message =~ /^Date:\s+(.+?)\s*$/mi;
-     $doc->add_attr('@cdate' => $date);
+     $doc->add_attr('@cdate' => encode_utf8($date)) if defined $date;
      # parse the title
      my ($subject) = $bug_message =~ /^Subject:\s+(.+?)\s*$/mi;
-     $doc->add_attr('@title' => $subject);
+     $doc->add_attr('@title' => encode_utf8($subject)) if defined $subject;
      # parse the author
      my ($author) = $bug_message =~ /^From:\s+(.+?)\s*$/mi;
-     $doc->add_attr('@author' => $author);
+     $doc->add_attr('@author' => encode_utf8($author)) if defined $author;
      # create the uri
-     $doc->add_attr('@uri' => $uri);
+     $doc->add_attr('@uri' => encode_utf8($uri));
      foreach my $attr (@attr) {
-         $doc->add_attr($attr => $status->{$attr});
+         $doc->add_attr($attr => encode_utf8($status->{$attr})) if defined $status->{$attr};
      }
      print STDERR "adding $uri\n" if $DEBUG;
      # Try a bit harder if estraier is returning timeouts