]> git.donarmstrong.com Git - debbugs.git/blobdiff - Debbugs/Status.pm
Add support for outlook in control
[debbugs.git] / Debbugs / Status.pm
index 5b23bcc7a1ffc4bdf3e2248612eaf8486f5510be..9416a31ba3ce9e26adc6f0ef2cdbccf376c6d5c5 100644 (file)
@@ -37,7 +37,7 @@ use vars qw($VERSION $DEBUG %EXPORT_TAGS @EXPORT_OK @EXPORT);
 use base qw(Exporter);
 
 use Params::Validate qw(validate_with :types);
-use Debbugs::Common qw(:util :lock :quit :misc);
+use Debbugs::Common qw(:util :lock :quit :misc :utf8);
 use Debbugs::Config qw(:config);
 use Debbugs::MIME qw(decode_rfc1522 encode_rfc1522);
 use Debbugs::Packages qw(makesourceversions make_source_versions getversions get_versions binary_to_source);
@@ -45,7 +45,7 @@ use Debbugs::Versions;
 use Debbugs::Versions::Dpkg;
 use POSIX qw(ceil);
 use File::Copy qw(copy);
-use Encode qw(decode encode);
+use Encode qw(decode encode is_utf8);
 
 use Storable qw(dclone);
 use List::Util qw(min max);
@@ -108,6 +108,7 @@ our %fields = (originator     => 'submitter',
               blockedby      => 'blocked-by',
              unarchived     => 'unarchived',
              summary        => 'summary',
+             outlook        => 'outlook',
              affects        => 'affects',
              );
 
@@ -217,6 +218,7 @@ sub read_bug{
        }
        return undef;
     }
+    binmode($status_fh,':encoding(UTF-8)');
 
     my %data;
     my @lines;
@@ -240,20 +242,6 @@ sub read_bug{
 
     my %namemap = reverse %fields;
     for my $line (@lines) {
-       my @encodings_to_try = qw(utf8 iso8859-1);
-       if ($version >= 3) {
-           @encodings_to_try = qw(utf8);
-       }
-       for (@encodings_to_try) {
-           my $temp;
-           eval {
-               $temp = decode("$_",$line,Encode::FB_CROAK);
-           };
-           if (not $@) { # only update the line if there are no errors.
-               $line = $temp;
-               last;
-           }
-       }
         if ($line =~ /(\S+?): (.*)/) {
             my ($name, $value) = (lc $1, $2);
            # this is a bit of a hack; we should never, ever have \r
@@ -264,7 +252,7 @@ sub read_bug{
         }
     }
     for my $field (keys %fields) {
-        $data{$field} = '' unless exists $data{$field};
+       $data{$field} = '' unless exists $data{$field};
     }
     if ($version < 3) {
        for my $field (@rfc1522_fields) {
@@ -619,6 +607,8 @@ sub makestatus {
     }
     %newdata = %{join_status_fields(\%newdata)};
 
+    %newdata = encode_utf8_structure(%newdata);
+
     if ($version < 3) {
         for my $field (@rfc1522_fields) {
             $newdata{$field} = encode_rfc1522($newdata{$field});
@@ -655,11 +645,6 @@ sub makestatus {
             }
         }
     }
-    if ($version >= 3) {
-       eval {
-           $contents = encode_utf8($contents,Encode::FB_CROAK);
-       };
-    }
     return $contents;
 }
 
@@ -686,7 +671,7 @@ sub writebug {
         die "can't find location for $ref" unless defined $status;
        my $sfh;
        if ($version >= 3) {
-           open $sfh,">:utf8","$status.new"  or
+           open $sfh,">","$status.new"  or
                die "opening $status.new: $!";
        }
        else {