summaryrefslogtreecommitdiff
path: root/gnu/usr.bin/send-pr
diff options
context:
space:
mode:
authorjtc <jtc@NetBSD.org>1994-01-24 23:55:37 +0000
committerjtc <jtc@NetBSD.org>1994-01-24 23:55:37 +0000
commit2fb7d669c309989aa7b8cb23ead034601a308c23 (patch)
treec8f748ed10d1fa7fc2cd77e566bdd6d5e5da6e02 /gnu/usr.bin/send-pr
parent03cf464d00cd2111a123d5a377ce37438658a1bf (diff)
Updated to latest send-pr from Cygnus.
Added missing files & configuration grot so that NetBSD who are not connected to the net, but have a net connection on another machine can submit bugs.
Diffstat (limited to 'gnu/usr.bin/send-pr')
-rw-r--r--gnu/usr.bin/send-pr/ChangeLog618
-rw-r--r--gnu/usr.bin/send-pr/INSTALL83
-rw-r--r--gnu/usr.bin/send-pr/MANIFEST20
-rw-r--r--gnu/usr.bin/send-pr/Makefile96
-rw-r--r--gnu/usr.bin/send-pr/Makefile.in291
-rw-r--r--gnu/usr.bin/send-pr/README43
-rw-r--r--gnu/usr.bin/send-pr/aclocal.m468
-rw-r--r--gnu/usr.bin/send-pr/categ.texi123
-rwxr-xr-xgnu/usr.bin/send-pr/configure363
-rw-r--r--gnu/usr.bin/send-pr/configure.in71
-rw-r--r--gnu/usr.bin/send-pr/fields.texi518
-rw-r--r--gnu/usr.bin/send-pr/install-sid.sh4
-rw-r--r--gnu/usr.bin/send-pr/s-usage.texi519
-rw-r--r--gnu/usr.bin/send-pr/send-pr-el.in112
-rw-r--r--gnu/usr.bin/send-pr/send-pr.man79
-rw-r--r--gnu/usr.bin/send-pr/send-pr.sh112
-rw-r--r--gnu/usr.bin/send-pr/send-pr.texi657
-rw-r--r--gnu/usr.bin/send-pr/states.texi53
18 files changed, 3648 insertions, 182 deletions
diff --git a/gnu/usr.bin/send-pr/ChangeLog b/gnu/usr.bin/send-pr/ChangeLog
new file mode 100644
index 00000000000..a1e1872b02c
--- /dev/null
+++ b/gnu/usr.bin/send-pr/ChangeLog
@@ -0,0 +1,618 @@
+Sat Jan 15 19:12:45 1994 Jason Merrill (jason@deneb.cygnus.com)
+
+ * aclocal.m4 (AC_LISPDIR): Handle case where $(prefix) is not
+ specified on the command line.
+
+Mon Jan 10 17:21:33 1994 Jason Merrill (jason@deneb.cygnus.com)
+
+ * send-pr-el.in (send-pr:submit-pr): If called from command line,
+ save buffer on C-c C-c.
+
+ * send-pr.sh: Clean up template.
+
+ * Makefile.in, configure.in: Don't use AC_PROG_INSTALL after all.
+
+ * aclocal.m4 (AC_LISPDIR): Check for --with-lispdir option.
+
+Fri Jan 7 11:43:02 1994 Jason Merrill (jason@deneb.cygnus.com)
+
+ * send-pr-el.in (gnats:change-field): If not called interactively,
+ just use the default value.
+
+ * Makefile.in (uninstall): Fix.
+
+ * configure.in: Add call to AC_PROG_INSTALL.
+
+ * Makefile.in (INSTALL*): Use it.
+
+ * send-pr.sh: Only modify GNATS_ADDR if USER_GNATS_SITE is different
+ from GNATS_SITE.
+
+ * send-pr-el.in (send-pr:submit-pr): If the user ran send-pr from the
+ command line with $EDITOR == emacs, don't submit the PR here.
+ (send-pr:::spawn-to-send): Variable to control this behavior.
+
+Thu Jan 6 22:51:15 1994 Jason Merrill (jason@deneb.cygnus.com)
+
+ * send-pr-el.in (send-pr::fields): Default for Submitter-Id should
+ be SUBMITTER, not DEFAULT_SUBMITTER.
+
+ * aclocal.m4 (AC_PASSWD): New macro to figure out how to read the
+ passwd database (cat, ypcat, niscat).
+
+ * configure.in: Use it.
+
+ * Makefile.in (PASSWD, send-pr): Use it.
+
+ * send-pr.sh: Use it.
+
+Fri Dec 10 11:48:44 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * Version 3.2
+
+Thu Dec 2 09:11:40 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * Makefile.in (mostlyclean): Don't delete version.texi.
+ (realclean): Do delete version.texi.
+
+Tue Nov 30 15:37:59 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * Makefile.in (install-gnats-dist): Use send-pr.1 rather than
+ send-pr.man.
+
+Mon Nov 22 15:43:40 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * Makefile.in (install-gnats-dist): Make sure $(datadir)/gnats/dist
+ is writable by user gnats.
+
+Fri Nov 19 16:53:53 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * send-pr-el.in (gnats::emacs-19p): Avoid confusion wrt Epoch.
+
+Fri Nov 12 16:27:00 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ Fri Nov 12 15:48:01 1993 "Jonathan I. Kamens" (jik@security.ov.com)
+
+ * send-pr.sh: Deal with categories longer than 12 chars.
+
+Wed Nov 3 12:22:22 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * Makefile.in (install-tools): Always install Cygnus category list.
+ (install-categories): Always install categories as 'cygnus'.
+
+Tue Nov 2 21:43:12 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * send-pr-el.in (gnats:change-field): If not currently in a field,
+ deal.
+ (gnats::current-field): Ditto.
+ (gnats::set-field): save-excursion.
+ (gnats::set-mail-field): Ditto.
+
+Tue Nov 2 18:33:08 1993 Jeffrey Osier (jeffrey@thepub.cygnus.com)
+
+ * .Sanitize: fix filenames
+ * Makefile.in (send-pr.info): depends on other .texi files
+ * *.texi: more fixes to bring up to par
+
+Mon Nov 1 10:05:10 1993 Jeffrey Osier (jeffrey@thepub.cygnus.com)
+
+ * gnats/*.texi, send-pr/*.texi, gnats/man/*.man: up to date
+
+Wed Oct 27 18:49:39 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * Makefile.in (send-pr.info): Fix
+ (send-pr.dvi): Fix
+
+Wed Oct 27 14:14:12 1993 Jeffrey Osier (jeffrey@cygnus.com)
+
+ * .Sanitize: reflect new doc strategy
+ * .Makefile.in: reflect new doc strategy
+ * send-pr.texi, s-usage.texi, fields.texi, categ.texi, states.texi:
+ The New Doc Strategy. Some info is also included into
+ the regular GNATS docs, so it's modular now.
+
+Tue Oct 26 16:20:08 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * send-pr-el.in (send-pr:submit-pr): Use the right site
+
+ * Makefile.in (install-gnats-dist): Lose the -o gnats bunk.
+ Change $GNATS_ROOT/gnats-dist to $(datadir)/gnats/dist
+
+Wed Oct 20 18:09:20 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * configure.in (MAIL_AGENT): Also look in /usr/ucblib.
+
+ * Makefile.in (uninstall): Don't use {}.
+
+Tue Oct 19 14:06:56 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * Makefile.in (send-pr.el): Subst in SUBMITTER.
+ (install-gnats-dist): Make it work.
+
+ * send-pr.sh: On second thought, don't try to guess the FQDN at all.
+
+ * send-pr.sh (HOSTNAME): Massage hosts where `hostname` does not
+ produce the FQDN, but `hostname`.`domainname` does.
+
+ * send-pr-el.in (send-pr:send-pr): On some Emacs 18ses,
+ switch-to-buffer returns nil when it succeeds. Ignore it.
+
+Mon Oct 18 16:10:59 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * send-pr.sh: Deal with echo -n / echo \c stuff,
+ massage SunOS 4.1.3 sendmail.
+ Fix $0/$COMMAND bug in awk script.
+
+ * aclocal.m4: Create, with AC_FIND_PROGRAM and AC_ECHON.
+
+ * Makefile.in (VPATH): Add def.
+ (GNATS_ROOT, etc): Replace default values with @@ stuff.
+ (CC, RANLIB): Give default (unused) values.
+ (most targets): Change @@s to xxs.
+ (send-pr): Subst in ECHON.
+ (install-categories): Don't use -o.
+
+Thu Oct 14 22:12:27 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * send-pr.sh: Don't use 'eval' when calling MAIL_AGENT, as it
+ breaks Ultrix sh and wasn't useful anyway.
+
+Wed Oct 13 15:55:52 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * send-pr.sh (GNATS_SITE): Move after config, subst in.
+
+ * Makefile.in (MAIL_AGENT): Add definition.
+ (SEND_PR_INSTALL): Dependencies of install.
+ (send-pr): Subst in MAIL_AGENT.
+ (install): Use SEND_PR_INSTALL.
+ (install-norm): Don't install categories file.
+ (install-categories): New target to install categories file.
+ (install-gnats-dist): Look for send-pr.texi in the right place.
+ (stamp-gnats): Deal with MAIL_AGENT and SEND_PR_INSTALL
+
+Tue Oct 12 15:50:00 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * send-pr-el.in (setenv): Define for old emacses
+
+ Tue Oct 12 14:36:28 1993 JT Conklin (conklin@talisman.kaleida.com)
+
+ * send-pr.sh (COMMAND): Add missing quote.
+
+Fri Oct 1 15:06:01 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * Makefile.in (VERSION): Bump to 3.01.5
+
+Tue Sep 28 13:35:45 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * Makefile.in (install-gnats-dist): Fix creation of send-pr-el.in
+
+ * send-pr-el.in (send-pr::start-up): Clear cruft inserted by
+ bdamaged .cshrc files
+
+ * Makefile.in (send-pr.elc): New target
+ (uninstall): Now does something
+
+ * send-pr-el.in (gnats::functionp): Fix ref to free var
+
+Fri Sep 17 10:22:26 1993 david d `zoo' zuhn (zoo@rtl.cygnus.com)
+
+ * Makefile.in (install-gnats): add missing backslash
+
+Fri Sep 10 17:03:22 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * Makefile.in (Makefile): Make it work with stamp-gnats
+ (DEFAULT_RELEASE): Make more general
+
+Thu Sep 9 17:58:50 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * Makefile.in: Add appropriate defaults for reporting bugs to Cygnus
+ Remove problem quotes
+ Depend on ../install.sh
+
+ * send-pr-el.in: Fix various Emacs 18 problems
+
+Wed Sep 8 16:27:35 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * Makefile.in (install-gnats): Remove directory creation stuff
+ (install-gnats-dist): Ditto
+
+ * send-pr-el.in (gnats:change-field): Allow the caller to specify
+ a default value [used by update-responsible].
+
+Tue Sep 7 14:12:35 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * Makefile.in (install-gnats-dist): Unset submitter for gnats-dist
+
+ * send-pr.sh: Made install-sid message more explicit
+
+Fri Sep 3 14:10:27 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * send-pr.sh: Change $LIBDIR to $DATADIR
+
+ * send-pr-el.in (various): Replace libdir with datadir
+ (send-pr::start-up): Support mail-self-blind
+ (gnats::mail-position-on-field): Create field if it's not there
+ (gnats:previous-field): Check for keyword before point first
+ (gnats::looking-after): Revert from (point-marker) to (point)
+
+ * Makefile.in (stamp-gnats): Depend on Makefile
+ (send-pr.texi): sed(1) in version number and usage info so that
+ clients only get single texi file.
+ (various): Change $(libdir) to $(datadir)
+ (install): Default to install-gnats, since the rule checks for ../gnats
+ (stamp-gnats): Replace install dependencies
+
+ * send-pr.texi: Move to send-pr.texi.in, change version number to
+ @VERSION@
+
+Tue Aug 31 12:02:14 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * send-pr-el.in (send-pr:submit-pr): Bury the right buffer.
+ (send-pr::fields): Move all possible values and defaults
+ into this monolithic table
+ (send-pr::start-up): Replace all the querys with a mapcar over
+ send-pr::fields
+ (gnats::competing-read-and-replace): Lose
+ (gnats::find-field): Lose
+ (gnats::position-on-field): Create
+ (gnats::mail-position-on-field): Create
+ (gnats::field-contents): Create
+ (gnats::functionp): Create
+ (gnats::field-values): Create
+ (gnats::field-default): Create
+ (gnats::field-type): Create
+ (gnats::field-action): Create
+ (send-pr::maybe-change-field): Create
+ (gnats:change-field): Create, bind to ^C^F
+ (gnats::set-field): Create
+ (gnats::set-mail-field): Create
+ (gnats:beginning-of-field): Create
+ (gnats::current-field): Create
+ (gnats::after-keyword): Fix doc string
+ (gnats::patch-exec-path): Don't use send-pr::err-buffer-name
+ (gnats::get-value-from-shell): Ditto
+
+Fri Aug 27 08:34:58 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * send-pr-el.in (gnats::*-keyword): Add grouping
+
+ * send-pr.sh: Accommodate shells that don't support functions.
+
+ * send-pr-el.in (send-pr:submit-pr): Fix behavior on send
+
+Thu Aug 26 14:31:21 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * send-pr-el.in (send-pr::set-sites): Use send-pr:libdir, not
+ gnats:libdir.
+ (send-pr::start-up): Put buffer in send-pr-mode.
+ (send-pr:submit-pr): Make sure err-buffer exists before trying to
+ use it.
+ (send-pr:send-pr-mode): Allow whitespace after keyword in
+ paragraph-separate
+
+ * send-pr.sh (MAIL_AGENT): Use /usr/lib/sendmail rather than /bin/mail
+ (ORIGINATOR): remove $TEMP when done
+ (die): New function to massage buggy Sun sh
+ (EXIT_STATUS): New variable to massage buggy Sun sh
+ Don't parse To: and CC: headers any more
+ Check for failure of MAIL_AGENT
+
+Tue Aug 24 16:57:13 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * send-pr-el.in (send-pr:libdir): Use @'s, be const
+ (send-pr::categories): Remove
+ (send-pr:::categories): Add (buffer-local)
+ (send-pr::category-alist): Add
+ (send-pr:::site): Add
+ (send-pr::set-categories): Support multiple sites
+ (send-pr::sites): Don't update without arg
+ (send-pr::pr-buffer): Add -name to end, fix refs to use buffer
+ (send-pr::err-buffer): Ditto
+ (send-pr:send-pr): Always use site name, only ask about erasing
+ report if it's been modified.
+ (send-pr::start-up): Check for errors from send-pr -P
+ Don't kill random buffers
+ Remove useless progn
+ (gnats::completing-read-and-replace): Fix doc string
+ (gnats::set-variable-from-shell): Change to get-var...
+ Check for errors
+
+ * send-pr.sh (GNATS_ROOT): Put definition on newline so configure
+ can find it
+ Ask user whether or not to send the PR even if it's valid
+
+Mon Aug 23 12:31:00 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * send-pr-el.in (gnats::releases): Use send-pr:default-release
+
+ * send-pr.sh (LIBDIR): Try looking under GCC_EXEC_PREFIX for
+ the gnats stuff if it's not in the right place
+ Move up TMPDIR stuff so the ORIGINATOR stuff can use $TEMP
+ Remove 'g' from COMMAND sed pattern
+ Remove 'p' from options list
+
+ * send-pr.input: Fix C-u M-x send-pr description
+
+Fri Aug 20 20:34:12 1993 Jason Merrill (jason@rtl.cygnus.com)
+
+ * send-pr.sh: Add long options, add -h, remove -p and -r
+
+Thu Aug 19 14:59:24 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * send-pr-el.in (gnats::push): Move from gnats-el.in
+
+ * Makefile.in (send-pr.el): Subst in $(libdir) and $(GNATS_SITE)
+
+ * send-pr-el.in (send-pr:default-site): Create
+ (send-pr:send-pr): Ask for site name if arg
+ (send-pr::start-up): Use site name if non-nil
+ (send-pr::set-sites): Create list of known sites from listing of
+ LIBDIR/gnats
+
+ * send-pr.sh (ORIGINATOR): Remove ''s around ^$LOGNAME
+ Redirect stderr from ypcat to /dev/null
+ Use $TEMP as a temp file to avoid quoting problems
+
+ * Makefile.in (send-pr): Subst in $(SUBMITTER)
+ (stamp-gnats): Ditto
+
+ * send-pr.sh (SUBMITTER): Get substed
+
+ * send-pr-el.in (gnats::get-config): Trim newline from echo output
+ rather than using non-portable -n switch
+ (send-pr:submit-pr): Indicate when send-pr is done
+
+Wed Aug 18 15:14:22 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * send-pr-el.in (send-pr-mode-map): Move setup into defvar
+ Reorganize namespace (put some things under send-pr:, others
+ under gnats:)
+ (send-pr:start-up): Use mail-default-reply-to
+ (send-pr:submit-pr): If in a Server buffer, do server-buffer-done
+ rather than spawning another send-pr.
+ (gnats::get-config): Add, use
+ Juggle contents of send-pr.el and gnats.el to avoid duplication
+ and name clashing (like with gnats-set-categories)
+ (gnats::set-variable-from-shell): kill the buffer when done
+
+ * send-pr.sh: Don't complain about $SUBMITTER if using -f
+ Fix typos
+
+Tue Aug 17 19:31:27 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * send-pr.sh: Don't loop if called from Emacs
+
+Mon Aug 16 14:59:29 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * Makefile.in (send-pr.el): Substitute in GNATS_ROOT
+
+ * send-pr-el.in (send-pr-start-up): Set $GNATS_ROOT to GNATS-ROOT
+ Add definition of GNATS-ROOT
+
+ * send-pr.sh: Use GNATS_ROOT in the environment
+
+Fri Aug 13 12:00:16 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * send-pr.sh: Fix grammar in send-pr template
+
+ * install-sid.sh: Change grep -s to grep > /dev/null for greps
+ that just don't shut up (i.e. POSIX)
+
+Tue Aug 10 13:25:35 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * send-pr-el.in (send-pr-mode): Change paragraph-separate and
+ paragraph-start to include "^>[-A-Za-z]:" (PR 3166)
+
+Mon Aug 9 15:37:00 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * send-pr.sh: Added >Fix: field (re PR 1310)
+ If errors are found, allow user to edit PR again.
+ Remove [ -z $FORCE ] since $FORCE appears nowhere else
+ Add contents of CC: field to $GNATS_ADDR before sending (PR 2298)
+
+Wed Aug 4 20:33:50 1993 Jason Merrill (jason@deneb.cygnus.com)
+
+ * send-pr.sh: Snarf configuration from GNATS_ROOT/gnats-adm/config
+ if it exists.
+
+ * install-sid.sh: Fixed startup so that calling with no arguments
+ will print usage info and exit
+ Added --version switch
+
+Thu Jul 22 17:00:14 1993 Jason Merrill (jason@wahini.cygnus.com)
+
+ * Makefile.in (install-gnats-dist): now depends on `info' target,
+ installs send-pr.info* rather than just send-pr.info
+
+Wed Jul 21 19:14:30 1993 Jason Merrill (jason@wahini.cygnus.com)
+
+ * Makefile.in (install-gnats-dist): remove $(srcdir)/ before
+ send-pr.info so other-dir installs work.
+
+Tue May 18 21:45:45 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
+
+ * Makefile.in: remove all traces of send_pr and install_cid
+
+Fri Apr 30 08:42:33 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * Makefile.in (check, installcheck): New, empty, targets.
+
+Tue Apr 13 16:52:24 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * Makefile.in (all-gnats): Add rule, same as install-norm; hack for
+ now to make top-level builds work that don't pass GNATS=foo down
+ because they don't need all of GNATS.
+
+Wed Apr 7 13:41:04 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * send-pr.sh (ORGANIZATION): If they don't have an ORGANIZATION
+ environment variable, then try for DEFAULT_ORGANIZATION, then
+ $HOME/.organization, before going for their .signature.
+
+ * Makefile.in (install-sid): Use `tmp-inst-sid' instead of
+ `tmp-install-sid' to avoid filename length limits.
+ (DEFAULT_ORGANIZATION): New variable.
+ (send-pr): Substitute it.
+ (stamp-gnats): Substitute DEFAULT_ORGANIZATION in.
+
+Tue Mar 30 16:00:01 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * send-pr.sh (PRINT_INTERN): Add missing `$'.
+
+Mon Mar 29 16:46:22 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * install-sid.sh (traps): Add them in.
+
+Thu Mar 25 17:01:43 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * send-pr.sh (ORIGINATOR): Look in the NIS maps if they've got
+ them. In any case, strip off anything following a comma, since
+ they might have phone nos or other info.
+
+Wed Mar 24 17:56:15 1993 david d `zoo' zuhn (zoo at poseidon.cygnus.com)
+
+ * Makefile.in: define MAKEINFO, define & use TEXI2DVI
+
+Fri Mar 19 17:44:01 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * send-pr-el.in (send-pr-start-up): Check that send-pr-mode worked
+ (aka, running send-pr worked).
+ (send-pr-mode): Make sure the category list was set.
+ (gnats-set-variable-from-shell): Instead of using a temp buffer,
+ refuse to continue if send-pr couldn't give us a valid categories
+ list. This will change when the send-pr and gnats elisp stuff are
+ rationalized properly.
+
+ * send-pr.sh (editing the PR): Use EDIT, not EDITOR.
+ (SUBMITTER unknown): Fix the message.
+
+Mon Mar 15 14:31:58 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * send-pr.sh (FROM, REPLY_TO): Check for LOGNAME then USER.
+
+Sat Mar 6 15:26:37 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * send-pr.elisp: Rename to send-pr-el.in.
+ * Makefile.in: Do so throughout.
+
+ * Makefile.in (clean): Also delete send-pr.elc.
+
+Thu Mar 4 11:35:29 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * send-pr.sh (TMPDIR): Wrap with quotes in the test for it not
+ being set.
+
+Thu Mar 4 09:58:31 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * Makefile.in (install-info): New target.
+
+ * Makefile.in (install): Ignore error from chown. Get categories
+ file from $(srcdir).
+
+Wed Mar 3 07:43:07 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * Makefile.in (send-pr.info): Added -I$(srcdir).
+
+Sat Feb 27 22:46:09 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * Makefile.in (install): Use $(GNATS).
+ (install-norm): Most of the install rule.
+ (install-gnats-dist): The rest of it.
+ (install-tools): New rule, just run install-norm.
+ (install-gnats): The default, run both install-norma nd
+ install-gnats-dist.
+
+Wed Feb 24 17:19:57 1993 Jeffrey Osier (jeffrey@fowanton.cygnus.com)
+
+ * send-pr.in->send-pr.input: so it's not erased with make clean
+
+Tue Feb 23 15:40:14 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * Makefile.in (install): Change ownership of files installed to gnats.
+
+Tue Feb 23 15:30:01 1993 Jeffrey Osier (jeffrey@fowanton.cygnus.com)
+
+ * send-pr.texi: use send-pr.in
+
+ * send-pr.in: New file (included by send-pr.texi and gnats.texi)
+
+Tue Feb 23 10:45:34 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * Makefile.in (install): Chown $(libdir)/gnats to gnats.
+
+Mon Feb 22 13:26:18 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * Makefile.in (install): Install send-pr.1.
+
+ * Makefile.in (install): Drop in the things for gnats-dist.
+
+Mon Feb 22 01:45:16 1993 Jeffrey Osier (jeffrey@fowanton.cygnus.com)
+
+ * send-pr.man: semi-major cleanup effort.. now in beta
+
+Mon Feb 22 01:22:48 1993 Jeffrey Osier (jeffrey@fowanton.cygnus.com)
+
+ * INSTALL: now in beta
+
+Sun Feb 21 23:25:49 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * Makefile.in (install): Create the parent of lispdir first.
+
+Sun Feb 21 17:07:56 1993 Jeffrey Osier (jeffrey@fowanton.cygnus.com)
+
+ * send-pr.texi: more minor tweaking, added portability note
+ * send-pr.man: ditto
+
+Sun Feb 21 16:11:08 1993 Jeffrey Osier (jeffrey@fowanton.cygnus.com)
+
+ * send-pr.texi: minor install cleanup
+ * MANIFEST: New file.
+ * INSTALL: New file.
+ * README: Major revision.
+
+Sat Feb 20 23:47:02 1993 Jeffrey Osier (jeffrey@fowanton.cygnus.com)
+
+ * send-pr.texi: added new alias info
+
+Sat Feb 20 20:46:23 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * send-pr.sh: Set `From:' and `Reply-To:'.
+
+ * Makefile.in (send-pr): Depend upon Makefile, to catch variable
+ changes.
+ (install-sid, send-pr.el, send-pr.1): Likewise.
+
+ * install-sid.sh: Copy TMP into the send-pr script, so we don't
+ break the link we made to send_pr.
+
+ * send-pr.sh: Given an argument, send to the alias `foo-gnats'.
+
+ * Makefile.in (clean): Also remove stamp-gnats.
+
+Sat Feb 20 19:15:00 1993 Jeffrey Osier (jeffrey@fowanton.cygnus.com)
+
+ * send-pr.texi: recent update, removed installation information
+ and added a line regarding (autoload) for Emacs version
+ * send-pr.info: same update
+
+Sat Feb 20 18:44:09 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * Makefile.in (gnats-build): Changed to depend upon stamp-gnats.
+ (stamp-gnats): New rule, with body of what was in gnats-build.
+
+Sat Feb 20 18:37:33 1993 Jeffrey Osier (jeffrey@fowanton.cygnus.com)
+
+ * send-pr.texi: added install information
+ * send-pr.info: New file.
+
+Sat Feb 20 14:16:56 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
+
+ * Initial entry for GNATS 3.0.
+
+
+Local Variables:
+mode: indented-text
+left-margin: 8
+fill-column: 74
+version-control: never
+End:
diff --git a/gnu/usr.bin/send-pr/INSTALL b/gnu/usr.bin/send-pr/INSTALL
new file mode 100644
index 00000000000..711c63d8a16
--- /dev/null
+++ b/gnu/usr.bin/send-pr/INSTALL
@@ -0,0 +1,83 @@
+ Installation procedures for `send-pr'
+
+If you receive `send-pr' as part of a larger software distribution, it
+will be automatically installed when the full distribution is
+installed. The `send-pr' directory, however, is easily installed by
+itself by following these steps:
+
+1. Unpack the distribution into a directory which we will refer to as
+ SRCDIR.
+
+2. Edit the `Makefile' to reflect local conventions.
+
+ Specifically, you should edit the variable "prefix" to alter
+ the installation location. The default is '/usr/local'. All
+ files are installed under "prefix" (see below).
+
+3. Run
+ make all install [ info ] install-info [ clean ]
+
+ from the "build directory". The targets mean the following:
+
+ all Builds `send-pr' and `install-sid'
+
+ install Installs the following:
+
+ send-pr into PREFIX/bin
+ install-sid into PREFIX/bin
+ send-pr.1 into PREFIX/man/man1
+ categories as PREFIX/lib/gnats/SITE
+ send-pr-el.in as PREFIX/lib/emacs/lisp/send-pr.el
+
+ info (optional) Builds "send-pr.info" from "send-pr.texi"
+ (send-pr.info is included with this distribution)
+
+install-info Installs "send-pr.info" into PREFIX/info
+
+ clean (optional) Removes all intermediary build files that can
+ be rebuilt from source code
+
+4. Run
+
+ install-sid SID
+
+ where SID is the submitter identification code you received with
+ `send-pr'. If you've downloaded `send-pr' from the Net, use "net"
+ for this value.
+
+
+5. Any users who wish to use the Emacs version of `send-pr' must place
+ the following line in their ".emacs" files:
+
+ (autoload 'send-pr "send-pr" "Submit a Problem Report." t)
+
+
+6. Create a mail alias for the support site you received `send-pr'
+ from, and for every site with which you wish to use `send-pr' to
+ communicate with, each with a suffix of `-gnats'. The support
+ site(s) will provide the correct addresses toward which these
+ aliases should point. For instance, edit your mail aliases file
+ to contain something like:
+
+ # support sites; for use with send-pr
+ cygnus-gnats: bugs@cygnus.com # Cygnus Support
+ bumblebee-gnats: bumblebugs@bumblebee.com # Bumblebee BASIC, Inc.
+ mycompany-gnats: bugs@my.company.com (if you use GNATS locally)
+
+ `send-pr' automatically searches for these aliases when you type
+
+ send-pr cygnus
+ send-pr bumblebee
+ send-pr SITE...
+
+ `send-pr' also uses SITE to determine the categories of bugs the site
+ in question accepts by looking in PREFIX/lib/gnats/SITE
+
+
+7. That's it! See "send-pr.info", "send-pr.texi", and/or "send-pr.1" for
+ information on using `send-pr'.
+
+
+Copyright (c) 1993, Free Software Foundation, Inc.
+See the file COPYING for copyright information concerning this
+distribution and all its components.
diff --git a/gnu/usr.bin/send-pr/MANIFEST b/gnu/usr.bin/send-pr/MANIFEST
new file mode 100644
index 00000000000..35375a6fd49
--- /dev/null
+++ b/gnu/usr.bin/send-pr/MANIFEST
@@ -0,0 +1,20 @@
+ MANIFEST for send-pr
+
+The following files should have accompanied this distribution.
+
+ COPYING copyright information
+ ChangeLog sourcecode change log
+ INSTALL installation procedure
+ Makefile.in Makefile template used by `configure'
+ MANIFEST list of accompanying files
+ README introductory information
+ config/ any specialized configuration files
+ configure.in input file for `configure'
+ categories list of valid categories
+ install-sid.sh script which installs Submitter-Id
+ send-pr-el.in elisp version of `send-pr' for Emacs
+ send-pr.man `send-pr' man file, installed as send-pr.1
+ send-pr.info `send-pr' Info file
+ send-pr.sh `send-pr' shell script - command line version
+ send-pr.texi `send-pr' Texinfo documentation
+ send-pr.input `send-pr' Texinfo documentation input file
diff --git a/gnu/usr.bin/send-pr/Makefile b/gnu/usr.bin/send-pr/Makefile
index 618cc2a994c..e6233a9b79b 100644
--- a/gnu/usr.bin/send-pr/Makefile
+++ b/gnu/usr.bin/send-pr/Makefile
@@ -2,32 +2,91 @@
# Makefile for building a standalone send-pr.
#
-VERSION=3.01.6
-RELEASE=NetBSD-current
-GNATS_HOST=sun-lamp
+srcdir= ${.CURDIR}
+bindir= /usr/bin
+datadir= /usr/share
-BINDIR= /usr/bin
-LIBDIR= /usr/share
+#
+# Begin CONFIGURATION SECTION
+#
+VERSION=3.2
+
+# Where the GNATS database and master configuration stuff lives.
+GNATS_ROOT =
+
+# Email address to which people should submit bugs.
+GNATS_ADDR = gnats-bugs@sun-lamp.cs.berkeley.edu
+
+# The default release for this send-pr.
+DEFAULT_RELEASE =
+
+# The default organization for this send-pr.
+DEFAULT_ORGANIZATION =
+
+# The default GNATS site for send-pr.
+GNATS_SITE = sun-lamp
+
+# The submitter-id for your site.
+SUBMITTER = net
+# Command line to use for mailer
+MAIL_AGENT = /usr/sbin/sendmail -oi -t
+
+# Command line to display the passwd database
+PASSWD = cat /bin/passwd
+
+# Echo(1) style
+ECHON = bsd
+
+#
+# END OF CONFIGURATION SECTION
+#
+
+BINDIR= ${bindir}
+LIBDIR= ${datadir}
NOPROG=
MAN1= send-pr.0
-CLEANFILES= send-pr install-sid send-pr.1
+CLEANFILES= send-pr send-pr.1 send-pr.el install-sid
-all: send-pr install-sid send-pr.1
+all: send-pr send-pr.1 send-pr.el install-sid
-send-pr: send-pr.sh
- sed -e 's/@VERSION@/$(VERSION)/g' \
- -e 's/@DEFAULT_RELEASE@/$(RELEASE)/g' \
- ${.CURDIR}/send-pr.sh > send-pr
+send-pr: send-pr.sh Makefile
+ sed -e 's,xVERSIONx,$(VERSION),' \
+ -e 's,xGNATS_ROOTx,$(GNATS_ROOT),' \
+ -e 's,xGNATS_ADDRx,$(GNATS_ADDR),' \
+ -e 's,xGNATS_SITEx,$(GNATS_SITE),' \
+ -e 's,xSUBMITTERx,$(SUBMITTER),' \
+ -e 's,xECHONx,$(ECHON),' \
+ -e 's,xMAIL_AGENTx,$(MAIL_AGENT),' \
+ -e 's,xPASSWDx,$(PASSWD),' \
+ -e 's%xDEFAULT_ORGANIZATIONx%$(DEFAULT_ORGANIZATION)%' \
+ -e 's,xDEFAULT_RELEASEx,$(DEFAULT_RELEASE),' \
+ -e 's,xDATADIRx,$(datadir),' $(srcdir)/send-pr.sh > $@-t
+ mv $@-t $@
+ chmod 755 $@
-send-pr.1: send-pr.man
- sed -e 's/@VERSION@/$((VERSION)/g' \
- ${.CURDIR}/send-pr.man > send-pr.1
+install-sid: install-sid.sh Makefile
+ sed -e 's,xBINDIRx,$(bindir),g' \
+ -e 's,xVERSIONx,$(VERSION),g' $(srcdir)/install-sid.sh > $@-t
+ mv $@-t $@
+ chmod 755 $@
-install-sid: install-sid.sh
- sed -e 's/@VERSION@/$(VERSION)/g' \
- ${.CURDIR}/install-sid.sh > install-sid
+send-pr.el: send-pr-el.in Makefile
+ sed -e 's,xVERSIONx,$(VERSION),' \
+ -e 's,xGNATS_ROOTx,$(GNATS_ROOT),' \
+ -e 's,xGNATS_SITEx,$(GNATS_SITE),' \
+ -e 's,xDATADIRx,$(datadir),' \
+ -e 's,xDEFAULT_SUBMITTERx,$(SUBMITTER),' \
+ -e 's,xDEFAULT_RELEASEx,$(DEFAULT_RELEASE),' \
+ $(srcdir)/send-pr-el.in \
+ > $@-t
+ mv $@-t $@
+
+send-pr.1: send-pr.man Makefile
+ sed -e 's,xGNATS_ROOTx,$(GNATS_ROOT),g' \
+ -e 's,xVERSIONx,$(VERSION),g' $(srcdir)/send-pr.man > $@-t
+ mv $@-t $@
beforeinstall:
install ${COPY} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} send-pr \
@@ -36,6 +95,7 @@ beforeinstall:
${DESTDIR}${BINDIR}
install -d -o root -g wheel -m 755 ${DESTDIR}${LIBDIR}/gnats
install -c -o ${BINOWN} -g ${BINGRP} -m 444 ${.CURDIR}/categories \
- ${DESTDIR}${LIBDIR}/gnats/${GNATS_HOST}
+ ${DESTDIR}${LIBDIR}/gnats/${GNATS_SITE}
.include <bsd.prog.mk>
+
diff --git a/gnu/usr.bin/send-pr/Makefile.in b/gnu/usr.bin/send-pr/Makefile.in
new file mode 100644
index 00000000000..b0c17f468c1
--- /dev/null
+++ b/gnu/usr.bin/send-pr/Makefile.in
@@ -0,0 +1,291 @@
+# Makefile for GNU send-pr.
+# Copyright (C) 1993 Free Software Foundation, Inc.
+#
+# This file is part of GNU GNATS.
+#
+# GNU GNATS is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# GNU GNATS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU GNATS; see the file COPYING. If not, write to
+# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+# Start of system configuration section.
+
+srcdir = @srcdir@
+VPATH = $(srcdir)
+
+# Where the GNATS database and master configuration stuff lives.
+GNATS_ROOT = @GNATS_ROOT@
+
+# Email address to which people should submit bugs.
+GNATS_ADDR = @GNATS_ADDR@
+
+# The default release for this send-pr.
+DEFAULT_RELEASE = @DEFAULT_RELEASE@
+
+# The default organization for this send-pr.
+DEFAULT_ORGANIZATION = @DEFAULT_ORGANIZATION@
+
+# The default GNATS site for send-pr.
+GNATS_SITE = @GNATS_SITE@
+
+# The submitter-id for your site.
+SUBMITTER = @SUBMITTER@
+
+# Command line to use for mailer
+MAIL_AGENT = @MAIL_AGENT@
+
+# Command line to display the passwd database
+PASSWD = @PASSWD@
+
+# What to install
+SEND_PR_INSTALL = install-norm install-categories
+
+CC = cc
+
+AR = ar
+AR_FLAGS = rc
+
+# Set RANLIB = echo if your system doesn't have or need ranlib.
+RANLIB = ranlib
+
+# Where to find texinfo.tex to format docn with TeX
+TEXIDIR = $(srcdir)/../texinfo
+
+MAKEINFO = makeinfo
+TEXI2DVI = texi2dvi
+
+INSTALL = $(srcdir)/../install.sh -c
+INSTALL_PROGRAM = $(INSTALL)
+INSTALL_DATA = $(INSTALL) -m 644
+
+CFLAGS = -g
+LDFLAGS = -g
+
+ECHON = @ECHON@
+
+prefix = /usr/local
+
+exec_prefix = $(prefix)
+bindir = $(exec_prefix)/bin
+libdir = $(exec_prefix)/lib
+tooldir = $(libdir)
+
+program_transform_name =
+
+# Edit this to be the location of your emacs lisp files.
+lispdir = @LISPDIR@
+
+datadir = $(prefix)/lib
+mandir = $(prefix)/man
+man1dir = $(mandir)/man1
+man2dir = $(mandir)/man2
+man3dir = $(mandir)/man3
+man4dir = $(mandir)/man4
+man5dir = $(mandir)/man5
+man6dir = $(mandir)/man6
+man7dir = $(mandir)/man7
+man8dir = $(mandir)/man8
+man9dir = $(mandir)/man9
+infodir = $(prefix)/info
+includedir = $(prefix)/include
+docdir = $(datadir)/doc
+
+# End of system configuration section.
+
+VERSION = 3.2
+
+SHELL = /bin/sh
+
+#### System configurations, if any, are inserted here.
+
+DISTFILES= COPYING ChangeLog Makefile.in README configure.in \
+install-sid.sh send-pr-el.in send-pr.man send-pr.texi fields.texi \
+states.texi s-usage.texi categ.texi send-pr.sh
+
+all: send-pr install-sid send-pr.elc send-pr.1
+
+send-pr: send-pr.sh Makefile
+ sed -e 's,xVERSIONx,$(VERSION),' \
+ -e 's,xGNATS_ROOTx,$(GNATS_ROOT),' \
+ -e 's,xGNATS_ADDRx,$(GNATS_ADDR),' \
+ -e 's,xGNATS_SITEx,$(GNATS_SITE),' \
+ -e 's,xSUBMITTERx,$(SUBMITTER),' \
+ -e 's,xECHONx,$(ECHON),' \
+ -e 's,xMAIL_AGENTx,$(MAIL_AGENT),' \
+ -e 's,xPASSWDx,$(PASSWD),' \
+ -e 's%xDEFAULT_ORGANIZATIONx%$(DEFAULT_ORGANIZATION)%' \
+ -e 's,xDEFAULT_RELEASEx,$(DEFAULT_RELEASE),' \
+ -e 's,xDATADIRx,$(datadir),' $(srcdir)/send-pr.sh > $@-t
+ mv $@-t $@
+ chmod 755 $@
+
+install-sid: install-sid.sh Makefile
+ sed -e 's,xBINDIRx,$(bindir),g' \
+ -e 's,xVERSIONx,$(VERSION),g' $(srcdir)/install-sid.sh > $@-t
+ mv $@-t $@
+ chmod 755 $@
+
+send-pr.el: send-pr-el.in Makefile
+ sed -e 's,xVERSIONx,$(VERSION),' \
+ -e 's,xGNATS_ROOTx,$(GNATS_ROOT),' \
+ -e 's,xGNATS_SITEx,$(GNATS_SITE),' \
+ -e 's,xDATADIRx,$(datadir),' \
+ -e 's,xDEFAULT_SUBMITTERx,$(SUBMITTER),' \
+ -e 's,xDEFAULT_RELEASEx,$(DEFAULT_RELEASE),' \
+ $(srcdir)/send-pr-el.in \
+ > $@-t
+ mv $@-t $@
+
+send-pr.elc: send-pr.el
+ -PWD=`pwd` emacs -batch -q -f batch-byte-compile send-pr.el
+
+install: $(SEND_PR_INSTALL)
+install-tools: install-norm install-categories
+install-gnats: install-norm install-gnats-dist install-categories
+
+install-norm all-gnats:
+ $(INSTALL_PROGRAM) send-pr $(bindir)/send-pr
+ $(INSTALL_PROGRAM) install-sid $(bindir)/install-sid
+ $(INSTALL_DATA) send-pr.1 $(man1dir)/send-pr.1
+ $(INSTALL_DATA) send-pr.el $(lispdir)/send-pr.el
+ -$(INSTALL_DATA) send-pr.elc $(lispdir)/send-pr.elc
+
+# Install the Cygnus category list for bug reports.
+install-categories:
+ $(INSTALL_DATA) $(srcdir)/categories $(datadir)/gnats/cygnus
+
+install-gnats-dist: info
+ $(INSTALL_DATA) $(srcdir)/COPYING $(datadir)/gnats/dist/COPYING
+ $(INSTALL_DATA) $(srcdir)/README $(datadir)/gnats/dist/README
+ sed -e 's/"DEFAULT_RELEASE") ".*"/"DEFAULT_RELEASE") "@''DEFAULT_RELEASE@"/' \
+ -e 's/"SUBMITTER") ".*"/"SUBMITTER") "@''SUBMITTER@"/' \
+ -e 's/"DATADIR") ".*"/"DATADIR") "@''DATADIR@"/' \
+ send-pr.el > $(datadir)/gnats/dist/send-pr-el.inT
+ mv $(datadir)/gnats/dist/send-pr-el.inT \
+ $(datadir)/gnats/dist/send-pr-el.in
+ sed -e 's/GNATS_ROOT=.*/GNATS_ROOT=/' \
+ -e 's/SUBMITTER=.*/SUBMITTER=@''SUBMITTER@/' \
+ -e 's/DEFAULT_RELEASE=.*/DEFAULT_RELEASE="@''DEFAULT_RELEASE@"/' \
+ -e 's/DEFAULT_ORGANIZATION=.*/DEFAULT_ORGANIZATION=/' \
+ -e 's/DATADIR=.*/DATADIR=@''DATADIR@/' \
+ send-pr > $(datadir)/gnats/dist/send-pr.sh-t
+ mv $(datadir)/gnats/dist/send-pr.sh-t \
+ $(datadir)/gnats/dist/send-pr.sh
+ sed -e 's/^BINDIR=.*/BINDIR=@''BINDIR@/' \
+ install-sid > $(datadir)/gnats/dist/install-sid.sT
+ mv $(datadir)/gnats/dist/install-sid.sT \
+ $(datadir)/gnats/dist/install-sid.sh
+ $(INSTALL_DATA) send-pr.1 $(datadir)/gnats/dist/send-pr.1
+ for i in `if [ ! -f send-pr.info ];then echo $(srcdir)/;fi`send-pr.info* ; do \
+ $(INSTALL_DATA) $$i $(datadir)/gnats/dist/$$i ; \
+ done
+ $(INSTALL_DATA) $(srcdir)/send-pr.texi \
+ $(datadir)/gnats/dist/send-pr.texi
+ $(INSTALL_DATA) $(srcdir)/s-usage.texi \
+ $(datadir)/gnats/dist/s-usage.texi
+ $(INSTALL_DATA) $(srcdir)/categ.texi \
+ $(datadir)/gnats/dist/categ.texi
+ $(INSTALL_DATA) $(srcdir)/fields.texi \
+ $(datadir)/gnats/dist/fields.texi
+ $(INSTALL_DATA) $(srcdir)/states.texi \
+ $(datadir)/gnats/dist/states.texi
+ $(INSTALL_DATA) $(srcdir)/../texinfo/texinfo.tex \
+ $(datadir)/gnats/dist/texinfo.tex
+ @if [ `whoami` = root ] ; then \
+ echo "chown gnats $(datadir)/gnats/dist" ; \
+ chown gnats $(datadir)/gnats/dist ; \
+ elif [ `whoami` != gnats ] ; then \
+ echo "*** Warning: $(datadir)/gnats must be writable by the gnats user" ; \
+ fi
+
+install-info: send-pr.info
+ for i in send-pr.info* ; do \
+ $(INSTALL_DATA) $$i $(infodir)/$$i ; \
+ done
+
+uninstall:
+ -rm -f $(bindir)/send-pr $(bindir)/install-sid
+ -rm -f $(datadir)/gnats/$(GNATS_SITE)
+ -[ x$$GNATS_ROOT = x ] || rm -rf $(datadir)/gnats/dist
+ -rmdir $(datadir)/gnats
+ -rm -f $(man1dir)/send-pr.1
+ -rm -f $(lispdir)/send-pr.el $(lispdir)/send-pr.elc
+ -rm -f $(infodir)/send-pr.info*
+
+TAGS:
+
+info: send-pr.info
+dvi: send-pr.dvi
+
+version.texi: Makefile
+ echo "@set VERSION $(VERSION)" > $@-t
+ mv $@-t $@
+
+send-pr.1: Makefile
+ sed -e 's,xGNATS_ROOTx,$(GNATS_ROOT),g' \
+ -e 's,xVERSIONx,$(VERSION),g' $(srcdir)/send-pr.man > $@-t
+ mv $@-t $@
+
+send-pr.info: send-pr.texi version.texi fields.texi s-usage.texi categ.texi
+ $(MAKEINFO) -I $(srcdir) -o send-pr.info $(srcdir)/send-pr.texi
+
+send-pr.dvi: version.texi
+ $(TEXI2DVI) $(srcdir)/send-pr.texi
+
+# When building GNATS, this target is used to communicate information
+# known only to the GNATS configuration.
+gnats-build: stamp-gnats
+
+stamp-gnats: ../gnats/Makefile Makefile
+ sed -e 's,^GNATS_ROOT =.*,GNATS_ROOT = $(GNATS_ROOT),' \
+ -e 's,^GNATS_ADDR =.*,GNATS_ADDR = $(GNATS_ADDR),' \
+ -e 's,^GNATS_SITE =.*,GNATS_SITE = $(GNATS_SITE),' \
+ -e 's,^DEFAULT_RELEASE =.*,DEFAULT_RELEASE = $(DEFAULT_RELEASE),' \
+ -e 's%^DEFAULT_ORGANIZATION =.*%DEFAULT_ORGANIZATION = $(DEFAULT_ORGANIZATION)%' \
+ -e 's,^SUBMITTER =.*,SUBMITTER = $(SUBMITTER),' \
+ -e 's,^VERSION =.*,VERSION = $(VERSION),' \
+ -e 's,^MAIL_AGENT =.*,MAIL_AGENT = $(MAIL_AGENT),' \
+ -e 's,^SEND_PR_INSTALL =.*,SEND_PR_INSTALL = $(GNATS_INSTALL),' \
+ Makefile > Makefile.tmp \
+ && mv Makefile.tmp Makefile \
+ && touch stamp-gnats
+
+# Clean things up.
+
+clean: mostlyclean
+ -rm -f send-pr install-sid send-pr.1 send-pr.el send-pr.elc stamp-gnats
+ -rm -f *.dvi
+
+mostlyclean:
+ -rm -f *.toc *.log *.vr *.fn *.cp *.tp *.ky *.pg
+
+distclean: clean
+ -rm -f Makefile config.status
+ -rm -rf =* ./"#"* *~*
+ -rm -f *.orig *.rej
+
+realclean: distclean
+ -rm -f TAGS send-pr.info* send-pr.??s version.texi
+
+# FIXME
+dist:
+ echo need to do something for dist
+
+check:
+installcheck:
+
+# Prevent GNU make v3 from overflowing arg limit on SysV.
+.NOEXPORT:
+
+Makefile: $(srcdir)/Makefile.in
+ $(SHELL) config.status; \
+ if [ -f ../gnats/Makefile ]; then cd ../gnats; $(MAKE) config-send-pr; fi
diff --git a/gnu/usr.bin/send-pr/README b/gnu/usr.bin/send-pr/README
new file mode 100644
index 00000000000..b479179555f
--- /dev/null
+++ b/gnu/usr.bin/send-pr/README
@@ -0,0 +1,43 @@
+ send-pr - sends bug reports to a central support site
+
+`send-pr' uses electronic mail to submit support questions and
+software bugs to a central site. No piece of software is perfect, and
+software organizations understand this `send-pr' is designed to allow
+users who have problems to submit reports of these problems to sites
+responsible for supporting the software in question, in a defined form
+which can be read by an electronically managed database.
+
+`send-pr' is part of a suite of programs known collectively as GNATS,
+an acronym for Problem Report Management System. GNATS consists of
+several programs which, used in concert, formulate and partially
+administer a database of Problem Reports, or PRs, at a central support
+site. A PR goes through several states in its lifetime; GNATS tracks
+the PR and all information associated with it through each state and
+finally acts as an archive for PRs which have been resolved.
+
+The same engine can be used to submit bugs to any number of support
+sites by setting up aliases for each of them; `send-pr' error-checks
+each PR as it is sent to be sure that the category specified matches a
+category supported by the site in question.
+
+`send-pr' invokes an editor on a problem report template (after trying
+to fill in some fields with reasonable default values). When you exit
+the editor, `send-pr' sends the completed form to the support site.
+At the support site, the PR is assigned a unique number and is stored
+in the GNATS database according to its category and customer-id. GNATS
+automatically replies with an acknowledgement, citing the category and
+the PR number.
+
+See the Texinfo file `send-pr.texi' or the Info file `send-pr.info'
+for detailed installation and usage information.
+
+See the file MANIFEST for a list of the files which should have
+accompanied this distribution.
+
+See `send-pr.texi', `send-pr.info', or the file INSTALL for the
+installation procedure for `send-pr'.
+
+
+Copyright (c) 1993, Free Software Foundation, Inc.
+See the file COPYING for copyright information concerning this
+distribution and all its components.
diff --git a/gnu/usr.bin/send-pr/aclocal.m4 b/gnu/usr.bin/send-pr/aclocal.m4
new file mode 100644
index 00000000000..5f94d209116
--- /dev/null
+++ b/gnu/usr.bin/send-pr/aclocal.m4
@@ -0,0 +1,68 @@
+define([AC_FIND_PROGRAM],dnl
+[if test x$3 = x; then _PATH=$PATH; else _PATH=$3; fi
+if test -z "[$]$1"; then
+ # Extract the first word of `$2', so it can be a program name with args.
+ set dummy $2; word=[$]2
+ echo checking for $word
+ IFS="${IFS= }"; saveifs="$IFS"; IFS="${IFS}:"
+ for dir in $_PATH; do
+ test -z "$dir" && dir=.
+ if test -f $dir/$word; then
+ $1=$dir/$word
+ break
+ fi
+ done
+ IFS="$saveifs"
+fi
+test -n "[$]$1" && test -n "$verbose" && echo " setting $1 to [$]$1"
+AC_SUBST($1)dnl
+])dnl
+dnl
+define([AC_ECHON],dnl
+[echo checking for echo -n
+if test "`echo -n foo`" = foo ; then
+ ECHON=bsd
+ test -n "$verbose" && echo ' using echo -n'
+elif test "`echo 'foo\c'`" = foo ; then
+ ECHON=sysv
+ test -n "$verbose" && echo ' using echo ...\\c'
+else
+ ECHON=none
+ test -n "$verbose" && echo ' using plain echo'
+fi])dnl
+dnl
+define([AC_LISPDIR],dnl
+[echo checking for Emacs Lisp files
+if test -n "$with_lispdir"; then
+ LISPDIR=${with_lispdir}
+else
+ for f in ${prefix-/usr/local}/lib/emacs/site-lisp \
+ ${prefix-/usr/local}/lib/emacs/lisp; do
+ if test -d $f; then
+ LISPDIR=$f
+ break
+ fi
+ done
+fi
+if test -z "$LISPDIR"; then
+dnl # Change this default when Emacs 19 has been around for a while
+ LISPDIR='$(prefix)/lib/emacs/lisp'
+fi
+test -n "$verbose" && echo " setting LISPDIR to ${LISPDIR}"
+AC_SUBST(LISPDIR)dnl
+])dnl
+dnl
+define([AC_PASSWD],dnl
+[echo checking how to access passwd database
+PASSWD="cat /etc/passwd"
+if test -f /bin/domainname && test -n "`/bin/domainname`"; then
+ if test -f /usr/bin/niscat &&
+ /usr/bin/niscat passwd.org_dir > /dev/null 2>&1; then
+ PASSWD="/usr/bin/niscat passwd.org_dir"
+ elif test -f /usr/bin/ypcat && /usr/bin/ypcat passwd > /dev/null 2>&1; then
+ PASSWD="/usr/bin/ypcat passwd"
+ fi
+fi
+test -n "$verbose" && echo " setting PASSWD to ${PASSWD}"
+AC_SUBST(PASSWD)dnl
+])dnl
diff --git a/gnu/usr.bin/send-pr/categ.texi b/gnu/usr.bin/send-pr/categ.texi
new file mode 100644
index 00000000000..b02243e1a02
--- /dev/null
+++ b/gnu/usr.bin/send-pr/categ.texi
@@ -0,0 +1,123 @@
+@node Valid Categories
+@unnumberedsec Valid Categories
+@cindex valid categories
+@cindex example of a list of valid categories
+
+@table @code
+@item bfd
+@sc{gnu} binary file descriptor library.
+
+@item bifrabulator
+This one doesn't actually exist.
+
+@item binutils
+@sc{gnu} utilities for binary files (@code{ar}, @code{nm}, @code{size}@dots{}).
+
+@item bison
+@sc{gnu} parser generator.
+
+@item byacc
+Free parser generator.
+
+@item config
+Cygnus Support Software configuration and installation.
+
+@item cvs
+Concurrent Version System.
+
+@item diff
+@sc{gnu} @code{diff} program.
+
+@item doc
+Documentation and manuals.
+
+@item emacs
+@sc{gnu} Emacs editor and related functions.
+
+@item flex
+@sc{gnu} lexical analyzer.
+
+@item g++
+@sc{gnu} C++ compiler.
+
+@item gas
+@sc{gnu} assembler.
+
+@item gcc
+@sc{gnu} C compiler.
+
+@item gdb
+@sc{gnu} source code debugger.
+
+@item glob
+The filename globbing functions.
+
+@item gprof
+@sc{gnu} profiler.
+
+@item grep
+@sc{gnu} @code{grep} program.
+
+@item info
+@sc{gnu} @code{info} hypertext reader.
+
+@item ispell
+@sc{gnu} spelling checker.
+
+@item kerberos
+Kerberos authentication system.
+
+@item ld
+@sc{gnu} linker.
+
+@item libc
+Cygnus Support C Support Library.
+
+@item libg++
+@sc{gnu} C++ class library.
+
+@item libiberty
+@sc{gnu} @samp{libiberty} library.
+
+@item libm
+Cygnus Support C Math Library.
+
+@item make
+@sc{gnu} @code{make} program.
+
+@item makeinfo
+@sc{gnu} utility to build Info files from Texinfo documents.
+
+@item mas
+@sc{gnu} Motorola syntax assembler.
+
+@item newlib
+Cygnus Support C Support and Math Libraries.
+
+@item patch
+@sc{gnu} bug patch program.
+
+@item gnats
+@sc{gnu} Problem Report Management System.
+
+@item rcs
+Revision Control System.
+
+@item readline
+@sc{gnu} @code{readline} library.
+
+@item send-pr
+@sc{gnu} Problem Report submitting program.
+
+@item test
+Category to use when testing @code{send-pr}.
+
+@item texindex
+@sc{gnu} documentation indexing utility.
+
+@item texinfo
+@sc{gnu} documentation macros.
+
+@item other
+Anything which is not covered by the above categories.
+@end table
diff --git a/gnu/usr.bin/send-pr/configure b/gnu/usr.bin/send-pr/configure
new file mode 100755
index 00000000000..c52bf141010
--- /dev/null
+++ b/gnu/usr.bin/send-pr/configure
@@ -0,0 +1,363 @@
+#!/bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated automatically using autoconf.
+# Copyright (C) 1991, 1992, 1993 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+# Usage: configure [--srcdir=DIR] [--host=HOST] [--gas] [--nfp]
+# [--prefix=PREFIX] [--exec-prefix=PREFIX] [--with-PACKAGE[=VALUE]]
+# Ignores all args except --srcdir, --prefix, --exec-prefix, and
+# --with-PACKAGE[=VALUE] unless this script has special code to handle it.
+
+for arg
+do
+ # Handle --exec-prefix with a space before the argument.
+ if test x$next_exec_prefix = xyes; then exec_prefix=$arg; next_exec_prefix=
+ # Handle --host with a space before the argument.
+ elif test x$next_host = xyes; then next_host=
+ # Handle --prefix with a space before the argument.
+ elif test x$next_prefix = xyes; then prefix=$arg; next_prefix=
+ # Handle --srcdir with a space before the argument.
+ elif test x$next_srcdir = xyes; then srcdir=$arg; next_srcdir=
+ else
+ case $arg in
+ # For backward compatibility, recognize -exec-prefix and --exec_prefix.
+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* | --exec=* | --exe=* | --ex=* | --e=*)
+ exec_prefix=`echo $arg | sed 's/[-a-z_]*=//'` ;;
+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- | --exec | --exe | --ex | --e)
+ next_exec_prefix=yes ;;
+
+ -gas | --gas | --ga | --g) ;;
+
+ -host=* | --host=* | --hos=* | --ho=* | --h=*) ;;
+ -host | --host | --hos | --ho | --h)
+ next_host=yes ;;
+
+ -nfp | --nfp | --nf) ;;
+
+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+ prefix=`echo $arg | sed 's/[-a-z_]*=//'` ;;
+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+ next_prefix=yes ;;
+
+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=* | --s=*)
+ srcdir=`echo $arg | sed 's/[-a-z_]*=//'` ;;
+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr | --s)
+ next_srcdir=yes ;;
+
+ -with-* | --with-*)
+ package=`echo $arg|sed -e 's/-*with-//' -e 's/=.*//'`
+ # Reject names that aren't valid shell variable names.
+ if test -n "`echo $package| sed 's/[-a-zA-Z0-9_]//g'`"; then
+ echo "configure: $package: invalid package name" >&2; exit 1
+ fi
+ package=`echo $package| sed 's/-/_/g'`
+ case "$arg" in
+ *=*) val="`echo $arg|sed 's/[^=]*=//'`" ;;
+ *) val=1 ;;
+ esac
+ eval "with_$package='$val'" ;;
+
+ -v | -verbose | --verbose | --verbos | --verbo | --verb | --ver | --ve | --v)
+ verbose=yes ;;
+
+ *) ;;
+ esac
+ fi
+done
+
+trap 'rm -fr conftest* confdefs* core; exit 1' 1 3 15
+trap 'rm -f confdefs*' 0
+
+# NLS nuisances.
+# These must not be set unconditionally because not all systems understand
+# e.g. LANG=C (notably SCO).
+if test "${LC_ALL+set}" = 'set' ; then LC_ALL=C; export LC_ALL; fi
+if test "${LANG+set}" = 'set' ; then LANG=C; export LANG; fi
+
+rm -f conftest* confdefs.h
+# AIX cpp loses on an empty file, so make sure it contains at least a newline.
+echo > confdefs.h
+compile='${CC-cc} $CFLAGS conftest.c -o conftest $LIBS >/dev/null 2>&1'
+
+# A filename unique to this package, relative to the directory that
+# configure is in, which we can look for to find out if srcdir is correct.
+unique_file=send-pr.sh
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+ srcdirdefaulted=yes
+ # Try the directory containing this script, then `..'.
+ prog=$0
+ confdir=`echo $prog|sed 's%/[^/][^/]*$%%'`
+ test "X$confdir" = "X$prog" && confdir=.
+ srcdir=$confdir
+ if test ! -r $srcdir/$unique_file; then
+ srcdir=..
+ fi
+fi
+if test ! -r $srcdir/$unique_file; then
+ if test x$srcdirdefaulted = xyes; then
+ echo "configure: Can not find sources in \`${confdir}' or \`..'." 1>&2
+ else
+ echo "configure: Can not find sources in \`${srcdir}'." 1>&2
+ fi
+ exit 1
+fi
+# Preserve a srcdir of `.' to avoid automounter screwups with pwd.
+# But we can't avoid them for `..', to make subdirectories work.
+case $srcdir in
+ .|/*|~*) ;;
+ *) srcdir=`cd $srcdir; pwd` ;; # Make relative path absolute.
+esac
+
+
+# Save the original args to write them into config.status later.
+configure_args="$*"
+
+
+
+echo checking for echo -n
+if test "`echo -n foo`" = foo ; then
+ ECHON=bsd
+ test -n "$verbose" && echo ' using echo -n'
+elif test "`echo 'foo\c'`" = foo ; then
+ ECHON=sysv
+ test -n "$verbose" && echo ' using echo ...\\c'
+else
+ ECHON=none
+ test -n "$verbose" && echo ' using plain echo'
+fi
+echo checking for Emacs Lisp files
+if test -n "$with_lispdir"; then
+ LISPDIR=${with_lispdir}
+else
+ for f in ${prefix}/lib/emacs/site-lisp ${prefix}/lib/emacs/lisp; do
+ if test -d $f; then
+ LISPDIR=$f
+ break
+ fi
+ done
+fi
+if test -z "$LISPDIR"; then
+ LISPDIR=${prefix-/usr/local}/lib/emacs/lisp
+fi
+test -n "$verbose" && echo " setting LISPDIR to ${LISPDIR}"
+
+echo checking how to access passwd database
+PASSWD="cat /etc/passwd"
+if test -f /bin/domainname && test -n "`/bin/domainname`"; then
+ if test -f /usr/bin/niscat &&
+ /usr/bin/niscat passwd.org_dir > /dev/null 2>&1; then
+ PASSWD="/usr/bin/niscat passwd.org_dir"
+ elif test -f /usr/bin/ypcat && /usr/bin/ypcat passwd > /dev/null 2>&1; then
+ PASSWD="/usr/bin/ypcat passwd"
+ fi
+fi
+test -n "$verbose" && echo " setting PASSWD to ${PASSWD}"
+
+
+GNATS_SITE=sun-lamp
+SUBMITTER=net
+GNATS_ADDR=gnats-bugs@sun-lamp.cs.berkeley.edu
+DEFAULT_ORGANIZATION=
+
+if test x/usr/lib:/usr/sbin:/usr/ucblib = x; then _PATH=$PATH; else _PATH=/usr/lib:/usr/sbin:/usr/ucblib; fi
+if test -z "$SENDMAIL"; then
+ # Extract the first word of `sendmail', so it can be a program name with args.
+ set dummy sendmail; word=$2
+ echo checking for $word
+ IFS="${IFS= }"; saveifs="$IFS"; IFS="${IFS}:"
+ for dir in $_PATH; do
+ test -z "$dir" && dir=.
+ if test -f $dir/$word; then
+ SENDMAIL=$dir/$word
+ break
+ fi
+ done
+ IFS="$saveifs"
+fi
+test -n "$SENDMAIL" && test -n "$verbose" && echo " setting SENDMAIL to $SENDMAIL"
+
+if test -n "$SENDMAIL" ; then
+ MAIL_AGENT="$SENDMAIL -oi -t"
+else
+ MAIL_AGENT=false
+fi
+
+if test -f ${srcdir}/../release-info ; then
+ DEFAULT_RELEASE=`. ${srcdir}/../release-info ; echo ${RELEASE_TAG}`
+else
+ DEFAULT_RELEASE='gnats-$(VERSION)'
+fi
+
+# Get GNATS_ROOT from environment, if possible
+
+if test -n "$with_gnats_root"; then
+ GNATS_ROOT=$with_gnats_root
+fi
+
+if test -z "${GNATS_ROOT}"; then
+ GNATS_ROOT=${prefix-/usr/local}/lib/gnats/gnats-root
+ _PR=${GNATS_ROOT}
+fi
+
+if test x = x; then _PATH=$PATH; else _PATH=; fi
+if test -z "$SEND_PR"; then
+ # Extract the first word of `send-pr', so it can be a program name with args.
+ set dummy send-pr; word=$2
+ echo checking for $word
+ IFS="${IFS= }"; saveifs="$IFS"; IFS="${IFS}:"
+ for dir in $_PATH; do
+ test -z "$dir" && dir=.
+ if test -f $dir/$word; then
+ SEND_PR=$dir/$word
+ break
+ fi
+ done
+ IFS="$saveifs"
+fi
+test -n "$SEND_PR" && test -n "$verbose" && echo " setting SEND_PR to $SEND_PR"
+
+if test -n "${SEND_PR}"; then
+ test -n "${_PR}" && eval `grep '^GNATS_ROOT=' ${SEND_PR}`
+ eval `grep '^SUBMITTER=' ${SEND_PR}`
+ eval `egrep '^GNATS_(ADDR|SITE)=' ${SEND_PR}`
+ eval `egrep '^DEFAULT_ORGANIZATION=' ${SEND_PR}`
+fi
+
+# If the config file exists, it may have more recent info than send-pr
+echo checking for GNATS configuration file
+test -f ${GNATS_ROOT}/gnats-adm/config && . ${GNATS_ROOT}/gnats-adm/config
+
+if test -n "${_PR}" -a "${GNATS_ROOT}" = "${_PR}"; then
+ GNATS_ROOT=
+fi
+
+if test -n "$verbose"; then
+ echo " setting GNATS_ROOT to $GNATS_ROOT"
+ echo " setting GNATS_SITE to $GNATS_SITE"
+ echo " setting GNATS_ADDR to $GNATS_ADDR"
+ echo " setting SUBMITTER to $SUBMITTER"
+ echo " setting DEFAULT_RELEASE to $DEFAULT_RELEASE"
+ echo " setting DEFAULT_ORGANIZATION to $DEFAULT_ORGANIZATION"
+ echo " setting MAIL_AGENT to $MAIL_AGENT"
+fi
+
+# Set default prefixes.
+if test -n "$prefix"; then
+ test -z "$exec_prefix" && exec_prefix='${prefix}'
+ prsub="s%^prefix\\([ ]*\\)=\\([ ]*\\).*$%prefix\\1=\\2$prefix%"
+fi
+if test -n "$exec_prefix"; then
+ prsub="$prsub
+s%^exec_prefix\\([ ]*\\)=\\([ ]*\\).*$%exec_prefix\\1=\\2$exec_prefix%"
+fi
+# Quote sed substitution magic chars in DEFS.
+cat >conftest.def <<EOF
+$DEFS
+EOF
+escape_ampersand_and_backslash='s%[&\\]%\\&%g'
+DEFS=`sed "$escape_ampersand_and_backslash" <conftest.def`
+rm -f conftest.def
+# Substitute for predefined variables.
+
+trap 'rm -f config.status; exit 1' 1 3 15
+echo creating config.status
+rm -f config.status
+cat > config.status <<EOF
+#!/bin/sh
+# Generated automatically by configure.
+# Run this file to recreate the current configuration.
+# This directory was configured as follows,
+# on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+#
+# $0 $configure_args
+
+for arg
+do
+ case "\$arg" in
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ echo running \${CONFIG_SHELL-/bin/sh} $0 $configure_args
+ exec \${CONFIG_SHELL-/bin/sh} $0 $configure_args ;;
+ *) echo "Usage: config.status --recheck" 2>&1; exit 1 ;;
+ esac
+done
+
+trap 'rm -f Makefile; exit 1' 1 3 15
+GNATS_ROOT='$GNATS_ROOT'
+GNATS_ADDR='$GNATS_ADDR'
+GNATS_SITE='$GNATS_SITE'
+DEFAULT_RELEASE='$DEFAULT_RELEASE'
+DEFAULT_ORGANIZATION='$DEFAULT_ORGANIZATION'
+MAIL_AGENT='$MAIL_AGENT'
+SUBMITTER='$SUBMITTER'
+ECHON='$ECHON'
+LISPDIR='$LISPDIR'
+PASSWD='$PASSWD'
+SENDMAIL='$SENDMAIL'
+SEND_PR='$SEND_PR'
+LIBS='$LIBS'
+srcdir='$srcdir'
+DEFS='$DEFS'
+prefix='$prefix'
+exec_prefix='$exec_prefix'
+prsub='$prsub'
+extrasub='$extrasub'
+EOF
+cat >> config.status <<\EOF
+
+top_srcdir=$srcdir
+
+CONFIG_FILES=${CONFIG_FILES-"Makefile"}
+for file in .. ${CONFIG_FILES}; do if test "x$file" != x..; then
+ srcdir=$top_srcdir
+ # Remove last slash and all that follows it. Not all systems have dirname.
+ dir=`echo $file|sed 's%/[^/][^/]*$%%'`
+ if test "$dir" != "$file"; then
+ test "$top_srcdir" != . && srcdir=$top_srcdir/$dir
+ test ! -d $dir && mkdir $dir
+ fi
+ echo creating $file
+ rm -f $file
+ echo "# Generated automatically from `echo $file|sed 's|.*/||'`.in by configure." > $file
+ sed -e "
+$prsub
+$extrasub
+s%@GNATS_ROOT@%$GNATS_ROOT%g
+s%@GNATS_ADDR@%$GNATS_ADDR%g
+s%@GNATS_SITE@%$GNATS_SITE%g
+s%@DEFAULT_RELEASE@%$DEFAULT_RELEASE%g
+s%@DEFAULT_ORGANIZATION@%$DEFAULT_ORGANIZATION%g
+s%@MAIL_AGENT@%$MAIL_AGENT%g
+s%@SUBMITTER@%$SUBMITTER%g
+s%@ECHON@%$ECHON%g
+s%@LISPDIR@%$LISPDIR%g
+s%@PASSWD@%$PASSWD%g
+s%@SENDMAIL@%$SENDMAIL%g
+s%@SEND_PR@%$SEND_PR%g
+s%@LIBS@%$LIBS%g
+s%@srcdir@%$srcdir%g
+s%@DEFS@%$DEFS%
+" $top_srcdir/${file}.in >> $file
+fi; done
+
+
+exit 0
+EOF
+chmod +x config.status
+${CONFIG_SHELL-/bin/sh} config.status
+
diff --git a/gnu/usr.bin/send-pr/configure.in b/gnu/usr.bin/send-pr/configure.in
new file mode 100644
index 00000000000..3c95af2d260
--- /dev/null
+++ b/gnu/usr.bin/send-pr/configure.in
@@ -0,0 +1,71 @@
+AC_INIT(send-pr.sh)
+
+AC_SUBST(GNATS_ROOT)dnl
+AC_SUBST(GNATS_ADDR)dnl
+AC_SUBST(GNATS_SITE)dnl
+AC_SUBST(DEFAULT_RELEASE)dnl
+AC_SUBST(DEFAULT_ORGANIZATION)dnl
+AC_SUBST(MAIL_AGENT)dnl
+AC_SUBST(SUBMITTER)dnl
+AC_SUBST(ECHON)dnl
+
+AC_ECHON
+AC_LISPDIR
+AC_PASSWD
+
+GNATS_SITE=cygnus
+SUBMITTER=unknown
+GNATS_ADDR=bugs@cygnus.com
+DEFAULT_ORGANIZATION=
+
+AC_FIND_PROGRAM(SENDMAIL,sendmail,/usr/lib:/usr/sbin:/usr/ucblib)
+if test -n "$SENDMAIL" ; then
+ MAIL_AGENT="$SENDMAIL -oi -t"
+else
+ MAIL_AGENT=false
+fi
+
+if test -f ${srcdir}/../release-info ; then
+ DEFAULT_RELEASE=`. ${srcdir}/../release-info ; echo ${RELEASE_TAG}`
+else
+ DEFAULT_RELEASE='gnats-$(VERSION)'
+fi
+
+# Get GNATS_ROOT from environment, if possible
+
+if test -n "$with_gnats_root"; then
+ GNATS_ROOT=$with_gnats_root
+fi
+
+if test -z "${GNATS_ROOT}"; then
+ GNATS_ROOT=${prefix-/usr/local}/lib/gnats/gnats-root
+ _PR=${GNATS_ROOT}
+fi
+
+AC_FIND_PROGRAM(SEND_PR,send-pr)
+if test -n "${SEND_PR}"; then
+ test -n "${_PR}" && eval `grep '^GNATS_ROOT=' ${SEND_PR}`
+ eval `grep '^SUBMITTER=' ${SEND_PR}`
+ eval `egrep '^GNATS_(ADDR|SITE)=' ${SEND_PR}`
+ eval `egrep '^DEFAULT_ORGANIZATION=' ${SEND_PR}`
+fi
+
+# If the config file exists, it may have more recent info than send-pr
+echo checking for GNATS configuration file
+test -f ${GNATS_ROOT}/gnats-adm/config && . ${GNATS_ROOT}/gnats-adm/config
+
+if test -n "${_PR}" -a "${GNATS_ROOT}" = "${_PR}"; then
+ GNATS_ROOT=
+fi
+
+if test -n "$verbose"; then
+ echo " setting GNATS_ROOT to $GNATS_ROOT"
+ echo " setting GNATS_SITE to $GNATS_SITE"
+ echo " setting GNATS_ADDR to $GNATS_ADDR"
+ echo " setting SUBMITTER to $SUBMITTER"
+ echo " setting DEFAULT_RELEASE to $DEFAULT_RELEASE"
+ echo " setting DEFAULT_ORGANIZATION to $DEFAULT_ORGANIZATION"
+ echo " setting MAIL_AGENT to $MAIL_AGENT"
+fi
+
+AC_OUTPUT(Makefile)
diff --git a/gnu/usr.bin/send-pr/fields.texi b/gnu/usr.bin/send-pr/fields.texi
new file mode 100644
index 00000000000..e8921d625c8
--- /dev/null
+++ b/gnu/usr.bin/send-pr/fields.texi
@@ -0,0 +1,518 @@
+@node Fields
+@section Problem Report format
+@cindex Problem Report format
+@cindex format
+@cindex database similarities
+@cindex fields
+
+The format of a PR is designed to reflect the nature of @sc{gnats} as a
+database. Information is arranged into @dfn{fields}, and kept in
+individual records (Problem Reports).
+
+Problem Report fields are denoted by a keyword which begins with
+@samp{>} and ends with @samp{:}, as in @samp{>Confidential:}. Fields
+belong to one of three data types:
+
+@table @asis
+@cindex Problem Report data types
+@cindex @emph{Enumerated} data types
+@item @sc{Enumerated}
+One of a specific set of values, which vary according to the field. The
+value for each keyword must be on the same line as the keyword. These
+values are not configurable (yet).
+
+@ifset SENDPR
+For each @sc{Enumerated} keyword, the possible choices are listed in the
+@code{send-pr} template as a comment.
+@end ifset
+The following fields are @sc{Enumerated} format; see the descriptions of
+fields below for explanations of each field in detail:
+
+@smallexample
+@group
+>Confidential: >Severity: >Priority:
+>Class: >State: >Number:
+@end group
+@end smallexample
+
+@cindex @emph{Text} data types
+@item @sc{Text}
+One single line of text which must begin and end on the same line (i.e.,
+before a newline) as the keyword. See the descriptions of fields below
+for explanations of each field in detail. The following fields are
+@sc{Text} format:
+
+@smallexample
+@group
+>Submitter-Id: >Originator: >Synopsis:
+>Category: >Release: >Responsible:
+>Arrival-Date:
+@end group
+@end smallexample
+
+@cindex @emph{MultiText} data types
+@item @sc{MultiText}
+Text of any length may occur in this field. @sc{MultiText} may span
+multiple lines and may also include blank lines. A @sc{MultiText} field
+ends only when another keyword appears. See the descriptions of fields
+below for explanations of each field in detail.
+
+The following fields are @sc{MultiText} format:
+
+@smallexample
+@group
+>Organization: >Environment: >Description:
+>How-To-Repeat: >Fix: >Audit-Trail:
+>Unformatted:
+@end group
+@end smallexample
+
+@end table
+
+A Problem Report contains two different types of fields: @dfn{Mail
+Header} fields, which are used by the mail handler for delivery, and
+@dfn{Problem Report} fields, which contain information relevant to the
+Problem Report and its submitter. A Problem Report is essentially a
+specially formatted electronic mail message.
+
+@ifclear SENDPR
+@subheading Example Problem Report
+@end ifclear
+
+The following is an example Problem Report. Mail headers are at the
+top, followed by @sc{gnats} fields, which begin with @samp{>} and end
+with @samp{:}. The @samp{Subject:} line in the mail header and the
+@samp{>Synopsis:} field are usually duplicates of each other.
+
+@cindex sample Problem Report
+@cindex example Problem Report
+@cindex Problem Report template
+@cartouche
+@smallexample
+@group
+Message-Id: @var{message-id}
+Date: @var{date}
+From: @var{address}
+Reply-To: @var{address}
+To: @var{bug-address}
+Subject: @var{subject}
+
+>Number: @var{gnats-id}
+>Category: @var{category}
+>Synopsis: @var{synopsis}
+>Confidential: yes @emph{or} no
+>Severity: critical, serious, @emph{or} non-critical
+>Priority: high, medium @emph{or} low
+>Responsible: @var{responsible}
+>State: open, analyzed, suspended, feedback, @emph{or} closed
+>Class: sw-bug, doc-bug, change-request, support,
+@ifset SENDPR
+@emph{or} duplicate
+@end ifset
+@ifclear SENDPR
+duplicate, @emph{or} mistaken
+@end ifclear
+>Submitter-Id: @var{submitter-id}
+>Arrival-Date: @var{date}
+>Originator: @var{name}
+>Organization: @var{organization}
+>Release: @var{release}
+>Environment:
+ @var{environment}
+>Description:
+ @var{description}
+>How-To-Repeat:
+ @var{how-to-repeat}
+>Fix:
+ @var{fix}
+>Audit-Trail:
+@var{appended-messages@dots{}}
+State-Changed-From-To: @var{from}-@var{to}
+State-Changed-When: @var{date}
+State-Changed-Why:
+ @var{reason}
+Responsible-Changed-From-To: @var{from}-@var{to}
+Responsible-Changed-When: @var{date}
+Responsible-Changed-Why:
+ @var{reason}
+>Unformatted:
+ @var{miscellaneous}
+@end group
+@end smallexample
+@end cartouche
+
+@menu
+* Mail header fields::
+* Problem Report fields::
+@end menu
+
+@c ----------------------
+@node Mail header fields
+@subsection Mail header fields
+@cindex mail header fields
+@cindex Internet standard RFC-822
+
+A Problem Report may contain any mail header field described in the
+Internet standard RFC-822. However, only the fields which identify the
+sender and the subject are required by @code{send-pr}:
+
+@table @code
+@cindex @code{To:} header
+@item To:
+The preconfigured mail address for the Support Site where the PR is to
+be sent, automatically supplied by @code{send-pr}.
+
+@cindex @code{Subject:} header
+@item Subject:
+A terse description of the problem. This field normally contains the
+same information as the @samp{>Synopsis:} field.
+
+@cindex @code{From:} header
+@item From:
+Usually supplied automatically by the originator's mailer; should
+contain the originator's electronic mail address.
+
+@cindex @code{Reply-To:} header
+@item Reply-To:
+A return address to which electronic replies can be sent; in most cases,
+the same address as the @code{From:} field.
+@end table
+
+@ifclear SENDPR
+@cindex @code{Received-By:} headers
+One of the configurable options for @sc{gnats} is whether or not to
+retain @w{@samp{Received-By:}} headers, which often consume a lot of
+space and are not often used. @xref{Local configuration,,Changing your
+local configuration}.
+@end ifclear
+
+@c ----------------------
+@node Problem Report fields
+@subsection Problem Report fields
+@cindex GNATS database fields
+@cindex field format
+
+@c FIXME - this node is loooooooooooooooong...
+
+@subheading Field descriptions
+
+The following fields are present whenever a PR is submitted via the
+program @code{send-pr}. @sc{gnats} adds additional fields when the PR
+arrives at the Support Site; explanations of these follow this list.
+
+@cindex fields - list
+@cindex GNATS fields - list
+@table @code
+@item >Submitter-Id:
+@cindex @code{Submitter-Id} field
+@cindex @code{>Submitter-Id:}
+(@sc{Text}) A unique identification code assigned by the Support Site.
+It is used to identify all Problem Reports coming from a particular
+site. (Submitters without a value for this field can invoke
+@code{send-pr} with the @samp{--request-id} option to apply for one from
+the support organization. Problem Reports from those not affiliated
+with the support organization should use the default value of @samp{net}
+for this field.)
+
+@item >Originator:
+@cindex @code{Originator} field
+@cindex @code{>Originator:}
+(@sc{Text}) Originator's real name. The default is the value of the
+originator's environment variable @code{NAME}.
+
+@item >Organization:
+@cindex @code{>Organization:}
+@cindex @code{Organization} field
+(@sc{MultiText}) The originator's organization. The default value is
+set with the variable @w{@code{DEFAULT_ORGANIZATION}} in the
+@ifclear SENDPR
+@file{config} file (@pxref{config,,The @code{config} file}).
+@end ifclear
+@ifset SENDPR
+@code{send-pr} shell script.
+@end ifset
+
+@item >Confidential:
+@cindex @code{Confidential} field
+@cindex @code{>Confidential:}
+@cindex confidentiality in PRs
+@cindex PR confidentiality
+(@sc{Enumerated}) Use of this field depends on the originator's
+relationship with the support organization; contractual agreements often
+have provisions for preserving confidentiality. Conversely, a lack of a
+contract often means that any data provided will not be considered
+confidential. Submitters should be advised to contact the support
+organization directly if this is an issue.
+
+If the originator's relationship to the support organization provides
+for confidentiality, then if the value of this field is @samp{yes} the
+support organization treats the PR as confidential; any code samples
+provided are not made publicly available (e.g., in regression test
+suites). The default value is @samp{yes}.
+
+@item >Synopsis:
+@cindex @code{Synopsis} field
+@cindex @code{>Synopsis:}
+(@sc{Text}) One-line summary of the problem. @w{@code{send-pr}} copies
+this information to the @samp{Subject:} line when you submit a Problem
+Report.
+
+@item >Severity:
+@cindex @code{Severity} field
+@cindex @code{>Severity:}
+(@sc{Enumerated}) The severity of the problem. Accepted values include:
+
+@table @code
+@cindex @emph{critical} severity problems
+@item critical
+The product, component or concept is completely non-operational or some
+essential functionality is missing. No workaround is known.
+
+@cindex @emph{serious} severity problems
+@item serious
+The product, component or concept is not working properly or significant
+functionality is missing. Problems that would otherwise be considered
+@samp{critical} are rated @samp{serious} when a workaround is known.
+
+@cindex @emph{non-critical} severity problems
+@item non-critical
+The product, component or concept is working in general, but lacks
+features, has irritating behavior, does something wrong, or doesn't
+match its documentation.
+@end table
+The default value is @samp{serious}.
+@sp 1
+
+@item >Priority:
+@cindex @code{Priority} field
+@cindex @code{>Priority:}
+(@sc{Enumerated}) How soon the originator requires a solution. Accepted
+values include:
+
+@table @code
+@cindex @emph{high} priority problems
+@item high
+A solution is needed as soon as possible.
+
+@cindex @emph{medium} priority problems
+@item medium
+The problem should be solved in the next release.
+
+@cindex @emph{low} priority problems
+@item low
+The problem should be solved in a future release.
+@end table
+@noindent
+The default value is @samp{medium}.
+@sp 1
+
+@item >Category:
+@cindex @code{Category} field
+@cindex @code{>Category:}
+(@sc{Text}) The name of the product, component or concept where
+the problem lies. The values for this field are defined by the Support
+Site.
+@ifclear SENDPR
+@xref{categories,,The @code{categories} file}, for details.
+@end ifclear
+
+@item >Class:
+@cindex @code{Class} field
+@cindex @code{>Class:}
+(@sc{Enumerated}) The class of a problem can be one of the following:
+
+@table @code
+@cindex @emph{sw-bug} class
+@item sw-bug
+A general product problem. (@samp{sw} stands for ``software''.)
+
+@cindex @emph{doc-bug} class
+@item doc-bug
+A problem with the documentation.
+
+@cindex @emph{change-request} class
+@item change-request
+A request for a change in behavior, etc.
+
+@cindex @emph{support} class
+@item support
+A support problem or question.
+
+@cindex @emph{duplicate} class
+@item duplicate (@var{pr-number})
+Duplicate PR. @var{pr-number} should be the number of the original PR.
+
+@ifclear SENDPR
+@cindex @emph{mistaken} class
+@item mistaken
+No problem, user error or misunderstanding. This value is valid only at
+the Support Site.
+@end ifclear
+@end table
+
+@noindent
+The default is @samp{sw-bug}.
+@sp 1
+
+@item >Release:
+@cindex @code{Release} field
+@cindex @code{>Release:}
+(@sc{Text}) Release or version number of the product, component or
+concept.
+
+@item >Environment:
+@cindex @code{Environment} field
+@cindex @code{>Environment:}
+(@sc{MultiText}) Description of the environment where the problem occured:
+machine architecture, operating system, host and target types,
+libraries, pathnames, etc.
+
+@item >Description:
+@cindex @code{Description} field
+@cindex @code{>Description:}
+(@sc{MultiText}) Precise description of the problem.
+
+@item >How-To-Repeat:
+@cindex @code{How-To-Repeat} field
+@cindex @code{>How-To-Repeat:}
+(@sc{MultiText}) Example code, input, or activities to reproduce the
+problem. The support organization uses example code both to reproduce
+the problem and to test whether the problem is fixed. Include all
+preconditions, inputs, outputs, conditions after the problem, and
+symptoms. Any additional important information should be included.
+Include all the details that would be necessary for someone else to
+recreate the problem reported, however obvious. Sometimes seemingly
+arbitrary or obvious information can point the way toward a solution.
+See also @ref{Helpful hints,,Helpful hints}.
+
+@item >Fix:
+@cindex @code{Fix} field
+@cindex @code{>Fix:}
+(@sc{MultiText}) A description of a solution to the problem, or a patch
+which solves the problem. (This field is most often filled in at the
+Support Site; we provide it to the submitter in case she has solved the
+problem.)
+
+@end table
+
+@noindent
+@sc{gnats} adds the following fields when the PR arrives at the Support
+Site:
+
+@table @code
+@cindex @code{Number} field
+@cindex @code{>Number:}
+@item >Number:
+(@sc{Enumerated}) The incremental identification number for this PR.
+@ifclear SENDPR
+This is included in the automated reply to the submitter (if that
+feature of @sc{gnats} is activated; @pxref{Local configuration,,Changing
+your local configuration}). It is also included in the copy of the PR
+that is sent to the maintainer.
+@end ifclear
+
+The @samp{>Number:} field is often paired with the @samp{>Category:}
+field as
+
+@smallexample
+@var{category}/@var{number}
+@end smallexample
+
+@noindent
+in subsequent email messages. This is for historical reasons, as well
+as because Problem Reports are stored in subdirectories which are named
+by category.
+
+@cindex @code{State} field
+@cindex @code{>State:}
+@item >State:
+(@sc{Enumerated}) The current state of the PR. Accepted values are:
+
+@table @code
+@item open
+The PR has been filed and the responsible person notified.
+
+@item analyzed
+The responsible person has analyzed the problem.
+
+@item feedback
+The problem has been solved, and the originator has been given a patch
+or other fix.
+
+@item closed
+The changes have been integrated, documented, and tested, and the
+originator has confirmed that the solution works.
+
+@item suspended
+Work on the problem has been postponed.
+@end table
+
+@noindent
+The initial state of a PR is @samp{open}. @xref{States,,States of
+Problem Reports}.
+
+@cindex @code{Responsible} field
+@cindex @code{>Responsible:}
+@item >Responsible:
+(@sc{Text}) The person responsible for this category.
+@ifclear SENDPR
+@sc{gnats} retrieves this information from the @file{categories} file
+(@pxref{categories,,The @code{categories} file}).
+@end ifclear
+
+@item >Arrival-Date:
+@cindex @code{>Arrival-Date:}
+@cindex @code{Arrival-Date} field
+(@sc{Text}) The time that this PR was received by @sc{gnats}. The date
+is provided automatically by @sc{gnats}.
+
+@item >Audit-Trail:
+@cindex @code{>Audit-Trail:}
+@cindex @code{Audit-Trail} field
+(@sc{MultiText}) Tracks related electronic mail as well as changes in
+the @samp{>State:} and @samp{>Responsible:} fields with the sub-fields:
+
+@table @code
+@cindex @code{State-Changed-<From>-<To>:} in @code{>Audit-Trail:}
+@item @w{State-Changed-<From>-<To>: @var{oldstate}>-<@var{newstate}}
+The old and new @samp{>State:} field values.
+
+@cindex @code{Responsible-Changed-<From>-<To>:} in @code{>Audit-Trail:}
+@item @w{Responsible-Changed-<From>-<To>: @var{oldresp}>-<@var{newresp}}
+The old and new @samp{>Responsible:} field values.
+
+@cindex @code{State-Changed-By:} in @code{>Audit-Trail:}
+@cindex @code{Responsible-Changed-By:} in @code{>Audit-Trail:}
+@item State-Changed-By: @var{name}
+@itemx Responsible-Changed-By: @var{name}
+The name of the maintainer who effected the change.
+
+@cindex @code{State-Changed-When:} in @code{>Audit-Trail:}
+@cindex @code{Responsible-Changed-When:} in @code{>Audit-Trail:}
+@item State-Changed-When: @var{timestamp}
+@itemx Responsible-Changed-When: @var{timestamp}
+The time the change was made.
+
+@cindex @code{State-Changed-Why:} in @code{>Audit-Trail:}
+@cindex @code{Responsible-Changed-Why:} in @code{>Audit-Trail:}
+@item State-Changed-Why: @var{reason@dots{}}
+@itemx Responsible-Changed-Why: @var{reason@dots{}}
+The reason for the change.
+@end table
+
+@noindent
+@cindex subsequent mail
+@cindex other mail
+@cindex appending PRs
+@cindex saving related mail
+@cindex related mail
+The @samp{>Audit-Trail:} field also contains any mail messages received
+by @sc{gnats} related to this PR, in the order received.
+
+@item >Unformatted:
+@cindex @code{>Unformatted:}
+@cindex @code{Unformatted} field
+(@sc{MultiText}) Any random text found outside the fields in the
+original Problem Report.
+@end table
+
diff --git a/gnu/usr.bin/send-pr/install-sid.sh b/gnu/usr.bin/send-pr/install-sid.sh
index cff74353fb6..3478c2ac542 100644
--- a/gnu/usr.bin/send-pr/install-sid.sh
+++ b/gnu/usr.bin/send-pr/install-sid.sh
@@ -23,9 +23,9 @@
COMMAND=`echo $0 | sed -e 's,.*/,,g'`
USAGE="Usage: $COMMAND [--install-dir=prefix] [--help] [--version] submitter-id"
-VERSION=3.01.6
+VERSION=xVERSIONx
-BINDIR=/usr/bin
+BINDIR=xBINDIRx
SUBMITTER=
TEMP=/tmp/sp$$
diff --git a/gnu/usr.bin/send-pr/s-usage.texi b/gnu/usr.bin/send-pr/s-usage.texi
new file mode 100644
index 00000000000..06fefee5cd7
--- /dev/null
+++ b/gnu/usr.bin/send-pr/s-usage.texi
@@ -0,0 +1,519 @@
+@c This is the usage section for send-pr. It is called as
+@c chapter (Invoking send-pr) by send-pr.texi, and also as
+@c section (Submitting Problem Reports) by gnats.texi (chapter/section
+@c identifiers are adjusted accordingly)
+
+@c FIXME! This still seems jumbled...
+
+You can invoke @code{send-pr} from a shell prompt or from within
+@sc{gnu} Emacs using @w{@samp{M-x send-pr}}.
+
+@menu
+* using send-pr:: Creating new Problem Reports
+* send-pr in Emacs:: Using send-pr from within Emacs
+* send-pr from the shell:: Invoking send-pr from the shell
+* Helpful hints::
+@end menu
+
+@node using send-pr
+@section Creating new Problem Reports
+
+@c FIXME - this is a long node
+Invoking @code{send-pr} presents a PR @dfn{template} with a number of
+fields already filled in. Complete the template as thoroughly as
+possible to make a useful bug report. Submit only one bug with each PR.
+
+@cindex template
+A template consists of three sections:
+
+@table @dfn
+@item Comments
+The top several lines of a blank template consist of a series of
+comments that provide some basic instructions for completing the Problem
+Report, as well as a list of valid entries for the @samp{>Category:}
+field. These comments are all preceded by the string @samp{SEND-PR:}
+and are erased automatically when the PR is submitted. The
+instructional comments within @samp{<} and @samp{>} are also removed.
+(Only these comments are removed; lines you provide that happen to have
+those characters in them, such as examples of shell-level redirection,
+are not affected.)
+
+@item Mail Header
+@code{send-pr} creates a standard mail header. @code{send-pr} completes
+all fields except the @samp{Subject:} line with default values.
+(@xref{Fields,,Problem Report format}.)
+
+@item @sc{gnats} fields
+These are the informational fields that @sc{gnats} uses to route your
+Problem Report to the responsible party for further action. They should
+be filled out as completely as possible. (@xref{Fields,,Problem Report
+format}. Also see @ref{Helpful hints,,Helpful hints}.)
+@end table
+
+@ifset SENDPR
+@noindent
+For examples of a Problem Report template and complete Problem Report,
+see @ref{An Example}.
+@end ifset
+
+The default template contains your preconfigured @samp{>Submitter-Id:}.
+@code{send-pr} attempts to determine values for the @samp{>Originator:}
+and @samp{>Organization:} fields (@pxref{Fields,,Problem Report
+format}). @code{send-pr} also attempts to find out some information
+about your system and architecture, and places this information in the
+@samp{>Environment:} field if it finds any.
+
+You may submit problem reports to different Support Sites from the
+default site by specifying the alternate site when you invoke
+@code{send-pr}. Each @code{site} has its own list of categories for
+which it accepts Problem Reports.
+@c FIXME! This should go in..
+@c For a list of sites to whom @code{send-pr} is configured to send
+@c Problem Reports, type @w{@samp{send-pr -S}}.
+@ifset SENDPR
+(@xref{default site,,Setting a default @var{site}}.)
+@end ifset
+
+@code{send-pr} also provides the mail header section of the template
+with default values in the @samp{To:}, @samp{From:}, and
+@samp{Reply-To:} fields. The @samp{Subject:} field is empty.
+
+The template begins with a comment section:
+
+@cindex template comment section
+@cindex comment section in the PR template
+@smallexample
+@group
+SEND-PR: -*- send-pr -*-
+SEND-PR: Lines starting with `SEND-PR' will be removed
+SEND-PR: automatically as well as all comments (the text
+SEND-PR: below enclosed in `<' and `>').
+SEND-PR:
+SEND-PR: Please consult the document `Reporting Problems
+SEND-PR: Using send-pr' if you are not sure how to fill out
+SEND-PR: a problem report.
+SEND-PR:
+SEND-PR: Choose from the following categories:
+@end group
+@end smallexample
+
+@noindent
+and also contains a list of valid @code{>Category:} values for the
+Support Site to whom you are submitting this Problem Report. One (and
+only one) of these values should be placed in the @code{>Category:}
+field.
+@ifset SENDPR
+A complete sample bug report, from template to completed PR, is shown in
+@ref{An Example}. For a complete list of valid categories, type
+@w{@samp{send-pr -L}} at your prompt. @xref{Valid Categories,,Valid
+Categories}, for a sample list of categories, .
+@end ifset
+
+@c FIXME.. this sounds awkward
+The mail header is just below the comment section. Fill out the
+@samp{Subject:} field, if it is not already completed using the value of
+@samp{>Synopsis:}. The other mail header fields contain default values.
+
+@cindex mail header section
+@smallexample
+@group
+To: @var{support-site}
+Subject: @emph{complete this field}
+From: @var{your-login}@@@var{your-site}
+Reply-To: @var{your-login}@@@var{your-site}
+X-send-pr-version: send-pr @value{VERSION}
+@end group
+@end smallexample
+
+@noindent
+where @var{support-site} is an alias for the Support Site you wish to
+submit this PR to.
+
+The rest of the template contains @sc{gnats} fields. Each field is
+either automatically completed with valid information (such as your
+@samp{>Submitter-Id:}) or contains a one-line instruction specifying the
+information that field requires in order to be correct. For example,
+the @samp{>Confidential:} field expects a value of @samp{yes} or
+@samp{no}, and the answer must fit on one line; similarly, the
+@samp{>Synopsis:} field expects a short synopsis of the problem, which
+must also fit on one line. Fill out the fields as completely as
+possible. @xref{Helpful hints,,Helpful hints}, for suggestions as to
+what kinds of information to include.
+
+In this example, words in @emph{italics} are filled in with
+pre-configured information:
+
+@cindex @code{send-pr} fields
+@smallexample
+@group
+>Submitter-Id: @emph{your submitter-id}
+>Originator: @emph{your name here}
+>Organization:
+ @emph{your organization}
+>Confidential:<[ yes | no ] (one line)>
+>Synopsis: <synopsis of the problem (one line)>
+>Severity: <[non-critical | serious | critical](one line)>
+>Priority: <[ low | medium | high ] (one line)>
+>Category: <name of the product (one line)>
+>Class: <[sw-bug | doc-bug | change-request | support]>
+>Release: <release number or tag (one line)>
+>Environment:
+ <machine, os, target, libraries (multiple lines)>
+
+>Description:
+ <precise description of the problem (multiple lines)>
+>How-To-Repeat:
+ <code/input/activities to reproduce (multiple lines)>
+>Fix:
+ <how to correct or work around the problem, if known
+ (multiple lines)>
+@end group
+@end smallexample
+
+@cindex @code{Submitter-Id} field
+@cindex @code{>Submitter-Id:}
+When you finish editing the Problem Report, @code{send-pr} mails it to
+the address named in the @samp{To:} field in the mail header.
+@code{send-pr} checks that the complete form contains a valid
+@samp{>Category:}.
+
+@ifset SENDPR
+Your copy of @code{send-pr} should have already been customized on
+installation to reflect your @samp{>Submitter-Id:}. (@xref{Installing
+send-pr, , Installing @code{send-pr} on your system}.) If you don't
+know your @samp{>Submitter-Id:}, you can request it using
+@w{@samp{send-pr --request-id}}. If your organization is not affiliated
+with the site you send Problem Reports to, a good generic
+@samp{>Submitter-Id:} to use is @samp{net}.
+@end ifset
+
+@cindex bad Problem Reports
+@cindex errors
+@cindex invalid Problem Reports
+If your PR has an invalid value in one of the @sc{Enumerated} fields
+(@pxref{Fields,,Problem Report format}), @code{send-pr} places the PR in
+a temporary file named @samp{/tmp/pbad@var{nnnn}} on your machine.
+@var{nnnn} is the process identification number given to your current
+@code{send-pr} session. If you are running @code{send-pr} from the
+shell, you are prompted as to whether or not you wish to try editing the
+same Problem Report again. If you are running @code{send-pr} from
+Emacs, the Problem Report is placed in the buffer
+@w{@samp{*send-pr-error*}}; you can edit this file and then submit it
+with
+
+@smallexample
+M-x gnats-submit-pr
+@end smallexample
+
+@cindex subsequent mail
+@cindex other mail
+@cindex appending PRs
+@cindex saving related mail
+@cindex related mail
+Any further mail concerning this Problem Report should be carbon-copied
+to the @sc{gnats} mailing address as well, with the category and
+identification number in the @samp{Subject:} line of the message.
+
+@smallexample
+Subject: Re: PR @var{category}/@var{gnats-id}: @var{original message subject}
+@end smallexample
+
+@noindent
+Messages which arrive with @samp{Subject:} lines of this form are
+automatically appended to the Problem Report in the @samp{>Audit-Trail:}
+field in the order received.
+
+@c ---------------------------------------------------------------
+@node send-pr in Emacs
+@section Using @code{send-pr} from within Emacs
+@cindex using @code{send-pr} from within Emacs
+@cindex @code{send-pr} within Emacs
+@cindex invoking @code{send-pr} from Emacs
+@cindex interactive interface
+
+You can use an interactive @code{send-pr} interface from within @sc{gnu}
+Emacs to fill out your Problem Report. We recommend that you
+familiarize yourself with Emacs before using this feature
+(@pxref{Introduction,,Introduction,emacs,GNU Emacs}).
+
+Call @code{send-pr} with @w{@samp{M-x send-pr}}.@footnote{If typing
+@w{@samp{M-x send-pr}} doesn't work, see your system administrator for
+help loading @code{send-pr} into Emacs.} @code{send-pr} responds with a
+Problem Report template preconfigured for the Support Site from which
+you received @code{send-pr}. (If you use @code{send-pr} locally, the
+default Support Site is probably your local site.)
+
+You may also submit problem reports to different Support Sites from the
+default site. To use this feature, invoke @code{send-pr} with
+
+@smallexample
+C-u M-x send-pr
+@end smallexample
+
+@code{send-pr} prompts you for the name of a @var{site}. @var{site} is
+an alias on your local machine which points to an alternate Support
+Site.
+
+@cindex Emacs
+@code{send-pr} displays the template and prompts you in the minibuffer
+with the line:
+@smallexample
+>Category: other
+@end smallexample
+
+@noindent
+Delete the default value @samp{other} @emph{in the minibuffer} and
+replace it with the keyword corresponding to your problem (the list of
+valid categories is in the topmost section of the PR template). For
+example, if the problem you wish to report has to do with the @sc{gnu} C
+compiler, and your support organization accepts bugs submitted for this
+program under the category @samp{gcc}, delete @samp{other} and then type
+@w{@samp{gcc[@key{RET}]}}. @code{send-pr} replaces the line
+
+@smallexample
+>Category: <name of the product (one line)>
+@end smallexample
+
+@noindent
+in the template with
+
+@smallexample
+>Category: gcc
+@end smallexample
+
+@noindent
+and moves on to another field.
+
+@cindex completion in Emacs
+@cindex name completion in Emacs
+@w{@code{send-pr}} provides name completion in the minibuffer. For
+instance, you can also type @w{@samp{gc[@key{TAB}]}}, and @code{send-pr}
+attempts to complete the entry for you. Typing @w{@samp{g[@key{TAB}]}}
+may not have the same effect if several possible entries begin with
+@samp{g}. In that case @code{send-pr} cannot complete the entry because
+it cannot determine whether you mean @samp{gcc} or, for example,
+@samp{gdb}, if both of those are possible categories.
+@w{@code{send-pr}} continues to prompt you for a valid entry until you
+enter one.
+
+@w{@code{send-pr}} prompts you interactively to enter each field for
+which there is a range of specific choices. If you attempt to enter a
+value which is not in the range of acceptable entries, @code{send-pr}
+responds with @w{@samp{[No match]}} and allows you to change the entry
+until it contains an acceptable value. This avoids unusable information
+(at least in these fields) and also avoids typographical errors which
+could cause problems later.
+
+@code{send-pr} prompts you for the following fields:
+
+@c FIXME - should these go before the discussion on completion?
+@example
+@group
+>Category:
+>Confidential: (@emph{default}: no)
+>Severity: (@emph{default}: serious)
+>Priority: (@emph{default}: medium)
+>Class: (@emph{default}: sw-bug)
+>Release:
+>Synopsis: (@emph{this value is copied to @code{Subject:}})
+@end group
+@end example
+
+@noindent
+After you complete these fields, @w{@code{send-pr}} places the cursor in
+the @samp{>Description:} field and displays the message
+
+@smallexample
+To send the problem report use: C-c C-c
+@end smallexample
+
+@noindent
+in the minibuffer. At this point, edit the file in the main buffer to
+reflect your specific problem, putting relevant information in the
+proper fields.
+@ifset SENDPR
+@xref{An Example}, for a sample Problem Report.
+@end ifset
+
+@w{@samp{send-pr}} provides a few key bindings to make moving
+around in a template buffer more simple:
+
+@table @code
+@item C-c C-f
+@itemx M-x change-field
+Changes the field under the cursor. @code{edit-pr} prompts you for a
+new value.
+
+@item M-C-b
+@itemx M-x gnats-backward-field
+Moves the cursor to the beginning of the value of the current field.
+
+@item M-C-f
+@itemx M-x gnats-forward-field
+Moves the cursor to the end of the value of the current field.
+
+@item M-p
+@itemx M-x gnats-previous-field
+Moves the cursor back one field to the beginning of the value of the
+previous field.
+
+@item M-n
+@itemx M-x gnats-next-field
+Moves the cursor forward one field to the beginning of the value of the
+next field.
+@end table
+
+@code{send-pr} takes over again when you type @samp{C-c C-c} to send the
+message. @code{send-pr} reports any errors in a separate buffer, which
+remains in existence until you send the PR properly (or, of course,
+until you explicitly kill the buffer).
+
+For detailed instructions on using Emacs, see
+@ref{Introduction,,,emacs,GNU Emacs}.
+
+@node send-pr from the shell
+@section Invoking @code{send-pr} from the shell
+@cindex command line options
+@cindex invoking @code{send-pr} from the shell
+@cindex shell invocation
+
+@c FIXME! Add [ -S ] right after [ -L ]...
+@smallexample
+send-pr [ @var{site} ]
+ [ -f @var{problem-report} | --file @var{problem-report} ]
+ [ -t @var{mail-address} | --to @var{mail-address} ]
+ [ --request-id ]
+ [ -L | --list ] [ -P | --print ]
+ [ -V | --version] [ -h | --help ]
+@end smallexample
+
+@var{site} is an alias on your local machine which points to an address
+used by a Support Site. If this argument is not present, the default
+@var{site} is usually the site which you received @code{send-pr} from,
+or your local site if you use @sc{gnats} locally.
+@ifset SENDPR
+(@xref{default site,,Setting a default @var{site}}.)
+@end ifset
+
+Invoking @code{send-pr} with no options calls the editor named in your
+environment variable @code{EDITOR} on a default PR template. If the
+environment variable @code{PR_FORM} is set, its value is used as a file
+name which contains a valid template. If @code{PR_FORM} points to a
+missing or unreadable file, or if the file is empty, @code{send-pr}
+generates an error message and opens the editor on a default template.
+
+@table @code
+@item -f @var{problem-report}
+@itemx --file @var{problem-report}
+Specifies a file, @var{problem-report}, where a completed Problem Report
+already exists. @code{send-pr} sends the contents of the file without
+invoking an editor. If @var{problem-report} is @samp{-},
+@w{@code{send-pr}} reads from standard input.
+
+@item -t @var{mail-address}
+@itemx --to @var{mail-address}
+Sends the PR to @var{mail-address}. The default is preset when
+@code{send-pr} is configured. @emph{This option is not recommended};
+instead, use the argument @var{site} on the command line.
+
+@item --request-id
+Sends a request for a @code{>Submitter-Id:} to the Support Site.
+
+@item -L
+@item --list
+@cindex listing valid categories
+Prints the list of valid @code{>Category:} values on standard output.
+No mail is sent.
+
+@ignore
+@item -S
+@itemx --sites
+Displays a list of valid @var{site} values on standard output. No mail
+is sent.
+@end ignore
+
+@item -P
+@itemx --print
+Displays the PR template. If the variable @code{PR_FORM} is set in your
+environment, the file it specifies is printed. If @code{PR_FORM} is not
+set, @code{send-pr} prints the standard blank form. If the file
+specified by @code{PR_FORM} doesn't exist, @code{send-pr} displays an
+error message. No mail is sent.
+
+@item -V
+@itemx --version
+Displays the @code{send-pr} version number and a usage summary. No mail
+is sent.
+
+@item -h
+@itemx --help
+Displays a usage summary for @code{send-pr}. No mail is sent.
+@end table
+
+@node Helpful hints
+@section Helpful hints
+@cindex helpful hints
+@cindex Using and Porting GNU CC
+@cindex effective problem reporting
+@cindex kinds of helpful information
+@cindex information to submit
+@cindex Report all the facts!
+
+There is no orthodox standard for submitting effective bug reports,
+though you might do well to consult the section on submitting bugs for
+@sc{gnu} @code{gcc} in @ref{Bugs, , Reporting Bugs, gcc, Using and
+Porting GNU CC}, by Richard Stallman. This section contains
+instructions on what kinds of information to include and what kinds of
+mistakes to avoid.
+
+In general, common sense (assuming such an animal exists) dictates the
+kind of information that would be most helpful in tracking down and
+resolving problems in software.
+@itemize @bullet
+@item
+Include anything @emph{you} would want to know if you were looking at
+the report from the other end. There's no need to include every minute
+detail about your environment, although anything that might be different
+from someone else's environment should be included (your path, for
+instance).
+
+@item
+Narratives are often useful, given a certain degree of restraint. If a
+person responsible for a bug can see that A was executed, and then B and
+then C, knowing that sequence of events might trigger the realization of
+an intermediate step that was missing, or an extra step that might have
+changed the environment enough to cause a visible problem. Again,
+restraint is always in order (``I set the build running, went to get a
+cup of coffee (Columbian, cream but no sugar), talked to Sheila on the
+phone, and then THIS happened@dots{}'') but be sure to include anything
+relevant.
+
+@item
+Richard Stallman writes, ``The fundamental principle of reporting bugs
+usefully is this: @strong{report all the facts}. If you are not sure
+whether to state a fact or leave it out, state it!'' This holds true
+across all problem reporting systems, for computer software or social
+injustice or motorcycle maintenance. It is especially important in the
+software field due to the major differences seemingly insignificant
+changes can make (a changed variable, a missing semicolon, etc.).
+
+@item
+Submit only @emph{one} problem with each Problem Report. If you have
+multiple problems, use multiple PRs. This aids in tracking each problem
+and also in analyzing the problems associated with a given program.
+
+@item
+It never hurts to do a little research to find out if the bug you've
+found has already been reported. Most software releases contain lists
+of known bugs in the Release Notes which come with the software; see
+your system administrator if you don't have a copy of these.
+
+@item
+The more closely a PR adheres to the standard format, the less
+interaction is required by a database administrator to route the
+information to the proper place. Keep in mind that anything that
+requires human interaction also requires time that might be better spent
+in actually fixing the problem. It is therefore in everyone's best
+interest that the information contained in a PR be as correct as
+possible (in both format and content) at the time of submission.
+@end itemize
diff --git a/gnu/usr.bin/send-pr/send-pr-el.in b/gnu/usr.bin/send-pr/send-pr-el.in
index add07bfa983..48a3c765520 100644
--- a/gnu/usr.bin/send-pr/send-pr-el.in
+++ b/gnu/usr.bin/send-pr/send-pr-el.in
@@ -62,9 +62,9 @@
(defvar mail-self-blind nil)
(defvar mail-default-reply-to nil)
-(defconst send-pr::version "3.01.6")
+(defconst send-pr::version "xVERSIONx")
-(defvar gnats:root "/b/gnats"
+(defvar gnats:root "xGNATS_ROOTx"
"*The top of the tree containing the GNATS database.")
;;;;---------------------------------------------------------------------------
@@ -79,7 +79,9 @@
;;;; constants and definitions.
;;;;---------------------------------------------------------------------------
-(defconst gnats::emacs-19p (not (string-lessp emacs-version "19"))
+(defconst gnats::emacs-19p
+ (not (or (and (boundp 'epoch::version) epoch::version)
+ (string-lessp emacs-version "19")))
"Is this emacs v19?")
;;; These may be changed during configuration/installation or by the individual
@@ -100,13 +102,13 @@
ret))
;; const because it must match the script's value
-(defconst send-pr:datadir (or (gnats::get-config "DATADIR") "/usr/local/lib")
+(defconst send-pr:datadir (or (gnats::get-config "DATADIR") "xDATADIRx")
"*Where the `gnats' subdirectory containing category lists lives.")
(defvar send-pr::sites nil
"List of GNATS support sites; computed at runtime.")
(defvar send-pr:default-site
- (or (gnats::get-config "GNATS_SITE") "sun-lamp")
+ (or (gnats::get-config "GNATS_SITE") "xGNATS_SITEx")
"Default site to send bugs to.")
(defvar send-pr:::site send-pr:default-site
"The site to which a problem report is currently being submitted, or NIL
@@ -134,11 +136,10 @@ at runtime.")
("Priority" (("low") ("medium") ("high"))
(, (or (gnats::get-config "DEFAULT_PRIORITY") 1)) enum)
("Release" nil
- (, (or (gnats::get-config "DEFAULT_RELEASE") "@DEFAULT_RELEASE@"))
+ (, (or (gnats::get-config "DEFAULT_RELEASE") "xDEFAULT_RELEASEx"))
text)
("Submitter-Id" nil
- (, (or (gnats::get-config "DEFAULT_SUBMITTER") "@DEFAULT_SUBMITTER@"))
- text)
+ (, (or (gnats::get-config "SUBMITTER") "xSUBMITTERx")) text)
("Synopsis" nil nil text
(lambda (a b c) (gnats::set-mail-field "Subject" c)))))
"AList, keyed on the name of the field, of:
@@ -197,7 +198,10 @@ it to send-pr::sites. With arg, force update."
(defvar send-pr:::err-buffer nil
"The error buffer used by the current PR buffer.")
-(defconst gnats::indent 17 "Indent for formatting the value.")
+(defvar send-pr:::spawn-to-send nil
+ "Whether or not send-pr-mode should spawn a send-pr process to send the PR.")
+
+(defconst gnats::indent 16 "Indent for formatting the value.")
;;;;---------------------------------------------------------------------------
;;;; `send-pr' - command for creating and sending of problem reports
@@ -216,10 +220,11 @@ to send the PR with `send-pr -b -f -'."
(or site (setq site send-pr:default-site))
(let ((buf (get-buffer send-pr::pr-buffer-name)))
(if (or (not buf)
- (and (switch-to-buffer buf)
- (or (not (buffer-modified-p buf))
- (y-or-n-p "Erase previous problem report? "))
- (or (erase-buffer) t)))
+ (progn (switch-to-buffer buf)
+ (cond ((or (not (buffer-modified-p buf))
+ (y-or-n-p "Erase previous problem report? "))
+ (erase-buffer) t)
+ (t nil))))
(send-pr::start-up site))))
(defun send-pr::start-up (site)
@@ -243,6 +248,7 @@ to send the PR with `send-pr -b -f -'."
(set-buffer-modified-p nil)
(send-pr:send-pr-mode)
(setq send-pr:::site site)
+ (setq send-pr:::spawn-to-send t)
(send-pr::set-categories)
(if (null send-pr:::categories)
(progn
@@ -272,7 +278,7 @@ buffer was loaded with emacsclient, in which case save the buffer and exit."
(save-buffer buffer)
(kill-buffer buffer)
(server-buffer-done buffer)))
- (t
+ (send-pr:::spawn-to-send
(or (and send-pr:::err-buffer
(buffer-name send-pr:::err-buffer))
(setq send-pr:::err-buffer
@@ -282,9 +288,9 @@ buffer was loaded with emacsclient, in which case save the buffer and exit."
(message "running send-pr...")
(let ((oldpr (getenv "GNATS_ROOT")))
(setenv "GNATS_ROOT" gnats:root)
- ;; FIXME -r flag is obsolete; remove for 3.3 release
(call-process-region (point-min) (point-max) "send-pr"
- nil err-buffer nil "-b" "-r" "-f" "-")
+ nil err-buffer nil send-pr:::site
+ "-b" "-f" "-")
(setenv "GNATS_ROOT" oldpr))
(message "running send-pr...done")
;; stupidly we cannot check the return value in EMACS 18.57, thus we need
@@ -300,7 +306,10 @@ buffer was loaded with emacsclient, in which case save the buffer and exit."
(set-buffer-modified-p nil)
(bury-buffer))
(pop-to-buffer err-buffer))
- ))))
+ ))
+ (t
+ (save-buffer)
+ (message "Exit emacs to send the PR."))))
;;;;---------------------------------------------------------------------------
;;;; send-pr:send-pr-mode mode
@@ -341,6 +350,7 @@ if it is not nil."
(make-local-variable 'send-pr:::site)
(make-local-variable 'send-pr:::categories)
(make-local-variable 'send-pr:::err-buffer)
+ (make-local-variable 'send-pr:::spawn-to-send)
(make-local-variable 'paragraph-separate)
(setq paragraph-separate (concat (default-value 'paragraph-separate)
"\\|" gnats::keyword "[ \t\n\f]*$"))
@@ -450,47 +460,52 @@ if it is not nil."
"Change the value of the field containing the cursor. With arg, ask the
user for the field to change. From a program, the function takes optional
arguments of the field to change and the default value to use."
- (interactive
- (if current-prefix-arg
- (list (completing-read
- "Field: " (if (eq major-mode 'gnats:gnats-mode) gnats::fields
- send-pr::fields)
- nil t))))
+ (interactive)
+ (or field current-prefix-arg (setq field (gnats::current-field)))
(or field
- (setq field (gnats::current-field)))
+ (setq field
+ (completing-read "Field: "
+ (if (eq major-mode 'gnats:gnats-mode)
+ gnats::fields
+ send-pr::fields)
+ nil t)))
(gnats::position-on-field field)
(sit-for 0)
(let* ((old (gnats::field-contents field))
new)
(if (null old)
(error "ACK")
- (let ((prompt (concat ">" field ": "))
- (domain (gnats::field-values field))
- (type (gnats::field-type field))
- (action (gnats::field-action field)))
- (or default (setq default (gnats::field-default field)))
- (setq new (if (eq type 'enum)
+ (if (or (interactive-p) t)
+ (let ((prompt (concat ">" field ": "))
+ (domain (gnats::field-values field))
+ (type (gnats::field-type field)))
+ (or default (setq default (gnats::field-default field)))
+ (setq new
+ (if (eq type 'enum)
(completing-read prompt domain nil t
(if gnats::emacs-19p (cons default 0)
default))
(read-string prompt (if gnats::emacs-19p (cons default 1)
- default))))
- (gnats::set-field field new)
- (funcall action field old new)
- new))))
+ default)))))
+ (setq new default))
+ (gnats::set-field field new)
+ (funcall (gnats::field-action field) field old new)
+ new)))
(defun gnats::set-field (field value)
- (gnats::position-on-field field)
- (delete-horizontal-space)
- (looking-at ".*$")
- (replace-match
- (concat (make-string (- gnats::indent (length field) 2) ?\40 ) value) t))
+ (save-excursion
+ (gnats::position-on-field field)
+ (delete-horizontal-space)
+ (looking-at ".*$")
+ (replace-match
+ (concat (make-string (- gnats::indent (length field) 2) ?\40 ) value) t)))
(defun gnats::set-mail-field (field value)
- (gnats::mail-position-on-field field)
- (delete-horizontal-space)
- (looking-at ".*$")
- (replace-match (concat " " value) t))
+ (save-excursion
+ (gnats::mail-position-on-field field)
+ (delete-horizontal-space)
+ (looking-at ".*$")
+ (replace-match (concat " " value) t)))
(defun gnats::before-keyword (&optional where)
"Returns t if point is in some white space before a keyword.
@@ -623,12 +638,11 @@ field."
(defun gnats::current-field ()
(save-excursion
- (cond ((or (gnats::in-keyword t) (gnats::after-keyword t))
- (looking-at gnats::keyword))
- ((re-search-backward gnats::keyword nil t))
- (t
- nil))
- (buffer-substring (match-beginning 1) (match-end 1))))
+ (if (cond ((or (gnats::in-keyword t) (gnats::after-keyword t))
+ (looking-at gnats::keyword))
+ ((re-search-backward gnats::keyword nil t)))
+ (buffer-substring (match-beginning 1) (match-end 1))
+ nil)))
;;;;---------------------------------------------------------------------------
;;;; Support functions
diff --git a/gnu/usr.bin/send-pr/send-pr.man b/gnu/usr.bin/send-pr/send-pr.man
index 75e3c6c4294..3717ebd90c1 100644
--- a/gnu/usr.bin/send-pr/send-pr.man
+++ b/gnu/usr.bin/send-pr/send-pr.man
@@ -22,7 +22,7 @@
.\"
.\" ---------------------------------------------------------------------------
.nh
-.TH SEND-PR 1 @VERSION@ "February 1993"
+.TH SEND-PR 1 xVERSIONx "February 1993"
.SH NAME
send-pr \- send problem report (PR) to a central support site
.SH SYNOPSIS
@@ -41,9 +41,6 @@ send-pr \- send problem report (PR) to a central support site
.br
.in +0.8i
[
-.B \-p
-]
-[
.B \-P
]
[
@@ -129,19 +126,12 @@ Use the
.I site
argument rather than this option in nearly all cases.
.TP
-.B \-p
-Print the standard blank template on standard output. No mail is sent.
-.TP
.B \-P
print the form specified by the environment variable
.B PR_FORM
-on standard output. No mail is sent.
-.TP
-.BI \-s " mail-agent"
-Use
-.I mail-agent
-instead of the default mailer,
-.BR sendmail (8).
+on standard output. If
+.B PR_FORM
+is not set, print the standard blank PR template. No mail is sent.
.TP
.B -L
print the list of available categories. No mail is sent.
@@ -221,26 +211,6 @@ code.
/tmp/pf$$ copy of empty PR form, for testing purposes
.br
/tmp/pbad$$ file for rejected PRs
-.if !\n(PR==1 \{.
-.SH SEE ALSO
-.BR gnats.texi
-and
-.BR send-pr.texi,
-which are also installed as GNU
-.B Info
-files
-.BR gnats.info
-and
-.BR send-pr.info;
-.LP
-.BR gnats (l),
-.BR query-pr (1),
-.BR edit-pr (1),
-.BR gnats (8),
-.BR queue-pr (8),
-.BR at-pr (8),
-.BR mkcat (8),
-.BR mkdist (8).
.SH EMACS USER INTERFACE
An Emacs user interface for
.B send-pr
@@ -257,41 +227,28 @@ installation information. The Emacs LISP template file is
.B send-pr-el.in
and is installed as
.BR send-pr.el .
-
.SH INSTALLATION AND CONFIGURATION
See
.B send-pr.info
or
.B INSTALL
for installation instructions.
+.SH SEE ALSO
+.I Reporting Problems Using send-pr
+(also installed as the GNU Info file
+.BR send-pr.info ).
.LP
-There are many ways in which
-.B send-pr
-can be customized to meet specific needs. As mentioned above, at
-least the
-.I submitter-id
-should be set before using
-.BR send-pr .
-You can change the
-.I submitter-id
-used by an already installed
-.B send-pr
-script, by running an auxiliary script: `\|\c
-.B install_sid
-.IR submitter-id \|'.
-.LP
-The file
-.B send-pr.el
-is automatically installed when the distribution is built. It is not,
-however, automatically loaded every time Emacs starts up. See
-.B send-pr.info
-or
-.B INSTALL
-for instructions on how to load
-.B send-pr
-automatically into Emacs.
+.BR gnats (l),
+.BR query-pr (1),
+.BR edit-pr (1),
+.BR gnats (8),
+.BR queue-pr (8),
+.BR at-pr (8),
+.BR mkcat (8),
+.BR mkdist (8).
.SH AUTHORS
-Jeffrey Osier, Brendan Kehoe, Heinz G. Seidl (Cygnus Support)
+Jeffrey Osier, Brendan Kehoe, Jason Merrill, Heinz G. Seidl (Cygnus
+Support)
.SH COPYING
Copyright (c) 1992, 1993 Free Software Foundation, Inc.
.PP
diff --git a/gnu/usr.bin/send-pr/send-pr.sh b/gnu/usr.bin/send-pr/send-pr.sh
index fbe4b7e1165..12505904dcc 100644
--- a/gnu/usr.bin/send-pr/send-pr.sh
+++ b/gnu/usr.bin/send-pr/send-pr.sh
@@ -2,7 +2,7 @@
# Submit a problem report to a GNATS site.
# Copyright (C) 1993 Free Software Foundation, Inc.
# Contributed by Brendan Kehoe (brendan@cygnus.com), based on a
-# version written by Heinz G. Seidl (hgs@ide.com).
+# version written by Heinz G. Seidl (hgs@cygnus.com).
#
# This file is part of GNU GNATS.
#
@@ -21,39 +21,55 @@
# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
# The version of this send-pr.
-VERSION=3.01.6
+VERSION=xVERSIONx
# The submitter-id for your site.
-SUBMITTER=net
+SUBMITTER=xSUBMITTERx
# Where the GNATS directory lives, if at all.
[ -z "$GNATS_ROOT" ] &&
-GNATS_ROOT=/b/gnats
+GNATS_ROOT=xGNATS_ROOTx
# The default mail address for PR submissions.
-GNATS_ADDR=gnats-bugs@sun-lamp.cs.berkeley.edu
+GNATS_ADDR=xGNATS_ADDRx
# Where the gnats category tree lives.
-DATADIR=/usr/share
+DATADIR=xDATADIRx
# If we've been moved around, try using GCC_EXEC_PREFIX.
[ ! -d $DATADIR/gnats -a -d "$GCC_EXEC_PREFIX" ] && DATADIR=${GCC_EXEC_PREFIX}..
# The default release for this host.
-DEFAULT_RELEASE=""
+DEFAULT_RELEASE="xDEFAULT_RELEASEx"
# The default organization.
-DEFAULT_ORGANIZATION=""
+DEFAULT_ORGANIZATION="xDEFAULT_ORGANIZATIONx"
# The default site to look for.
-GNATS_SITE=sun-lamp
+GNATS_SITE=xGNATS_SITEx
# Newer config information?
[ -f ${GNATS_ROOT}/gnats-adm/config ] && . ${GNATS_ROOT}/gnats-adm/config
# What mailer to use. This must come after the config file, since it is
# host-dependent.
-MAIL_AGENT="/usr/sbin/sendmail -oi -t"
+MAIL_AGENT="xMAIL_AGENTx"
+
+# How to read the passwd database.
+PASSWD="xPASSWDx"
+
+ECHON=xECHONx
+
+if [ $ECHON = bsd ] ; then
+ ECHON1="echo -n"
+ ECHON2=
+elif [ $ECHON = sysv ] ; then
+ ECHON1=echo
+ ECHON2='\c'
+else
+ ECHON1=echo
+ ECHON2=
+fi
#
@@ -75,19 +91,10 @@ if [ -n "$NAME" ]; then
ORIGINATOR="$NAME"
elif [ -f $HOME/.fullname ]; then
ORIGINATOR="`sed -e '1q' $HOME/.fullname`"
-elif [ -f /bin/domainname ]; then
- if [ "`/bin/domainname`" != "" -a -f /usr/bin/ypcat ]; then
- # Must use temp file due to incompatibilities in quoting behavior
- # and to protect shell metacharacters in the expansion of $LOGNAME
- /usr/bin/ypcat passwd 2>/dev/null | cat - /etc/passwd | grep "^$LOGNAME:" |
- cut -f5 -d':' | sed -e 's/,.*//' > $TEMP
- ORIGINATOR="`cat $TEMP`"
- rm -f $TEMP
- fi
-fi
-
-if [ "$ORIGINATOR" = "" ]; then
- grep "^$LOGNAME:" /etc/passwd | cut -f5 -d':' | sed -e 's/,.*//' > $TEMP
+else
+ # Must use temp file due to incompatibilities in quoting behavior
+ # and to protect shell metacharacters in the expansion of $LOGNAME
+ $PASSWD | grep "^$LOGNAME:" | cut -f5 -d':' | sed -e 's/,.*//' > $TEMP
ORIGINATOR="`cat $TEMP`"
rm -f $TEMP
fi
@@ -131,7 +138,7 @@ BATCH=
while [ $# -gt 0 ]; do
case "$1" in
- -r | -p) ;; # Ignore for backward compat.
+ -r) ;; # Ignore for backward compat.
-t | --to) if [ $# -eq 1 ]; then echo "$USAGE"; exit 1; fi
shift ; GNATS_ADDR="$1"
EXPLICIT_GNATS_ADDR=true
@@ -144,7 +151,7 @@ while [ $# -gt 0 ]; do
fi
;;
-b | --batch) BATCH=true ;;
- -P | --print) PRINT=true ;;
+ -p | -P | --print) PRINT=true ;;
-L | --list) FORMAT=norm ;;
-l | -CL | --lisp) FORMAT=lisp ;;
--request-id) REQUEST_ID=true ;;
@@ -167,7 +174,7 @@ while [ $# -gt 0 ]; do
shift
done
-if [ -n "$USER_GNATS_SITE" ]; then
+if [ -n "$USER_GNATS_SITE" ] && [ "$USER_GNATS_SITE" != "$GNATS_SITE" ]; then
GNATS_SITE=$USER_GNATS_SITE
GNATS_ADDR=$USER_GNATS_SITE-gnats
fi
@@ -205,9 +212,14 @@ case "$FORMAT" in
awk 'BEGIN {printf "( "} {printf "(\"%s\") ",$0} END {printf ")\n"}'
exit 0
;;
- norm) echo "$CATEGORIES" | \
- awk 'BEGIN {print "Known categories:"; i = 1 }
- { printf ("%-12.12s", $0); if ((++i % 5) == 0) { print "" } }
+ norm) l=`echo "$CATEGORIES" | \
+ awk 'BEGIN {max = 0; } { if (length($0) > max) { max = length($0); } }
+ END {print max + 1;}'`
+ c=`expr 70 / $l`
+ if [ $c -eq 0 ]; then c=1; fi
+ echo "$CATEGORIES" | \
+ awk 'BEGIN {print "Known categories:"; i = 0 }
+ { printf ("%-'$l'.'$l's", $0); if ((++i % '$c') == 0) { print "" } }
END { print ""; }'
exit 0
;;
@@ -278,11 +290,16 @@ SEND-PR:
__EOF__
# Format the categories so they fit onto lines.
- echo "$CATEGORIES" | awk '
- BEGIN { printf "SEND-PR: "; i = 1 }
- { printf ("%-12.12s", $0) ;
- if ((++i % 5) == 0) { printf "\nSEND-PR: "}}
- END { printf "\nSEND-PR:\n" }' >> $file
+ l=`echo "$CATEGORIES" | \
+ awk 'BEGIN {max = 0; } { if (length($0) > max) { max = length($0); } }
+ END {print max + 1;}'`
+ c=`expr 61 / $l`
+ if [ $c -eq 0 ]; then c=1; fi
+ echo "$CATEGORIES" | \
+ awk 'BEGIN {printf "SEND-PR: "; i = 0 }
+ { printf ("%-'$l'.'$l's", $0);
+ if ((++i % '$c') == 0) { printf "\nSEND-PR: " } }
+ END { printf "\nSEND-PR:\n"; }' >> $file
cat >> $file << __EOF__
To: $GNATS_ADDR
@@ -291,29 +308,20 @@ From: $FROM
Reply-To: $REPLY_TO
X-send-pr-version: $VERSION
->Submitter-Id: $SUBMITTER
->Originator: $ORIGINATOR
+
+>Submitter-Id: $SUBMITTER
+>Originator: $ORIGINATOR
>Organization:
-`
- if [ -n "$ORGANIZATION" ]; then
- echo "$ORGANIZATION"
- else
- echo " $ORGANIZATION_C" ;
- fi ;
-`
->Confidential: $CONFIDENTIAL_C
+${ORGANIZATION-" $ORGANIZATION_C"}
+>Confidential: $CONFIDENTIAL_C
>Synopsis: $SYNOPSIS_C
>Severity: $SEVERITY_C
>Priority: $PRIORITY_C
->Category: $CATEGORY_C
+>Category: $CATEGORY_C
>Class: $CLASS_C
->Release: `if [ -n "$DEFAULT_RELEASE" ]; then
- echo "$DEFAULT_RELEASE"
- else
- echo " $RELEASE_C"
- fi; `
+>Release: ${DEFAULT_RELEASE-$RELEASE_C}
>Environment:
- $ENVIRONMENT_C
+ $ENVIRONMENT_C
`[ -n "$SYSTEM" ] && echo System: $SYSTEM`
`[ -n "$ARCH" ] && echo Architecture: $ARCH`
`[ -n "$MACHINE" ] && echo Machine: $MACHINE`
@@ -430,7 +438,7 @@ while [ -z "$REQUEST_ID" ]; do
while true; do
if [ -z "$BATCH" ]; then
- echo -n "a)bort, e)dit or s)end? "
+ $ECHON1 "a)bort, e)dit or s)end? $ECHON2"
read input
else
if [ $CNT -eq 5 ]; then
diff --git a/gnu/usr.bin/send-pr/send-pr.texi b/gnu/usr.bin/send-pr/send-pr.texi
new file mode 100644
index 00000000000..b9edd9cecbc
--- /dev/null
+++ b/gnu/usr.bin/send-pr/send-pr.texi
@@ -0,0 +1,657 @@
+\input texinfo @c -*-texinfo-*-
+@setfilename send-pr.info
+@settitle Reporting Problems Using send-pr
+
+@setchapternewpage odd
+
+@include version.texi
+@set SENDPR
+
+@ifinfo
+@format
+START-INFO-DIR-ENTRY
+* send-pr:: Reporting problems--using send-pr
+END-INFO-DIR-ENTRY
+@end format
+@end ifinfo
+
+@ifinfo
+Copyright @copyright{} 1993 Free Software Foundation, Inc.
+
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+are preserved on all copies.
+
+@ignore
+Permission is granted to process this file through TeX and print the
+results, provided the printed document carries a copying permission
+notice identical to this one except for the removal of this paragraph
+(this paragraph not being relevant to the printed manual).
+
+@end ignore
+
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided also that
+the entire resulting derived work is distributed under the terms of a
+permission notice identical to this one.
+
+Permission is granted to copy and distribute translations of this manual
+into another language, under the above conditions for modified versions.
+@end ifinfo
+
+@titlepage
+@finalout
+@title Reporting Problems
+@subtitle Using @code{send-pr}, version @value{VERSION}
+@subtitle October 1993
+@author Jeffrey M. Osier
+@author Cygnus Support
+@page
+
+@vskip 0pt plus 1filll
+
+Copyright @copyright{} 1993 Free Software Foundation, Inc.
+
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+are preserved on all copies.
+
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided also that
+the entire resulting derived work is distributed under the terms of a
+permission notice identical to this one.
+
+Permission is granted to copy and distribute translations of this manual
+into another language, under the above conditions for modified versions.
+
+@end titlepage
+
+@c ---------------------------------------------------------------
+@node Top
+@top Overview
+@cindex foreword to @code{send-pr}
+@cindex overview to @code{send-pr}
+@cindex introduction to @code{send-pr}
+
+This manual documents @code{send-pr},
+@ifinfo
+version @value{VERSION},
+@end ifinfo
+which uses electronic mail to submit support questions and problem
+reports to a central Support Site. No body of work is perfect, and
+support organizations understand this; @code{send-pr} is designed to
+allow users who have problems to submit reports of these problems to
+sites responsible for supporting the products in question, in a defined
+form which can be read by an electronically managed database.
+
+@cindex GNATS
+@code{send-pr} is part of a suite of programs known collectively as
+@sc{gnats}, the @sc{gnu} Problem Report Management System. @sc{gnats}
+consists of several programs which, used in concert, formulate and
+partially administer a database of @dfn{Problem Reports}, or @dfn{PRs},
+at a central Support Site. A PR goes through several states in its
+lifetime; @sc{gnats} tracks the PR and all information associated with it
+through each state and finally acts as an archive for PRs which have
+been @dfn{closed}.
+
+Because @code{send-pr} exists as a shell (@file{/bin/sh}) script and as
+an Elisp file for use with @sc{gnu} Emacs, it can be used from any
+machine on your network which can run a shell script and/or Emacs.
+
+In general, you can use any editor and mailer to submit valid Problem
+Reports, as long as the format required by @sc{gnats} is preserved.
+@code{send-pr} automates the process, however, and ensures that certain
+fields necessary for automatic processing are present. @code{send-pr}
+is strongly recommended for all initial problem-oriented correspondence
+with your Support Site. The organization you submit Problem Reports to
+supplies an address to which further information can be sent; the person
+responsible for the category of the problem you report contacts you
+directly.
+
+@menu
+* send-pr in detail:: Details about send-pr and GNATS
+* Invoking send-pr:: Editing and sending PRs
+* An Example:: A working example
+* Installing send-pr:: Installing send-pr on your system
+* Index::
+@end menu
+
+@node send-pr in detail
+@chapter Details about send-pr and GNATS
+
+@cindex details about @code{send-pr}
+@cindex Problem Reports
+A @dfn{Problem Report} is a message that describes a problem you are
+having with a body of work. @code{send-pr} organizes this message into
+a form which can be understood and automatically processed by @sc{gnats},
+the @sc{gnu} Problem Report Management System. A Problem Report is
+organized into @dfn{fields} which contain data describing you, your
+organization, and the problem you are announcing (@pxref{Fields,,Problem
+Report format}). Problem Reports go through several defined states in
+their lifetimes, from @dfn{open} to @dfn{closed} (@pxref{States,,States
+of Problem Reports}).
+
+@menu
+* States:: States of Problem Reports
+* Fields:: Problem Report format
+@end menu
+
+@include states.texi
+
+@include fields.texi
+
+@node Invoking send-pr
+@chapter Editing and sending PRs
+@cindex editing and sending PRs
+@cindex sending PRs
+@cindex invoking send-pr
+@cindex using send-pr
+@cindex generating new PRs
+
+@include s-usage.texi
+
+@node An Example
+@chapter An Example
+@cindex an example
+@cindex example PR
+@cindex Cygnus Support
+@cindex GNU software support
+
+Cygnus Support in Mountain View, CA, uses @sc{gnats} and @code{send-pr}
+extensively for their support activities. As a support company, Cygnus
+finds problem tracking to be a crucial part of everyday business.
+Cygnus supports the @sc{gnu} compiling tools (including @sc{gnats} and
+@code{send-pr}) over several many platforms
+
+With each shipment of the Cygnus Support Developer's Kit, customers
+receive the latest version of @code{send-pr}, which contains an
+up-to-date listing of valid categories (values for the @code{>Category:}
+field). Using these tools, Cygnus' customers can communicate their
+problems to Cygnus effectively and receive automatic confirmation of
+receipt as well as notification of changes in the status of their
+reported problems. Much of Cygnus' support mechanism relies on
+electronic mail.
+
+As an example, let's pretend we're a customer of Cygnus Support, and
+that we're having a problem compiling some of our software using the
+@sc{gnu} C compiler, which Cygnus supports.
+
+Assume that we're getting an error in our @code{bifrabulator} program
+wherein the @samp{prestidigitation} routines don't match with the
+@samp{whatsitsname}. We've made sure we're following the rules of the
+program and checked the Release Notes from Cygnus and found that the bug
+isn't already known. In other words, we're pretty sure we've found a
+bug.
+
+@cindex Imaginary Software, Ltd.
+Our first step is to call @code{send-pr}. It really doesn't matter
+whether we use @code{send-pr} from the shell or from within Emacs.
+Indeed, if we use Emacs as a primary editor, calling @code{send-pr} from
+the shell is likely to start @code{send-pr} in an Emacs buffer anyway.
+So, since our company, @emph{Imaginary Software, Ltd.}, uses @sc{gnu}
+software extensively, we're pretty familiar with Emacs, so from within
+Emacs we type
+@smallexample
+M-x send-pr
+@end smallexample
+@noindent
+and we're greeted with the following screen:
+
+@cindex default PR template
+@cindex example of a default template
+@cindex blank PR template
+@cindex @code{bifrabulator}
+@cartouche
+@smallexample
+SEND-PR: -*- text -*-
+SEND-PR: Lines starting with `SEND-PR' will be removed
+SEND-PR: automatically as well as all comments (the text
+SEND-PR: below enclosed in `<' and `>').
+SEND-PR: Please consult the manual if you are not sure
+SEND-PR: how to fill out a problem report.
+SEND-PR:
+SEND-PR: Choose from the following categories:
+SEND-PR:
+SEND-PR: bfd binutils bison
+SEND-PR: byacc clib config cvs diff
+SEND-PR: doc emacs flex g++ gas
+SEND-PR: gcc gdb glob gprof grep
+SEND-PR: info ispell kerberos ld libg++
+SEND-PR: libiberty make makeinfo mas newlib
+SEND-PR: other patch rcs readline send-pr
+SEND-PR: test texindex texinfo texinfo.tex
+SEND-PR: bifrabulator <---@emph{note: this one is fake}
+SEND-PR:
+To: cygnus-bugs@@cygnus.com
+Subject:
+From: jeffrey@@imaginary.com
+Reply-To: jeffrey@@imaginary.com
+X-send-pr-version: send-pr @value{VERSION}
+
+>Submitter-Id: imaginary
+>Originator: Jeffrey Osier
+>Organization:
+Imaginary Software, Ltd.
+>Confidential: <[ yes | no ] (one line)>
+>Synopsis: <synopsis of the problem (one line)>
+>Severity: <[ non-critical | serious | critical ] (one line)>
+>Priority: <[ low | medium | high ] (one line)>
+>Category: <name of the product (one line)>
+>Class: <[sw-bug|doc-bug|change-request|support](oneline)>
+>Release: <release number or tag (one line)>
+>Environment:
+ <machine, os, target, libraries (multiple lines)>
+System: SunOS imaginary.com 4.1.1 1 sun4
+Architecture: sun4
+
+>Description:
+ <precise description of the problem (multiple lines)>
+>How-To-Repeat:
+ <code/input/activities to reproduce (multiple lines)>
+>Fix:
+@iftex
+@hrule
+@end iftex
+-----Emacs: *send-pr* (send-pr Fill)----All------------------
+@iftex
+@hrule
+@end iftex
+>Category: other[]
+@end smallexample
+@end cartouche
+@page
+We know from past experience that we need to set certain information into
+each field, so we compile all the information we know about our problem.
+We have some sample code which we know should work, even though it
+doesn't, so we'll include that. Below is the completed PR; we send this
+using @kbd{C-c C-c}. (The comments have been truncated).
+
+@cindex completed Problem Report
+@cindex example of a completed PR
+@cartouche
+@smallexample
+SEND-PR: Lines starting with `SEND-PR' will be removed
+SEND-PR: automatically as well as all comments (the text
+SEND-PR: @dots{}
+SEND-PR:
+To: cygnus-bugs@@cygnus.com
+Subject: bifrabulator routines don't match
+From: jeffrey@@imaginary.com
+Reply-To: jeffrey@@imaginary.com
+X-send-pr-version: send-pr @value{VERSION}
+
+>Submitter-Id: imaginary
+>Originator: Jeffrey Osier
+>Organization:
+Imaginary Software, Ltd.
+>Confidential: no
+>Synopsis: bifrabulator routines don't match
+>Severity: serious
+>Priority: medium
+>Category: bifrabulator
+>Class: sw-bug
+>Release: progressive-930101
+>Environment:
+System: SunOS imaginary.com 4.1.1 1 sun4
+Architecture: sun4 (SPARC)
+
+>Description:
+ the following code I fed into the bifrabulator came back
+ with a strange error. apparently, the prestidigitation
+ routine doesn't match with the whatsitsname in all cases.
+
+>How-To-Repeat:
+ call the bifrabulator on the following code.
+ @emph{code sample@dots{}}
+
+>Fix:
+@iftex
+@hrule
+@end iftex
+-----Emacs: *send-pr* (send-pr Fill)----All------------------
+@iftex
+@hrule
+@end iftex
+To send the problem report use: C-c C-c
+@end smallexample
+@end cartouche
+
+We type @kbd{C-c C-c}, and off it goes. Now, we depend on Cygnus
+Support to figure out the answer to our problem.
+
+Soon afterward, we get the following message from Cygnus:
+
+@smallexample
+@group
+From: gnats (GNATS management)
+Sender: gnats-admin
+Reply-To: hacker@@cygnus.com
+To: jeffrey@@imaginary.com
+Subject: Re: bifrabulator/1425: routines don't match
+
+Thank you very much for your problem report.
+It has the internal identification: g++/1425.
+The individual assigned to look at your bug is: hacker
+(F.B. Hacker)
+
+Category: bifrabulator
+Responsible: hacker
+Synopsis: bifrabulator routines don't match
+Arrival-Date: Sat Feb 30 03:12:55 1993
+@end group
+@end smallexample
+
+@noindent
+This is our receipt that the bug has been accepted and forwarded to the
+responsible party.
+
+@noindent
+A while later, we get the analysis:
+
+@smallexample
+@group
+To: jeffrey@@imaginary.com
+From: hacker@@cygnus.com
+Subject: Re: bifrabulator/1425: routines don't match
+Reply-To: hacker@@cygnus.com
+
+Got your message, Jeff. It seems that the bifrabulator was
+confusing the prestidigitation routines with the realitychecker
+when lexically parsing the whatsitsname.
+
+I'm working on robustisizing the bifrabulator now.
+
+How about lunch next week?
+--
+F.B. Hacker
+Cygnus Support, Mountain View, CA 415 903 1400
+#include <std-disclaimer.h>
+@end group
+@end smallexample
+
+@noindent
+About the same time, we get another message from Cygnus.
+
+@cindex state change example
+@cindex example of a state change
+@smallexample
+@group
+From: hacker@@cygnus.com
+To: jeffrey@@imaginary.com
+Subject: Re: bifrabulator/1425: doesn't match prestidig
+Reply-To: hacker@@cygnus.com
+
+
+ `F.B. Hacker' changed the state to `analyzed'.
+
+State-Changed-From-To: open-analyzed
+State-Changed-By: hacker
+State-Changed-When: Fri Feb 31 1993 08:59:16 1993
+State-Changed-Why:
+ figured out the problem, working on a patch this afternoon
+--
+F.B. Hacker
+Cygnus Support, Mountain View, CA 415 903 1400
+#include <std-disclaimer.h>
+@end group
+@end smallexample
+
+@noindent
+The bug has now been analyzed, and Cygnus is working on a solution.
+
+@noindent
+Sometime later, we get more mail from F.B.:
+
+@smallexample
+@group
+To: jeffrey@@imaginary.com
+From: hacker@@cygnus.com
+Subject: Re: bifrabulator/1425: routines don't match
+Reply-To: hacker@@cygnus.com
+
+There's a patch now that you can ftp over and check out.
+
+Hey, that joke you sent me was great! The one about the
+strings walking into a bar... my boss laughed for an hour!
+--
+F.B. Hacker
+Cygnus Support, Mountain View, CA 415 903 1400
+#include <std-disclaimer.h>
+@end group
+@end smallexample
+@sp 2
+@smallexample
+@group
+From: hacker@@cygnus.com
+To: jeffrey@@imaginary.com
+Subject: Re: bifrabulator/1425: doesn't match prestidig
+Reply-To: hacker@@cygnus.com
+
+
+ `F.B. Hacker' changed the state to `feedback'.
+
+State-Changed-From-To: analyzed-feedback
+State-Changed-By: hacker
+State-Changed-When: Fri Feb 31 1993 23:43:16 1993
+State-Changed-Why:
+ got the patch finished, notified Jeff at Imaginary Software
+--
+F.B. Hacker
+Cygnus Support, Mountain View, CA 415 903 1400
+#include <std-disclaimer.h>
+@end group
+@end smallexample
+
+@noindent
+The bug has gone into @dfn{feedback} status now, until we get the patch,
+install it and test it. When everything tests well, we can mail F.B.
+back and tell him the bug's been fixed, and he can change the state of
+the PR from @dfn{feedback} to @dfn{closed}.
+
+Following is a list of valid @samp{>Category:} entries that are
+supported by Cygnus.
+
+@menu
+* Valid Categories::
+@end menu
+
+@c FIXME - is this list up to date?
+@include categ.texi
+
+@node Installing send-pr
+@appendix Installing @code{send-pr} on your system
+@cindex installation
+
+If you receive @code{send-pr} as part of a larger software distribution,
+it probably gets installed when the full distribution is installed. If
+you are using @sc{gnats} at your site as well, you must decide where
+@code{send-pr} sends Problem Reports by default; see @ref{default site,,
+Setting a default @var{site}}.
+
+@menu
+* installation:: installing `send-pr' by itself
+* default site:: setting a default site
+@end menu
+
+@node installation
+@section Installing @code{send-pr} by itself
+@cindex installation procedure
+
+Install @code{send-pr} by following these steps (you may need
+@code{root} access in order to change the @file{aliases} file and to
+install @code{send-pr}):
+
+@itemize @bullet
+@item
+Unpack the distribution into a directory which we refer to as
+@var{srcdir}.
+
+@item
+Edit the file @file{Makefile} to reflect local conventions.
+Specifically, you should edit the variable @samp{prefix} to alter the
+installation location. The default is @file{/usr/local}. All files are
+installed under @samp{prefix} (see below).
+
+@item @emph{Run}
+@smallexample
+make all install [ info ] [ install-info ] [ clean ]
+@end smallexample
+
+@noindent
+The targets mean the following:
+
+@table @code
+@item all
+Builds @code{send-pr} and @code{install-sid}
+
+@item install
+Installs the following:
+
+@table @code
+@item install-sid
+@itemx send-pr
+into @file{@var{prefix}/bin}
+
+@item send-pr.1
+into @file{@var{prefix}/man/man1}
+
+@item @var{site}
+the list of valid @var{categories} for the Support Site from which you
+received @code{send-pr}, installed as
+@w{@file{@var{prefix}/lib/gnats/@var{site}}}
+
+@item send-pr.el
+into @w{@file{@var{prefix}/lib/emacs/lisp}}@footnote{If your main Emacs
+lisp repository is in a different directory from this, substitute that
+directory for @w{@file{@var{prefix}/lib/emacs/lisp}}.}
+@end table
+
+@item info (@emph{optional})
+Builds @file{send-pr.info} from @file{send-pr.texi}@*
+@c FIXME - is this still true?
+(@file{send-pr.info} is included with this distribution)
+
+@item install-info (@emph{optional})
+Installs @file{send-pr.info} into @w{@file{@var{prefix}/info}}
+
+@item clean (@emph{optional})
+Removes all intermediary build files that can be rebuilt from source
+code
+@end table
+
+@item
+Run
+
+@smallexample
+install-sid @var{your-sid}
+@end smallexample
+
+@noindent
+where @var{your-sid} is the identification code you received with
+@w{@code{send-pr}}. @code{send-pr} automatically inserts this value
+into the template field @samp{>Submitter-Id:}. If you've downloaded
+@code{send-pr} from the Net, use @samp{net} for this value.
+
+@item
+Place the following line in
+@w{@file{@var{prefix}/lib/emacs/lisp/default.el}}, or instruct your
+users to place the following line in their @file{.emacs} files:
+
+@smallexample
+(autoload 'send-pr "send-pr" "Submit a Problem Report." t)
+@end smallexample
+
+@item
+Create a mail alias for the Support Site from which you received
+@code{send-pr}, and for every site with which you wish to use
+@code{send-pr} to communicate. Each alias must have a suffix of
+@samp{-gnats}. The Support Site(s) will provide the correct addresses
+where these aliases should point. For instance, edit your mail aliases
+file to contain something like:
+
+@smallexample
+# support sites; for use with send-pr
+cygnus-gnats: bugs@@cygnus.com # Cygnus Support
+bumblebee-gnats: bumblebugs@@bumblebee.com # Bumblebee Inc.
+mycompany-gnats: bugs@@my.company.com (@emph{if you use @sc{gnats} locally})
+@end smallexample
+
+@code{send-pr} automatically searches for these aliases when you type
+
+@smallexample
+send-pr cygnus
+send-pr bumblebee
+send-pr @var{site}@dots{}
+@end smallexample
+
+@noindent
+@code{send-pr} also uses @var{site} to determine the categories of
+problems accepted by the site in question by looking in
+
+@smallexample
+@var{prefix}/lib/gnats/@var{site}
+@end smallexample
+
+@end itemize
+
+@node default site
+@section Setting a default @var{site}
+@cindex default @var{site}
+@cindex setting a default @var{site}
+
+@code{send-pr} is capable of sending Problem Reports to any number of
+Support Sites, using mail aliases which have @samp{-gnats} appended them.
+@code{send-pr} automatically appends the suffix, so that when you type
+
+@smallexample
+send-pr @var{site}
+@end smallexample
+
+@noindent
+the Problem Report goes to the address noted in the @file{aliases} file
+as @w{@samp{@var{site}-gnats}}. You can do this in the Emacs version of
+@code{send-pr} by invoking the program with
+
+@smallexample
+C-u M-x send-pr
+@end smallexample
+
+@noindent
+You are prompted for @var{site}.
+
+@var{site} is also used to error-check the @samp{>Category:} field, as a
+precaution against sending mistaken information (and against sending
+information to the wrong site).
+
+You may also simply type
+
+@smallexample
+send-pr
+@end smallexample
+
+@noindent
+from the shell (or @w{@samp{M-x send-pr}} in Emacs), and the Problem
+Report you generate will be sent to the @var{site}, which is usually the
+site from which you received your distribution of @w{@code{send-pr}}.
+If you use @sc{gnats} at your own organization, the default is usually
+your local address for reporting problems.
+
+To change this, simply edit the file @file{Makefile} before installing
+and change the line
+
+@smallexample
+GNATS_SITE = @var{site}
+@end smallexample
+
+@noindent
+to reflect the site where you wish to send PRs by default.
+
+@c ---------------------------------------------------------------
+@node Index
+@unnumbered Index
+
+@printindex cp
+
+@c ---------------------------------------------------------------
+@contents
+@bye
diff --git a/gnu/usr.bin/send-pr/states.texi b/gnu/usr.bin/send-pr/states.texi
new file mode 100644
index 00000000000..16ea890031b
--- /dev/null
+++ b/gnu/usr.bin/send-pr/states.texi
@@ -0,0 +1,53 @@
+@node States
+@section States of Problem Reports
+
+@cindex life-cycle of a Problem Report
+@cindex states of Problem Reports
+@cindex Problem Report states
+@cindex automatic notification
+
+Each PR goes through a defined series of states between origination and
+closure. The originator of a PR receives notification automatically of
+any state changes.
+
+@table @dfn
+@cindex @emph{open} state
+@cindex initial state (@dfn{open})
+@cindex state---@dfn{open}
+@item open
+The initial state of a Problem Report. This means the PR has been filed
+and the responsible person(s) notified.
+
+@item analyzed
+@cindex @emph{analyzed} state
+@cindex state---@dfn{analyzed}
+The responsible person has analyzed the problem. The analysis should
+contain a preliminary evaluation of the problem and an estimate of the
+amount of time and resources necessary to solve the problem. It should
+also suggest possible workarounds.
+
+@item feedback
+@cindex @emph{feedback} state
+@cindex state---@dfn{feedback}
+The problem has been solved, and the originator has been given a patch
+or other fix. The PR remains in this state until the originator
+acknowledges that the solution works.
+
+@item closed
+@cindex @emph{closed} state
+@cindex state---@dfn{closed}
+@cindex final state (@dfn{closed})
+A Problem Report is closed (``the bug stops here'') only when any
+changes have been integrated, documented, and tested, and the submitter
+has confirmed the solution.
+
+@item suspended
+@cindex @emph{suspended} state
+@cindex state---@dfn{suspended}
+Work on the problem has been postponed. This happens if a timely
+solution is not possible or is not cost-effective at the present time.
+The PR continues to exist, though a solution is not being actively
+sought. If the problem cannot be solved at all, it should be closed
+rather than suspended.
+@end table
+