]> git.donarmstrong.com Git - debbugs.git/blobdiff - scripts/process
* Use a hash to select the proper message
[debbugs.git] / scripts / process
index 0dbb3b2777de6f21888cc93e1d1a12876f02e7d3..e40752cc64d9670da654529de72940e462805ea7 100755 (executable)
@@ -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);
 
@@ -49,16 +49,24 @@ if (!rename("incoming/G$nn","incoming/P$nn"))
     die "renaming to lock: $!";
 }
 
-my $baddress= 'submit' if $codeletter eq 'B';
-$baddress= 'maintonly' if $codeletter eq 'M';
-$baddress= 'quiet' if $codeletter eq 'Q';
-$baddress= 'forwarded' if $codeletter eq 'F';
-$baddress= 'done' if $codeletter eq 'D';
-$baddress= 'submitter' if $codeletter eq 'U';
-bug_list_forward($nn) if $codeletter eq 'L';
-$baddress || die "bad codeletter $codeletter";
+my %baddress = (B => 'submit',
+               M => 'maintonly',
+               Q => 'quiet',
+               F => 'forwarded',
+               D => 'done',
+               S => 'submitter',
+               L => 'list',
+              );
+if (not exists $baddress{$codeletter}) {
+    die "bad codeletter $codeletter";
+}
+my $baddress = $baddress{$codeletter};
+if ($baddress eq 'list') {
+    bug_list_forward($nn) if $codeletter eq 'L';
+}
+
 my $baddressroot= $baddress;
-$baddress= "$tryref-$baddress" if $tryref>=0;
+$baddress= "$tryref-$baddress" if $tryref >= 0;
 
 open(M,"incoming/P$nn");
 my @log=<M>;
@@ -94,7 +102,7 @@ our $newref = 0;
 
 our $brokenness = '';
 
-my $parser = new MIME::Parser;
+my $parser = MIME::Parser->new();
 mkdir "$gSpoolDir/mime.tmp", 0777;
 $parser->output_under("$gSpoolDir/mime.tmp");
 my $entity = eval { $parser->parse_data(join('',@log)) };
@@ -591,14 +599,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=<N>; $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 +635,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;
@@ -901,14 +904,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 +994,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),