X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;ds=sidebyside;f=scripts%2Fprocess;h=5687bf3915e522d90736f9b55c8944c7933cfad6;hb=812f9b738effba6bdab70d527dae804192d1b2e8;hp=0dbb3b2777de6f21888cc93e1d1a12876f02e7d3;hpb=ada2d48936ad4eebf5d62b8723993f14008751b5;p=debbugs.git diff --git a/scripts/process b/scripts/process index 0dbb3b2..5687bf3 100755 --- a/scripts/process +++ b/scripts/process @@ -16,8 +16,8 @@ use Debbugs::MIME qw(decode_rfc1522 create_mime_message getmailbody); use Debbugs::Mail qw(send_mail_message encode_headers get_addresses); use Debbugs::Packages qw(getpkgsrc binary_to_source); use Debbugs::User qw(read_usertags write_usertags); -use Debbugs::Common qw(:lock get_hashname package_maintainer); -use Debbugs::Status qw(writebug isstrongseverity lockreadbugmerge lockreadbug read_bug splitpackages :versions); +use Debbugs::Common qw(:lock get_hashname package_maintainer overwritefile); +use Debbugs::Status qw(writebug isstrongseverity lockreadbugmerge lockreadbug new_bug read_bug splitpackages :versions); use Debbugs::CGI qw(html_escape bug_url); @@ -28,6 +28,7 @@ use Debbugs::Text qw(:templates); use Debbugs::Config qw(:globals :config); use Debbugs::Control qw(append_action_to_log); +use Encode qw(encode_utf8); chdir( "$gSpoolDir" ) || die "chdir spool: $!\n"; @@ -591,14 +592,9 @@ if ($ref<0) { # new bug report if (defined($pheader{forwarded})) { $data->{forwarded} = $pheader{forwarded}; } - &filelock("nextnumber.lock"); - open(N,"nextnumber") || die "nextnumber: read: $!"; - my $nextnumber=; $nextnumber =~ s/\n$// || die "nextnumber bad format"; - $ref= $nextnumber+0; $nextnumber += 1; $newref=1; - &overwrite('nextnumber', "$nextnumber\n"); - &unfilelock; + $ref = new_bug(); + $newref = $ref; my $hash = get_hashname($ref); - &overwrite("db-h/$hash/$ref.log",''); $data->{originator} = $replyto; $data->{date} = $intdate; $data->{subject} = $subject; @@ -632,8 +628,8 @@ if ($ref<0) { # new bug report ); } } - &overwrite("db-h/$hash/$ref.report", - join("\n",@msg)."\n"); + overwritefile("db-h/$hash/$ref.report", + map {"$_\n"} @msg); } &checkmaintainers; @@ -730,7 +726,7 @@ my $common_headers=''; } if ($codeletter eq 'U') { # sent to -submitter &htmllog("Message", "sent on", $data->{originator}, "$gBug#$ref."); - &sendmessage(<{originator},@resentccs],[@bccs]); + my $enc_msg=<{originator} @@ -740,8 +736,11 @@ Resent-Sender: $gMaintainerEmail X-$gProject-PR-Message: report $ref X-$gProject-PR-Package: $data->{package} X-$gProject-PR-Keywords: $data->{keywords} -${source_pr_header}$fwd +${source_pr_header} END + chomp $enc_msg; + $enc_msg = encode_utf8($enc_msg).$fwd."\n"; + &sendmessage($enc_msg,[$data->{originator},@resentccs],[@bccs]); } elsif ($codeletter eq 'B') { # Sent to submit my $report_followup = $newref ? 'report' : 'followup'; &htmllog($newref ? "Report" : "Information", "forwarded", @@ -749,7 +748,7 @@ END "$gBug#$ref". (length($data->{package})? "; Package ".html_escape($data->{package})."" : ''). "."); - &sendmessage(<{package} X-$gProject-PR-Keywords: $data->{keywords} -${source_pr_header}$fwd +${source_pr_header} END + chomp $enc_msg; + $enc_msg = encode_utf8($enc_msg).$fwd."\n"; + &sendmessage($enc_msg,["$gSubmitList\@$gListDomain",@resentccs],[@bccs]); } elsif (@resentccs or @bccs) { # Quiet or Maintainer # D and F done far earlier; B just done - so this must be M or Q # We preserve whichever it was in the Reply-To (possibly adding @@ -780,7 +782,7 @@ END (length($data->{package}) ? "; Package ".html_escape($data->{package})."" : ''). "."); } - &sendmessage(<{package} X-$gProject-PR-Keywords: $data->{keywords} -${source_pr_header}$fwd +${source_pr_header} END + chomp $enc_msg; + $enc_msg = encode_utf8($enc_msg).$fwd."\n"; + &sendmessage($enc_msg,[@resentccs],[@bccs]); } my $htmlbreak= length($brokenness) ? "

\n".html_escape($brokenness)."\n

\n" : ''; @@ -901,14 +906,6 @@ if (not exists $header{'x-debbugs-no-ack'} and &appendlog; &finish; -sub overwrite { - my ($f,$v) = @_; - open(NEW,">$f.new") || die "$f.new: create: $!"; - print(NEW "$v") || die "$f.new: write: $!"; - close(NEW) || die "$f.new: close: $!"; - rename("$f.new","$f") || die "rename $f.new to $f: $!"; -} - sub appendlog { my $hash = get_hashname($ref); if (!open(AP,">>db-h/$hash/$ref.log")) { @@ -999,7 +996,7 @@ sub sendmessage { my $hash = get_hashname($ref); #save email to the log - my $logfh = IO::File->new("db-h/${hash}/${ref}.log",'w') or + my $logfh = IO::File->new(">>db-h/${hash}/${ref}.log") or die "opening db-h/$hash/${ref}.log: $!"; write_log_records(logfh => $logfh, records => {text => stripbccs($msg),