diff --git a/en/cgi/Gnats.pm b/en/cgi/Gnats.pm
new file mode 100644
index 0000000000..894c43840a
--- /dev/null
+++ b/en/cgi/Gnats.pm
@@ -0,0 +1,41 @@
+# $Id: Gnats.pm,v 1.1 2004-02-16 16:57:10 ceri Exp $
+package Gnats;
+
+# We probably don't have "our" in this Perl
+use vars qw/
+	$gnats_root
+	$query_pr
+	$submission_address
+	$submission_program
+	$use_mail
+	/;
+
+$gnats_root="/usr/local/libexec/gnats";
+$query_pr="/usr/local/bin/query-pr.web";
+$submission_address="freebsd-gnats-submit\@FreeBSD.org";
+$use_mail=1;
+
+if ($use_mail) {
+	if (-e "/usr/lib/sendmail") { $submission_program = "/usr/lib/sendmail -t" };
+	if (-e "/usr/sbin/sendmail") { $submission_program = "/usr/sbin/sendmail -t" };
+} else {
+	if (-e "$gnats_root/queue-pr") { $submission_program = "$gnats_root/queue-pr -q" };
+}
+
+##### End site specific stuff
+
+BEGIN {
+	use Exporter();
+	use vars qw/$VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS/;
+	$VERSION = 0.01;	# Has to have two decimal places
+	@ISA = qw/Exporter/;
+	# Names for sets of symbols
+	%EXPORT_TAGS = (
+			'standard'=>[qw/$gnats_root $query_pr $submission_address
+				$submission_program/],
+	);
+	Exporter::export_tags('standard');
+	Exporter::export_ok_tags('standard');
+}
+
+1;
diff --git a/en/cgi/Makefile b/en/cgi/Makefile
index 0d74f4ac07..306d4ac70a 100644
--- a/en/cgi/Makefile
+++ b/en/cgi/Makefile
@@ -1,4 +1,4 @@
-# $FreeBSD: www/en/cgi/Makefile,v 1.20 2003/12/14 17:28:13 ceri Exp $
+# $FreeBSD: www/en/cgi/Makefile,v 1.21 2004/02/16 15:18:02 ceri Exp $
 
 .if exists(../Makefile.conf)
 .include "../Makefile.conf"
@@ -7,7 +7,7 @@
 .include "../Makefile.inc"
 .endif
 
-DATA=	ftp.mirrors freebsd.def html.pl cgi-lib.pl cgi-style.pl
+DATA=	ftp.mirrors freebsd.def html.pl cgi-lib.pl cgi-style.pl Gnats.pm
 DATA+=	cvsweb.conf cvsweb.conf-freebsd cvsweb.conf-netbsd cvsweb.conf-openbsd
 CGI=	ftp.cgi gallery.cgi mirror.cgi
 CGI+=	search.cgi cvsweb.cgi query-pr.cgi query-pr-summary.cgi
diff --git a/en/cgi/dosendpr.cgi b/en/cgi/dosendpr.cgi
index 55d653a39d..2232f20b04 100755
--- a/en/cgi/dosendpr.cgi
+++ b/en/cgi/dosendpr.cgi
@@ -8,13 +8,14 @@
 #  GNU General Public License Version 2.  
 #     (http://www.gnu.ai.mit.edu/copyleft/gpl.html)
 #
-# $FreeBSD: www/en/cgi/dosendpr.cgi,v 1.19 2004/02/16 16:49:25 ceri Exp $
+# $FreeBSD: www/en/cgi/dosendpr.cgi,v 1.20 2004/02/16 16:54:06 ceri Exp $
 
 require "html.pl";
 
 use Socket;
 use DB_File;
 use Fcntl qw(:DEFAULT :flock);
+require "./Gnats.pm"; import Gnats;
 
 my $blackhole = "dnsbl.njabl.org";
 my $openproxyip = "127.0.0.9";
@@ -80,28 +81,9 @@ sub prerror {
 &www_content ("text","html");
 &cgi_form_in();
 
-$gndb = $cgi_data{'gndb'};
-if ($gndb =~ /^[a-z]+$/ && -e "$gndb.def")
-  { require "$gndb.def"; }
-else
-  { &prerror("gndb problem"); }
-
 &prerror("request method problem") if $ENV{'REQUEST_METHOD'} eq 'GET';
 
-# Configuration
-if ($gnhow eq "mail")
-  {
-    if (-e "/usr/lib/sendmail")
-      { $submitprog = "/usr/lib/sendmail -t" };
-    if (-e "/usr/sbin/sendmail")
-      { $submitprog = "/usr/sbin/sendmail -t" };
-  }
-else
-  { if (-e "$gnroot/queue-pr")
-      { $submitprog = "$gnroot/queue-pr -q" };
-  }
-
-if (!$submitprog) { &prerror("submit program problem"); }
+if (!$submission_program) { &prerror("submit program problem"); }
 
 &html_title ("Thank you for the problem report");
 &html_body ();
@@ -164,14 +146,14 @@ if (defined $openproxy) {
 }
 
 # Build the PR.
-$pr = "To: $gnemail\n" .
+$pr = "To: $submission_address\n" .
       "From: $cgi_data{'originator'} <$cgi_data{'email'}>\n" . 
       "Subject: $cgi_data{'synopsis'}\n" .
       env2hdr(@ENV_captures);
 if ($blackhole_err) {
       $pr .= "X-REMOTE_ADDR-Is-Open-Proxy: Maybe\n";
 }
-$pr .= "X-Send-Pr-Version: www-2.2\n\n" .
+$pr .= "X-Send-Pr-Version: www-2.3\n\n" .
       ">Submitter-Id:\t$cgi_data{'submitterid'}\n" .
       ">Originator:\t$cgi_data{'originator'}\n" .
       ">Organization:\t$cgi_data{'organization'}\n" .
@@ -190,7 +172,7 @@ $pr .= "X-Send-Pr-Version: www-2.2\n\n" .
 # remove any carrage returns that appear in the report.
 $pr =~ s/\r//g;
 
-if (open (SUBMIT, "|$submitprog")){
+if (open (SUBMIT, "|$submission_program")){
 
     print SUBMIT $pr;
     close (SUBMIT);
diff --git a/en/cgi/query-pr.cgi b/en/cgi/query-pr.cgi
index 80edecfcd9..a1fd073d4f 100755
--- a/en/cgi/query-pr.cgi
+++ b/en/cgi/query-pr.cgi
@@ -1,5 +1,5 @@
 #!/usr/bin/perl -T
-# $FreeBSD: www/en/cgi/query-pr.cgi,v 1.35 2003/06/09 14:58:00 ceri Exp $
+# $FreeBSD: www/en/cgi/query-pr.cgi,v 1.36 2003/11/12 20:58:13 ceri Exp $
 
 $ENV{'PATH'} = "/bin:/usr/bin:/usr/sbin:/sbin:/usr/local/bin";
 
@@ -11,6 +11,7 @@ $ENV{'PATH'} = "/bin:/usr/bin:/usr/sbin:/sbin:/usr/local/bin";
 require "./cgi-lib.pl";
 require "./cgi-style.pl";
 require "getopts.pl";
+require "./Gnats.pm";  import Gnats;
 
 &Getopts('p:');
 
@@ -56,7 +57,7 @@ if ($pr < 1 || $pr > 499999) {
     exit 0;
 }
 
-unless (open(Q, "query-pr.web -F $pr 2>&1 |")) {
+unless (open(Q, "$query_pr -F $pr 2>&1 |")) {
     print &html_header("Server error");
     print "<p>Unable to open PR database.</p>\n";
     print &html_footer;