X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Debbugs%2FStatus.pm;h=9416a31ba3ce9e26adc6f0ef2cdbccf376c6d5c5;hb=fbf96e721f2ccf58041ccfe687ab2f1c9b7af4b0;hp=e880783ca87493680b3c751e32cd06df7cf54526;hpb=d61a76fc5e1b52929a02705c07ac03936fd14244;p=debbugs.git diff --git a/Debbugs/Status.pm b/Debbugs/Status.pm index e880783..9416a31 100644 --- a/Debbugs/Status.pm +++ b/Debbugs/Status.pm @@ -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; @@ -239,30 +241,7 @@ sub read_bug{ } my %namemap = reverse %fields; - for my $field (keys %fields) { - $data{$field} = '' unless exists $data{$field}; - } - if ($version < 3) { - for my $field (@rfc1522_fields) { - $data{$field} = decode_rfc1522($data{$field}); - } - } for my $line (@lines) { - my @encodings_to_try = qw(utf8 iso8859-1); - if ($version >= 3) { - @encodings_to_try = qw(utf8); - } - for (@encodings_to_try) { - last if is_utf8($line); - 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 @@ -272,6 +251,14 @@ sub read_bug{ $data{$namemap{$name}} = $value if exists $namemap{$name}; } } + for my $field (keys %fields) { + $data{$field} = '' unless exists $data{$field}; + } + if ($version < 3) { + for my $field (@rfc1522_fields) { + $data{$field} = decode_rfc1522($data{$field}); + } + } $data{severity} = $config{default_severity} if $data{severity} eq ''; for my $field (qw(found_versions fixed_versions found_date fixed_date)) { $data{$field} = [split ' ', $data{$field}];