$gControlHtml = <<HTML_END
-<html><head>
-<html><head>
-<title>$gProject $gBug system - control mail server commands</title>
-<link rev="made" href="mailto:$gMaintainerEmail">
-</head><body>
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+ <title>$gProject $gBug system - control mail server commands</title>
+ <link rev="made" href="mailto:$gMaintainerEmail">
+ <link rel="stylesheet" href="$gWebHostBugDir/css/bugs.css" type="text/css">
+</head>
+<body>
+
<h1>Introduction to the $gBug control and manipulation mailserver</h1>
-In addition to the mailserver on <code>request\@$gEmailDomain</code>
+<p>In addition to the mailserver on <code>request\@$gEmailDomain</code>
which allows the retrieval of $gBug data and documentation by email,
there is another server on <code>control\@$gEmailDomain</code> which
-also allows $gBug reports to be manipulated in various ways.
-<p>
+also allows $gBug reports to be manipulated in various ways.</p>
-The control server works just like the request server, except that it
+<p>The control server works just like the request server, except that it
has some additional commands; in fact, it's the same program. The two
addresses are only separated to avoid users making mistakes and
-causing problems while merely trying to request information.
-<p>
-
-Please see the
-<A href="server-request.html#introduction">introduction to
-the request server</A>
-available on the World Wide Web, in the file
-<code>bug-maint-mailcontrol.txt</code>, or by sending
+causing problems while merely trying to request information.</p>
+
+<p>Please see the
+<a href="server-request.html#introduction">introduction to the request
+server</a> available on the World Wide Web, in the file
+<code>bug-log-mailserver.txt</code>, or by sending
<code>help</code> to either mailserver, for details of the basics of
operating the mailservers and the common commands available when
-mailing either address.
-<p>
+mailing either address.</p>
-The <A href="server-refcard.html">reference card</A> for the
+<p>The <a href="server-refcard.html">reference card</a> for the
mailservers is available via the WWW, in
<code>bug-mailserver-refcard.txt</code> or by email using the
-<code>refcard</code> command).
+<code>refcard</code> command.</p>
-<h1>Commands available only at the control mailserver</h1>
+<h1>Commands available at the control mailserver</h1>
<dl>
-<dt><code>close</code> <var>bugnumber</var>
-<dd>
-
-Close $gBug report #<var>bugnumber</var>.
-<p>
-
-A notification is sent to the user who reported the $gBug, but (in
-contrast to mailing <var>bugnumber</var><code>-done@$gEmailDomain</code>) the
-text of the mail which caused the $gBug to be closed is <em>not</em>
-included in that notification. The maintainer who closes a report
-should ensure, probably by sending a separate message, that the user
-who reported the $gBug knows why it is being closed.
-
<dt><code>reassign</code> <var>bugnumber</var> <var>package</var>
-<dd>
+ [ <var>version</var> ]
-Records that $gBug #<var>$gBugnumber</var> is a $gBug in <var>package</var>.
-This can be used to set the package if the user forgot the
-pseudo-header, or to change an earlier assignment. No notifications
-are sent to anyone (other than the usual information in the processing
-transcript).
+ <dd>Records that $gBug #<var>${gBug}number</var> is a $gBug in <var>package</var>.
+ This can be used to set the package if the user forgot the
+ pseudo-header, or to change an earlier assignment. No notifications
+ are sent to anyone (other than the usual information in the processing
+ transcript).
+
+ <p>If you supply a <var>version</var>, the $gBug tracking system will note
+ that the $gBug affects that version of the newly-assigned package.
<dt><code>reopen</code> <var>bugnumber</var>
[ <var>originator-address</var> | <code>=</code> | <code>!</code> ]
-<dd>
-
-Reopens #<var>bugnumber</var> if it is closed.
-<p>
-
-By default, or if you specify <code>=</code>, the original submitter is
-still as the originator of the report, so that they will get the ack
-when it is closed again.
-<p>
-
-If you supply an <var>originator-address</var> the originator will be
-set to the address you supply. If you wish to become the new
-originator of the reopened report you can use the <code>!</code>
-shorthand or specify your own email address.
-<p>
-
-It is usually a good idea to tell the person who is about to be
-recorded as the originator that you're reopening the report, so that
-they will know to expect the ack which they'll get when it is closed
-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).
+
+ <dd>Reopens #<var>bugnumber</var> if it is closed.
+
+ <p>By default, or if you specify <code>=</code>, the original submitter is
+ still as the originator of the report, so that they will get the ack
+ when it is closed again.
+
+ <p>If you supply an <var>originator-address</var> the originator will be
+ set to the address you supply. If you wish to become the new
+ originator of the reopened report you can use the <code>!</code>
+ shorthand or specify your own email address.
+
+ <p>It is usually a good idea to tell the person who is about to be
+ recorded as the originator that you're reopening the report, so that
+ they will know to expect the ack which they'll get when it is closed
+ again.
+
+ <p>If the $gBug is not closed then reopen won't do anything, not even
+ 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.
+
+ <p>If the $gBug was recorded as being closed in a particular version of a
+ package but recurred in a later version, it is better to use the
+ <code>found</code> command instead.
+
+<dt><code>found</code> <var>bugnumber</var> [ <var>version</var> ]
+
+ <dd>Record that #<var>bugnumber</var> has been encountered in the given
+ <var>version</var> of the package to which it is assigned.
+
+ <p>The $gBug tracking system uses this information, in conjunction with
+ fixed versions recorded when closing $gBugs, to display lists of $gBugs
+ open in various versions of each package. It considers a $gBug to be open
+ when it has no fixed version, or when it has been found more recently than
+ it has been fixed.
+
+ <p>If no <var>version</var> is given, then the list of fixed versions for
+ the $gBug is cleared. This is identical to the behaviour of
+ <code>reopen</code>.
+
+ <p>This command will only cause a bug to be marked as not done if no
+ version is specified, or if the <var>version</var> being marked found
+ is equal to the <var>version</var> which was last marked fixed. (If
+ you are certain that you want the bug marked as not done,
+ use <code>reopen</code> in conjunction with <code>found</code>.</p>
+
+ <p>This command was introduced in preference to <code>reopen</code>
+ because it was difficult to add a <var>version</var> to that command's
+ syntax without suffering ambiguity.
+
+<dt><code>notfound</code> <var>bugnumber</var> <var>version</var>
+
+ <dd>Remove the record that #<var>bugnumber</var> was encountered in the
+ given <var>version</var> of the package to which it is assigned.
+
+ <p>This differs from closing the $gBug at that version in that the $gBug
+ is not listed as fixed in that version either; no information about that
+ version will be known. It is intended for fixing mistakes in the record of
+ when a $gBug was found.
+
+<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>
-<dd>
-Notes that <var>bugnumber</var> has been forwarded to the upstream
-maintainer at <var>address</var>. This does not actually forward the
-report. This can be used to change an existing incorrect forwarded-to
-address, or to record a new one for a $gBug that wasn't previously noted
-as having been forwarded.
+ <dd>Notes that <var>bugnumber</var> has been forwarded to the upstream
+ maintainer at <var>address</var>. This does not actually forward the
+ report. This can be used to change an existing incorrect forwarded-to
+ address, or to record a new one for a $gBug that wasn't previously noted
+ as having been forwarded.
<dt><code>notforwarded</code> <var>bugnumber</var>
-<dd>
-Forgets any idea that <var>bugnumber</var> has been forwarded to any
-upstream maintainer. If the $gBug was not recorded as having been
-forwarded then this will do nothing.
+ <dd>Forgets any idea that <var>bugnumber</var> has been forwarded to any
+ upstream maintainer. If the $gBug was not recorded as having been
+ forwarded then this will do nothing.
<dt><code>retitle</code> <var>bugnumber</var> <var>new-title</var>
-<dd>
-Changes the title of a $gBug report to that specified (the default is
-the <code>Subject</code> mail header from the original report.
-<p>
+ <dd>Changes the title of a $gBug report to that specified (the default is
+ the <code>Subject</code> mail header from the original report).
-Unlike most of the other $gBug-manipulation commands when used on one of
-a set of merged reports this will change the title of only the
-individual $gBug requested, and not all those with which it is merged.
+ <p>Unlike most of the other $gBug-manipulation commands when used on one of
+ a set of merged reports this will change the title of only the
+ individual $gBug requested, and not all those with which it is merged.
<dt><code>severity</code> <var>bugnumber</var> <var>severity</var>
-<dd>
-Set the severity level for $gBug report #<var>bugnumber</var> to
-<var>severity</var>. No notification is sent to the user who reported
-the $gBug.
-<p>
-
-For <A href="Developer.html#severities">their meanings</A> please
-consult the general developers' documentation for the $gBug system.
+ <dd>Set the severity level for $gBug report #<var>bugnumber</var> to
+ <var>severity</var>. No notification is sent to the user who reported
+ the $gBug.
+
+ <p>For <a href="Developer.html#severities">their meanings</a> please
+ consult the general developers' documentation for the $gBug system.
+
+<dt><code>clone</code> <var>bugnumber</var> <var>NewID</var> [ <var>new IDs</var> ... ]
+
+ <dd>The clone control command allows you to duplicate a $gBug report. It is
+ useful in the case where a single report actually indicates that multiple
+ distinct $gBugs have occurred. "<var>New IDs</var>" are negative numbers,
+ separated by spaces, which may be used in subsequent control commands to
+ refer to the newly duplicated $gBugs. A new report is generated for each
+ new ID.
+
+ <p>Example usage:</p>
+
+ <pre>
+ clone 12345 -1 -2
+ reassign -1 foo
+ retitle -1 foo: foo sucks
+ reassign -2 bar
+ retitle -2 bar: bar sucks when used with foo
+ severity -2 wishlist
+ clone 123456 -3
+ reassign -3 foo
+ retitle -3 foo: foo sucks
+ merge -1 -3
+ </pre>
<dt><code>merge</code> <var>bugnumber</var> <var>bugnumber</var> ...
-<dd>
-
-Merges two or more $gBug reports. When reports are merged opening,
-closing, marking or unmarking as forwarded and reassigning any of the
-$gBugs to a new package will have an identical effect on all of the
-merged reports.
-<p>
-
-Before $gBugs can be merged they must be in exactly the same state:
-either all open or all closed, with the same forwarded-to upstream
-author address or all not marked as forwarded, and all assigned to the
-same package or package(s) (an exact string comparison is done on the
-package to which the $gBug is assigned). If they don't start out in the
-same state you should use <code>reassign</code>, <code>reopen</code>
-and so forth to make sure that they are before using
-<code>merge</code>.
-<p>
-
-If any of the $gBugs listed in a <code>merge</code> command is already
-merged with another $gBug then all the reports merged with any of the
-ones listed will all be merged together. Merger is like equality: it
-is reflexive, transitive and symmetric.
-<p>
-
-Merging reports causes a note to appear on each report's logs; on the
-WWW pages this is includes links to the other $gBugs.
-<p>
-
-Merged reports are all expired simultaneously, and only when all of
-the reports each separately meet the criteria for expiry.
+
+ <dd>Merges two or more $gBug reports. When reports are merged opening,
+ closing, marking or unmarking as forwarded and reassigning any of the
+ $gBugs to a new package will have an identical effect on all of the
+ merged reports.
+
+ <p>Before $gBugs can be merged they must be in exactly the same state:
+ either all open or all closed, with the same forwarded-to upstream
+ author address or all not marked as forwarded, all assigned to the
+ same package or package(s) (an exact string comparison is done on the
+ package to which the $gBug is assigned), and all of the same severity.
+ If they don't start out in the same state you should use
+ <code>reassign</code>, <code>reopen</code> and so forth to make sure
+ that they are before using <code>merge</code>. Titles are not required
+ to match, and will not be affected by the merge.
+
+ <p>If any of the $gBugs listed in a <code>merge</code> command is already
+ merged with another $gBug then all the reports merged with any of the
+ ones listed will all be merged together. Merger is like equality: it
+ is reflexive, transitive and symmetric.
+
+ <p>Merging reports causes a note to appear on each report's logs; on the
+ WWW pages this includes links to the other $gBugs.
+
+ <p>Merged reports are all expired simultaneously, and only when all of
+ the reports each separately meet the criteria for expiry.
+
+<dt><code>forcemerge</code> <var>bugnumber</var> <var>bugnumber</var> ...
+ <dd>Forcibly merges two or more $gBug reports. The first bug is
+ chosen as the master bug, and its seetings are assigned to the bugs
+ listed next in the command. See the text above for a description of
+ what merging means.
<dt><code>unmerge</code> <var>bugnumber</var>
-<dd>
-Disconnects a $gBug report from any other reports with which it may have
-been merged. If the report listed is merged with several others then
-they are all left merged with each other; only their associations with
-the $gBug explicitly named are removed.
-<p>
+ <dd>Disconnects a $gBug report from any other reports with which it may have
+ been merged. If the report listed is merged with several others then
+ they are all left merged with each other; only their associations with
+ the $gBug explicitly named are removed.
+
+ <p>If many $gBug reports are merged and you wish to split them into two
+ separate groups of merged reports you must unmerge each report in one
+ of the new groups separately and then merge them into the required new
+ group.
+
+ <p>You can only unmerge one report with each <code>unmerge</code>
+ command; if you want to disconnect more than one $gBug simply include
+ several <code>unmerge</code> commands in your message.
+
+<dt><code>tags</code> <var>bugnumber</var> [ <code>+</code> | <code>-</code> | <code>=</code> ] <var>tag</var> [ <var>tag</var> ... ]
+
+ <dd>Sets tags for the $gBug report #<var>bugnumber</var>. No notification
+ is sent to the user who reported the $gBug. Setting the action to
+ <code>+</code> means to add each given <var>tag</var>, <code>-</code>
+ means to remove each given <var>tag</var>, and <code>=</code> means to
+ ignore the current tags and set them afresh to the list provided. The
+ default action is adding.
+
+ <p>Example usage:</p>
+
+ <pre>
+ # same as 'tags 123456 + patch'
+ tags 123456 patch
-If many $gBug reports are merged and you wish to split them into two
-separate groups of merged reports you must unmerge each report in one
-of the new groups separately and then merge them into the required new
-group.
-<p>
+ # same as 'tags 123456 + help security'
+ tags 123456 help security
-You can only unmerge one report with each <code>unmerge</code>
-command; if you want to disconnect more than one $gBug simply include
-several <code>unmerge</code> commands in your message.
+ # add 'fixed' and 'pending' tags
+ tags 123456 + fixed pending
+
+ # remove 'unreproducible' tag
+ tags 123456 - unreproducible
+
+ # set tags to exactly 'moreinfo' and 'unreproducible'
+ tags 123456 = moreinfo unreproducible
+ </pre>
+
+ <p>Available tags currently include <code>patch</code>, <code>wontfix</code>,
+ <code>moreinfo</code>, <code>unreproducible</code>, <code>help</code>,
+ <code>pending</code>, <code>fixed</code>, <code>security</code>,
+ <code>upstream</code>, <code>potato</code>, <code>woody</code>,
+ <code>sarge</code>,
+ <code>sid</code> and <code>experimental</code>.
+
+ <p>For <a href="Developer.html#tags">their meanings</a> please consult the
+ general developers' documentation for the $gBug system.
+
+<dt><code>block</code>|<code>unblock</code> <var>bugnumber</var> <code>by</code>|<code>with</code> <var>bug</var> [ <var>bug</var> ... ]
+
+ <dd>Use to note that one bug blocks another bug from being fixed.
+ The first listed bug is the one being blocked, and it is followed
+ by the bug or bugs that are blocking it. Use <code>unblock</code>
+ to unblock a bug.
+
+ <p>Example usage:</p>
+
+ <pre>
+ # indicates that 7890 cannot be fixed until 123456 is fixed
+ block 7890 by 123456
+ # indicates that 7890 can be fixed before 123456 after all
+ unblock 7890 by 123456
+ </pre>
+
+<dt><code>close</code> <var>bugnumber</var> [ <var>fixed-version</var> ]
+ (deprecated)
+
+ <dd>Close $gBug report #<var>bugnumber</var>.
+
+ <p>A notification is sent to the user who reported the $gBug, but (in
+ contrast to mailing <var>bugnumber</var><code>-done@$gEmailDomain</code>) the
+ text of the mail which caused the $gBug to be closed is <strong>not</strong>
+ included in that notification. The maintainer who closes a report
+ should ensure, probably by sending a separate message, that the user
+ who reported the $gBug knows why it is being closed.
+ The use of this command is therefore deprecated.
+
+ <p>If you supply a <var>fixed-version</var>, the $gBug tracking system
+ will note that the $gBug was fixed in that version of the package.
+
+<dt><code>package</code> [ <var>packagename</var> ... ]
+
+ <dd>Limits the following commands so that they will only apply to bugs
+ filed against the listed packages. You can list one or more packages. If
+ you don't list any packages, the following commands will apply to all
+ bugs. You're encouraged to use this as a safety feature in case you
+ accidentally use the wrong bug numbers.
+
+ <p>Example usage:</p>
+
+ <pre>
+ package foo
+ reassign 123456 bar 1.0-1
+
+ package bar
+ retitle 123456 bar: bar sucks
+ severity 123456 normal
+
+ package
+ severity 234567 wishlist
+ </pre>
+
+<dt><code>owner</code> <var>bugnumber</var> <var>address</var> | <code>!</code>
+
+ <dd>Sets <var>address</var> to be the "owner" of #<var>bugnumber</var>.
+ The owner of a $gBug claims responsibility for fixing it.
+ This is useful to share out work in cases where a
+ package has a team of maintainers.
+
+ <p>If you wish to become the owner of the $gBug yourself, you can use the
+ <code>!</code> shorthand or specify your own email address.</p>
+
+<dt><code>noowner</code> <var>bugnumber</var>
+
+ <dd>Forgets any idea that the $gBug has an owner other than the usual
+ maintainer. If the $gBug had no owner recorded then this will do nothing.
+
+<dt><code>archive</code> <var>bugnumber</var>
+
+ <dd>Archives a $gBug that was previously archived if the $gBug
+ fulfills the requirements for archival, ignoring time.
+
+<dt><code>unarchive</code> <var>bugnumber</var>
+
+ <dd>Unarchives a $gBug that was previously archived. Unarchival
+ should generally be coupled with reopen and found/fixed as
+ approprite. Bugs that have been unarchived can be archived using
+ archive assuming the non-time based archival requirements are met.
+
+<dt><code>#</code>...
+
+ <dd>One-line comment. The <code>#</code> must be at the start of the line.
+ The text of comments will be included in the acknowledgement sent to the
+ sender and to affected maintainers, so you can use this to document the
+ reasons for your commands.
+
+<dt><code>quit</code>
+<dt><code>stop</code>
+<dt><code>thank</code>
+<dt><code>thanks</code>
+<dt><code>thankyou</code>
+<dt><code>thank you</code>
+<dt><code>--</code>
+<!-- #366093, I blame you! -->
+<!-- <dt><code>kthxbye</code> -->
+<!-- See... I documented it! -->
+
+ <dd>On a line by itself, in any case, possibly followed by
+ whitespace, tells the control server to stop processing the
+ message; the remainder of the message can include explanations,
+ signatures or anything else, none of it will be detected by the
+ control server.
</dl>
<hr>
-Other pages:
+
+<p>Other pages:
<ul>
-<li><A href="./">$gBug tracking system main contents page.</A>
-<li><A href="Reporting.html">Instructions for reporting $gBugs.</A>
-<li><A href="Access.html">Accessing the $gBug tracking logs other than by WWW.</A>
-<li><A href="Developer.html">Developers'
-information regarding the $gBug processing system.</A>
-<li><A href="server-request.html">Fundamentals of the mailserver
-and commands for retrieving $gBugs.</A>
-<li><A href="server-refcard.html">Mailservers' reference card.</A>
-<li><A href="db/ix/full.html">Full list of outstanding and recent $gBug reports.</A>
-<li><A href="db/ix/packages.html">Packages with $gBug reports.</A>
-<li><A href="db/ix/maintainers.html">Maintainers of packages with $gBug reports.</A>
- $gHTMLOtherPageList
+ <li><a href="./">$gBug tracking system main contents page.</a>
+ <li><a href="Reporting.html">Instructions for reporting $gBugs.</a>
+ <li><a href="Access.html">Accessing the $gBug tracking logs other than by WWW.</a>
+ <li><a href="Developer.html">Developers' information regarding the $gBug processing system.</a>
+ <li><a href="server-request.html">Fundamentals of the mailserver and commands for retrieving $gBugs.</a>
+ <li><a href="server-refcard.html">Mailservers' reference card.</a>
+ <li><a href="db/ix/full.html">Full list of outstanding and recent $gBug reports.</a>
+ <li><a href="db/ix/packages.html">Packages with $gBug reports.</a>
+ <li><a href="db/ix/maintainers.html">Maintainers of packages with $gBug reports.</a>
+$gHTMLOtherPageList
</ul>
$gHTMLTail