X-Git-Url: https://git.donarmstrong.com/?p=debbugs.git;a=blobdiff_plain;f=Debbugs%2FControl.pm;h=416abc150104741bff85625bb03353ab0930a3dd;hp=95876245ba215b59ffe4e37682af88bf0e2db0c2;hb=4118f90e5b711616eeff28aef36615b0a892b57f;hpb=04265c83beff7e1ccb28a88ff7257fe36b2fc45d diff --git a/Debbugs/Control.pm b/Debbugs/Control.pm index 9587624..416abc1 100644 --- a/Debbugs/Control.pm +++ b/Debbugs/Control.pm @@ -75,7 +75,7 @@ is true, the above options must be present, and their values are used. use warnings; use strict; use vars qw($VERSION $DEBUG %EXPORT_TAGS @EXPORT_OK @EXPORT); -use base qw(Exporter); +use Exporter qw(import); BEGIN{ $VERSION = 1.00; @@ -126,7 +126,7 @@ use IO::File; use Debbugs::Text qw(:templates); -use Debbugs::Mail qw(rfc822_date send_mail_message default_headers); +use Debbugs::Mail qw(rfc822_date send_mail_message default_headers encode_headers); use Debbugs::MIME qw(create_mime_message); use Mail::RFC822::Address qw(); @@ -1116,7 +1116,7 @@ sub set_submitter { } else { if (defined $data->{originator} and length($data->{originator})) { - $action= "Changed $config{bug} submitter to '$param{submitter}' from '$data->{originator}'"; + $action= "Changed $config{bug} submitter to '$param{submitter}' from '$data->{originator}'."; $notify_old_submitter = 1; } else { @@ -1231,7 +1231,7 @@ sub set_forwarded { $action= "Unset $config{bug} forwarded-to-address"; } elsif (defined $data->{forwarded} and length($data->{forwarded})) { - $action= "Changed $config{bug} forwarded-to-address to '$param{forwarded}' from '$data->{forwarded}'"; + $action= "Changed $config{bug} forwarded-to-address to '$param{forwarded}' from '$data->{forwarded}'."; } else { $action= "Set $config{bug} forwarded-to-address to '$param{forwarded}'."; @@ -1316,7 +1316,7 @@ sub set_title { } else { if (defined $data->{subject} and length($data->{subject})) { - $action= "Changed $config{bug} title to '$param{title}' from '$data->{subject}'"; + $action= "Changed $config{bug} title to '$param{title}' from '$data->{subject}'."; } else { $action= "Set $config{bug} title to '$param{title}'."; } @@ -2663,7 +2663,7 @@ Handles all setting of summary fields If summary is undef, unsets the summary -If summary is 0, sets the summary to the first paragraph contained in +If summary is 0 or -1, sets the summary to the first paragraph contained in the message passed. If summary is a positive integer, sets the summary to the message specified. @@ -2748,10 +2748,10 @@ sub _summary { print {$debug} "Removing $cmd fields\n"; $action = "Removed $cmd"; } - elsif ($param{$cmd} =~ /^\d+$/) { + elsif ($param{$cmd} =~ /^-?\d+$/) { my $log = []; my @records = Debbugs::Log::read_log_records(bug_num => $param{bug}); - if ($param{$cmd} == 0) { + if ($param{$cmd} == 0 or $param{$cmd} == -1) { $log = $param{message}; $summary_msg = @records + 1; } @@ -2785,7 +2785,7 @@ sub _summary { } # skip a paragraph if it looks like it's control or # pseudo-headers - if ($line =~ m{^\s*(?:Package|Source|Version|User|Tag|Severity)\:\s+\S}xi or #pseudo headers + if ($line =~ m{^\s*(?:Package|Source|Version|User|Tag|Severity|Control)\:\s+\S}xi or #pseudo headers $line =~ m{^(?:package:?|(?:no|)owner|severity|tags?|summary| #control \#|reopen|close|(?:not|)(?:fixed|found)|clone| debug|(?:not|)forwarded|priority| @@ -2963,19 +2963,19 @@ sub clone_bug { # bugs that this bug is blocking are also blocked by the new clone(s) for my $bug (split ' ', $data->{blocks}) { for my $new_bug (@new_bugs) { - set_blocks(bug => $new_bug, - block => $bug, + set_blocks(bug => $bug, + block => $new_bug, hash_slice(%param, keys %common_options, keys %append_action_options), ); } } - # bugs that this bug is blocked by are also blocking the new clone(s) + # bugs that are blocking this bug are also blocking the new clone(s) for my $bug (split ' ', $data->{blockedby}) { for my $new_bug (@new_bugs) { - set_blocks(bug => $bug, - block => $new_bug, + set_blocks(bug => $new_bug, + block => $bug, hash_slice(%param, keys %common_options, keys %append_action_options), @@ -3467,7 +3467,7 @@ sub append_action_to_log{ $msg = ''; if ((ref($param{message}) and @{$param{message}}) or length($param{message})) { push @records, {type => exists $param{recips}?'recips':'incoming-recv', - exists $param{recips}?(recips => [make_list($param{recips})]):(), + exists $param{recips}?(recips => [map {encode_utf8_safely($_)} make_list($param{recips})]):(), text => join('',make_list($param{message})), }; } @@ -3591,13 +3591,14 @@ sub __return_append_to_log_options{ } if (not exists $param{message}) { my $date = rfc822_date(); - $param{message} = fill_in_template(template => 'mail/fake_control_message', - variables => {request_addr => $param{request_addr}, - requester => $param{requester}, - date => $date, - action => $action - }, - ); + $param{message} = + encode_headers(fill_in_template(template => 'mail/fake_control_message', + variables => {request_addr => $param{request_addr}, + requester => $param{requester}, + date => $date, + action => $action + }, + )); } if (not defined $action) { carp "Undefined action!";