From 60dabeb43ee1c0c5a94a38ac1470553130f2ee6c Mon Sep 17 00:00:00 2001
From: cjwatson <>
Date: Tue, 26 Nov 2002 04:21:06 -0800
Subject: [PATCH] [project @ 2002-11-26 04:21:06 by cjwatson] Add a 'submitter'
 command to service, based on a patch by Matt Kraai.

---
 debian/changelog            |  2 ++
 html/server-control.html.in | 20 ++++++++++++---
 html/server-refcard.html.in |  2 ++
 scripts/service.in          | 50 ++++++++++++++++++++++++++++++++++++-
 4 files changed, 69 insertions(+), 5 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index 49b5bbb9..5b76bbcb 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -7,6 +7,8 @@ debbugs (2.4.1) UNRELEASED; urgency=low
   * Add a man page for debbugsconfig. [Colin]
   * Report original tags when changing them, closes: #170630. [Colin]
   * Add missing <ul></ul> tags to db2html's output, closes: #50746. [Colin]
+  * Add a 'submitter' command to service, based on a patch by Matt Kraai.
+    [Colin]
 
  -- Colin Watson <cjwatson@debian.org>  Mon, 25 Nov 2002 03:50:20 +0000
 
diff --git a/html/server-control.html.in b/html/server-control.html.in
index 64a4bb69..0fa02dd7 100644
--- a/html/server-control.html.in
+++ b/html/server-control.html.in
@@ -64,10 +64,22 @@ mailservers is available via the WWW, in
   again.
 
   <p>If the $gBug is not closed then reopen won't do anything, not even
-  change the originator.  There is no way to change the originator of an
-  open $gBug report (this is deliberate, so that you can't have a $gBug be
-  closed and then deleted $gRemoveAge days later without someone being told about
-  it).
+  change the originator.  To change the originator of an open $gBug report,
+  use the <code>submitter</code> command; note that this will inform the
+  original submitter of the change.
+
+<dt><code>submitter</code> <var>bugnumber</var>
+<var>originator-address</var> | <code>!</code>
+
+  <dd>Changes the originator of #<var>bugnumber</var> to
+  <var>originator-address</var>.
+
+  <p>If you wish to become the new originator of the report you can use
+  the <code>!</code> shorthand or specify your own email address.</p>
+
+  <p>While the <code>reopen</code> command changes the originator of other
+  bugs merged with the one being reopened, <code>submitter</code> does not
+  affect merged bugs.</p>
 
 <dt><code>forwarded</code> <var>bugnumber</var> <var>address</var>
 
diff --git a/html/server-refcard.html.in b/html/server-refcard.html.in
index 4cb3e4eb..776af95f 100644
--- a/html/server-refcard.html.in
+++ b/html/server-refcard.html.in
@@ -60,6 +60,8 @@ sending the word <code>help</code> to each mailserver.
   <li><code>severity</code> <var>bugnumber</var> <var>severity</var>
   <li><code>reopen</code> <var>bugnumber</var>
       [ <var>originator-address</var> | <code>=</code> | <code>!</code> ]
+  <li><code>submitter</code> <var>bugnumber</var>
+      <var>originator-address</var> | <code>!</code>
   <li><code>forwarded</code> <var>bugnumber</var> <var>address</var>
   <li><code>notforwarded</code> <var>bugnumber</var>
   <li><code>retitle</code> <var>bugnumber</var> <var>new-title</var>
diff --git a/scripts/service.in b/scripts/service.in
index aab9a90d..ccb16ac6 100755
--- a/scripts/service.in
+++ b/scripts/service.in
@@ -1,5 +1,5 @@
 #!/usr/bin/perl
-# $Id: service.in,v 1.63 2002/11/25 12:44:19 cjwatson Exp $
+# $Id: service.in,v 1.64 2002/11/26 04:21:06 cjwatson Exp $
 # ^ more or less ^
 #
 # Usage: service <code>.nn
@@ -324,6 +324,54 @@ END
                 } while (&getnextbug);
             }
         }
+    } elsif (m/^submitter\s+\#?(-?\d+)\s+\!$/i ? ($newsubmitter=$replyto, 1) :
+             m/^submitter\s+\#?(-?\d+)\s+(\S.*\S)$/i ? ($newsubmitter=$2, 1) : 0) {
+        $ok++;
+        $ref= $1;
+        if ($ref =~ m/^-\d+$/ && defined $clonebugs{$ref}) {
+            $ref = $clonebugs{$ref};
+        }
+        if (&getbug) {
+            &foundbug;
+            &addmaintainers($s_package);
+            $oldsubmitter= $s_originator;
+            $s_originator= $newsubmitter;
+            $action= "Changed $gBug submitter.";
+            &savebug;
+            &transcript("$action\n");
+            if (length($s_done)) {
+                &transcript("(By the way, that $gBug is currently marked as done.)\n");
+            }
+            &transcript("\n");
+            $message= <<END;
+From: $gMaintainerEmail ($gProject $gBug Tracking System)
+To: $oldsubmitter
+Subject: $gBug#$ref submitter address changed
+         ($header{'subject'})
+References: $header{'message-id'} $s_msgid
+In-Reply-To: $s_msgid
+Message-ID: <handler.$ref.$nn.newsubmitter.$midix\@$gEmailDomain>
+Reply-To: $ref\@$gEmailDomain
+
+The submitter address recorded for your $gBug report
+#$ref: $s_subject
+has been changed.
+
+The new submitter address for this report is
+$newsubmitter.
+
+This change was made by
+$replyto.
+If it was incorrect, please contact them directly.
+
+$gMaintainer
+(administrator, $gProject $gBugs database)
+
+END
+            &sendmailmessage($message,$oldsubmitter);
+        } else {
+            &notfoundbug;
+        }
     } elsif (m/^forwarded\s+\#?(-?\d+)\s+(\S.*\S)$/i) {
         $ok++;
         $ref= $1; $whereto= $2;
-- 
2.39.5