import send-pr from gnats-3.2
This commit is contained in:
parent
62bdf2b3ad
commit
68c5b58147
339
external/gpl2/send-pr/dist/send-pr/COPYING
vendored
Normal file
339
external/gpl2/send-pr/dist/send-pr/COPYING
vendored
Normal file
@ -0,0 +1,339 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
675 Mass Ave, Cambridge, MA 02139, USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
he GNU Library General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
Appendix: How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) 19yy <name of author>
|
||||
|
||||
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 of the License, 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.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) 19yy name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Library General
|
||||
Public License instead of this License.
|
570
external/gpl2/send-pr/dist/send-pr/ChangeLog
vendored
Normal file
570
external/gpl2/send-pr/dist/send-pr/ChangeLog
vendored
Normal file
@ -0,0 +1,570 @@
|
||||
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:
|
83
external/gpl2/send-pr/dist/send-pr/INSTALL
vendored
Normal file
83
external/gpl2/send-pr/dist/send-pr/INSTALL
vendored
Normal file
@ -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.
|
20
external/gpl2/send-pr/dist/send-pr/MANIFEST
vendored
Normal file
20
external/gpl2/send-pr/dist/send-pr/MANIFEST
vendored
Normal file
@ -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
|
287
external/gpl2/send-pr/dist/send-pr/Makefile.in
vendored
Normal file
287
external/gpl2/send-pr/dist/send-pr/Makefile.in
vendored
Normal file
@ -0,0 +1,287 @@
|
||||
# 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@
|
||||
|
||||
# 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 = $(datadir)/emacs/lisp
|
||||
|
||||
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%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/"DEFAULT_SUBMITTER") ".*"/"DEFAULT_SUBMITTER") "unknown"/' \
|
||||
-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=unknown/' \
|
||||
-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
|
43
external/gpl2/send-pr/dist/send-pr/README
vendored
Normal file
43
external/gpl2/send-pr/dist/send-pr/README
vendored
Normal file
@ -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.
|
32
external/gpl2/send-pr/dist/send-pr/aclocal.m4
vendored
Normal file
32
external/gpl2/send-pr/dist/send-pr/aclocal.m4
vendored
Normal file
@ -0,0 +1,32 @@
|
||||
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
|
124
external/gpl2/send-pr/dist/send-pr/categ.texi
vendored
Normal file
124
external/gpl2/send-pr/dist/send-pr/categ.texi
vendored
Normal file
@ -0,0 +1,124 @@
|
||||
@node Valid Categories
|
||||
@c $NetBSD: categ.texi,v 1.1.1.1 2016/01/14 21:06:13 christos Exp $
|
||||
@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
|
49
external/gpl2/send-pr/dist/send-pr/categories
vendored
Normal file
49
external/gpl2/send-pr/dist/send-pr/categories
vendored
Normal file
@ -0,0 +1,49 @@
|
||||
pending
|
||||
bfd
|
||||
binutils
|
||||
bison
|
||||
build
|
||||
byacc
|
||||
config
|
||||
cvs
|
||||
dejagnu
|
||||
diff
|
||||
doc
|
||||
emacs
|
||||
flex
|
||||
g++
|
||||
gas
|
||||
gcc
|
||||
gdb
|
||||
gdb++
|
||||
glob
|
||||
gnats
|
||||
gprof
|
||||
grep
|
||||
help-request
|
||||
id-request
|
||||
info-request
|
||||
ispell
|
||||
kerberos
|
||||
ld
|
||||
libg++
|
||||
libiberty
|
||||
make
|
||||
mas
|
||||
mgmt
|
||||
libc
|
||||
libm
|
||||
newlib
|
||||
netware
|
||||
other
|
||||
patch
|
||||
query-pr
|
||||
send-pr
|
||||
rcs
|
||||
readline
|
||||
test
|
||||
testsuites
|
||||
texinfo
|
||||
info
|
||||
makeinfo
|
||||
texindex
|
333
external/gpl2/send-pr/dist/send-pr/configure
vendored
Executable file
333
external/gpl2/send-pr/dist/send-pr/configure
vendored
Executable file
@ -0,0 +1,333 @@
|
||||
#!/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
|
||||
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
|
||||
|
||||
GNATS_SITE=cygnus
|
||||
SUBMITTER=unknown
|
||||
GNATS_ADDR=bugs@cygnus.com
|
||||
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
|
||||
if test -n "${prefix}"; then
|
||||
GNATS_ROOT=${prefix}/lib/gnats/gnats-root
|
||||
else
|
||||
GNATS_ROOT=/usr/local/lib/gnats/gnats-root
|
||||
fi
|
||||
_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'
|
||||
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%@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
|
||||
|
72
external/gpl2/send-pr/dist/send-pr/configure.in
vendored
Normal file
72
external/gpl2/send-pr/dist/send-pr/configure.in
vendored
Normal file
@ -0,0 +1,72 @@
|
||||
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
|
||||
|
||||
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
|
||||
if test -n "${prefix}"; then
|
||||
GNATS_ROOT=${prefix}/lib/gnats/gnats-root
|
||||
else
|
||||
GNATS_ROOT=/usr/local/lib/gnats/gnats-root
|
||||
fi
|
||||
_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)
|
519
external/gpl2/send-pr/dist/send-pr/fields.texi
vendored
Normal file
519
external/gpl2/send-pr/dist/send-pr/fields.texi
vendored
Normal file
@ -0,0 +1,519 @@
|
||||
@node Fields
|
||||
@c $NetBSD: fields.texi,v 1.1.1.1 2016/01/14 21:06:14 christos Exp $
|
||||
@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
|
||||
|
82
external/gpl2/send-pr/dist/send-pr/install-sid.sh
vendored
Executable file
82
external/gpl2/send-pr/dist/send-pr/install-sid.sh
vendored
Executable file
@ -0,0 +1,82 @@
|
||||
#!/bin/sh
|
||||
# Drop in the SUBMITTER id into a site's installed send-pr script.
|
||||
# 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).
|
||||
#
|
||||
# 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.
|
||||
|
||||
COMMAND=`echo $0 | sed -e 's,.*/,,g'`
|
||||
USAGE="Usage: $COMMAND [--install-dir=prefix] [--help] [--version] submitter-id"
|
||||
|
||||
VERSION=xVERSIONx
|
||||
|
||||
BINDIR=xBINDIRx
|
||||
|
||||
SUBMITTER=
|
||||
TEMP=/tmp/sp$$
|
||||
|
||||
if [ $# -eq 0 ]; then
|
||||
echo "$USAGE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
while [ $# -gt 0 ]; do
|
||||
case "$1" in
|
||||
-install-dir=*|--install-dir=*|--install-di=*|--install-d=*|--install-=*|--install=*|--instal=*|--insta=*|--inst=*|--ins=*|--in=*|--i=*)
|
||||
I=`echo "$1" | sed 's/-*i[a-z\-]*=//'`
|
||||
BINDIR=$I/bin ;;
|
||||
--version) echo $COMMAND version $VERSION ; exit 1 ;;
|
||||
-*) echo "$USAGE" ; exit 1 ;;
|
||||
*) SUBMITTER=$1 ;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
path=`echo $0 | sed -e "s;${COMMAND};;"`
|
||||
|
||||
[ -z "$path" ] && path=.
|
||||
|
||||
if [ -f $BINDIR/send-pr ]; then
|
||||
SPPATH=$BINDIR/send-pr
|
||||
elif [ -f $path/send-pr ]; then
|
||||
SPPATH=$path/send-pr
|
||||
else
|
||||
echo "$COMMAND: cannot find \`$BINDIR/send-pr' or \`$path/send-pr'" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
trap 'rm -f $TEMP ; exit 0' 0
|
||||
trap 'echo "$COM: Aborting ..."; rm -f $TEMP ; exit 1' 1 2 3 13 15
|
||||
|
||||
sed -e "s/^SUBMITTER=.*/SUBMITTER=${SUBMITTER}/" $SPPATH > $TEMP
|
||||
|
||||
if grep $SUBMITTER $TEMP > /dev/null; then
|
||||
cp $SPPATH $SPPATH.orig &&
|
||||
rm -f $SPPATH &&
|
||||
cp $TEMP $SPPATH &&
|
||||
chmod a+rx $SPPATH &&
|
||||
rm -f $TEMP $SPPATH.orig ||
|
||||
{ echo "$COMMAND: unable to replace send-pr" >&2 ; exit 1; }
|
||||
else
|
||||
echo "$COMMAND: something went wrong when sed-ing the submitter into send-pr" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "$COMMAND: \`$SUBMITTER' is now the default submitter ID for send-pr"
|
||||
|
||||
exit 0
|
520
external/gpl2/send-pr/dist/send-pr/s-usage.texi
vendored
Normal file
520
external/gpl2/send-pr/dist/send-pr/s-usage.texi
vendored
Normal file
@ -0,0 +1,520 @@
|
||||
@c This is the usage section for send-pr. It is called as
|
||||
@c $NetBSD: s-usage.texi,v 1.1.1.1 2016/01/14 21:06:14 christos Exp $
|
||||
@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
|
744
external/gpl2/send-pr/dist/send-pr/send-pr-el.in
vendored
Normal file
744
external/gpl2/send-pr/dist/send-pr/send-pr-el.in
vendored
Normal file
@ -0,0 +1,744 @@
|
||||
;;;; -*-emacs-lisp-*-
|
||||
;;;;---------------------------------------------------------------------------
|
||||
;;;; EMACS interface for send-pr (by Heinz G. Seidl, hgs@cygnus.com)
|
||||
;;;; Slightly hacked by Brendan Kehoe (brendan@cygnus.com).
|
||||
;;;;
|
||||
;;;; This file is part of the Problem Report Management System (GNATS)
|
||||
;;;; Copyright 1992, 1993 Cygnus Support
|
||||
;;;;
|
||||
;;;; 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 of the License, 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 Library General Public
|
||||
;;;; License along with this program; if not, write to the Free
|
||||
;;;; Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
;;;;
|
||||
;;;;---------------------------------------------------------------------------
|
||||
;;;;
|
||||
;;;; This file contains the EMACS interface to the Problem Report Management
|
||||
;;;; System (GNATS):
|
||||
;;;;
|
||||
;;;; - The `send-pr' command and the `send-pr-mode' for sending
|
||||
;;;; Problem Reports (PRs).
|
||||
;;;;
|
||||
;;;; For more information about how to send a PR see send-pr(1).
|
||||
;;;;
|
||||
;;;;---------------------------------------------------------------------------
|
||||
;;;;
|
||||
;;;; Configuration: the symbol `DEFAULT-RELEASE' can be replaced by
|
||||
;;;; site/release specific strings during the configuration/installation
|
||||
;;;; process.
|
||||
;;;;
|
||||
;;;; Install this file in your EMACS library directory.
|
||||
;;;;
|
||||
;;;;---------------------------------------------------------------------------
|
||||
|
||||
(provide 'send-pr)
|
||||
|
||||
;;;;---------------------------------------------------------------------------
|
||||
;;;; Customization: put the following forms into your default.el file
|
||||
;;;; (or into your .emacs)
|
||||
;;;;---------------------------------------------------------------------------
|
||||
|
||||
;(autoload 'send-pr-mode "send-pr"
|
||||
; "Major mode for sending problem reports." t)
|
||||
|
||||
;(autoload 'send-pr "send-pr"
|
||||
; "Command to create and send a problem report." t)
|
||||
|
||||
;;;;---------------------------------------------------------------------------
|
||||
;;;; End of Customization Section
|
||||
;;;;---------------------------------------------------------------------------
|
||||
|
||||
(autoload 'server-buffer-done "server")
|
||||
(defvar server-buffer-clients nil)
|
||||
(defvar mail-self-blind nil)
|
||||
(defvar mail-default-reply-to nil)
|
||||
|
||||
(defconst send-pr::version "xVERSIONx")
|
||||
|
||||
(defvar gnats:root "xGNATS_ROOTx"
|
||||
"*The top of the tree containing the GNATS database.")
|
||||
|
||||
;;;;---------------------------------------------------------------------------
|
||||
;;;; hooks
|
||||
;;;;---------------------------------------------------------------------------
|
||||
|
||||
(defvar text-mode-hook nil) ; we define it here in case it's not defined
|
||||
(defvar send-pr-mode-hook text-mode-hook "Called when send-pr is invoked.")
|
||||
|
||||
;;;;---------------------------------------------------------------------------
|
||||
;;;; Domains and default values for (some of) the Problem Report fields;
|
||||
;;;; constants and definitions.
|
||||
;;;;---------------------------------------------------------------------------
|
||||
|
||||
(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
|
||||
;;; user in his/her .emacs file.
|
||||
;;;
|
||||
(defun gnats::get-config (var)
|
||||
(let ((shell-file-name "/bin/sh")
|
||||
(buf (generate-new-buffer " *GNATS config*"))
|
||||
ret)
|
||||
(save-excursion
|
||||
(set-buffer buf)
|
||||
(shell-command (concat ". " gnats:root "/gnats-adm/config; echo $" var )
|
||||
t)
|
||||
(if (looking-at "/bin/sh:\\|\n")
|
||||
(setq ret nil)
|
||||
(setq ret (buffer-substring (point-min) (- (point-max) 1)))))
|
||||
(kill-buffer buf)
|
||||
ret))
|
||||
|
||||
;; const because it must match the script's value
|
||||
(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") "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
|
||||
if using the default site (buffer local).")
|
||||
|
||||
(defvar send-pr:::categories nil
|
||||
"Buffer local list of available categories, derived at runtime from
|
||||
send-pr:::site and send-pr::category-alist.")
|
||||
(defvar send-pr::category-alist nil
|
||||
"Alist of GNATS support sites and the categories supported at each; computed
|
||||
at runtime.")
|
||||
|
||||
;;; Ideally we would get all the following values from a central database
|
||||
;;; during runtime instead of having them here in the code.
|
||||
;;;
|
||||
(defconst send-pr::fields
|
||||
(` (("Category" send-pr::set-categories
|
||||
(, (or (gnats::get-config "DEFAULT_CATEGORY") nil)) enum)
|
||||
("Class" (("sw-bug") ("doc-bug") ("change-request") ("support"))
|
||||
(, (or (gnats::get-config "DEFAULT_CONFIDENTIAL") 0)) enum)
|
||||
("Confidential" (("yes") ("no"))
|
||||
(, (or (gnats::get-config "DEFAULT_CONFIDENTIAL") 1)) enum)
|
||||
("Severity" (("non-critical") ("serious") ("critical"))
|
||||
(, (or (gnats::get-config "DEFAULT_SEVERITY") 1)) enum)
|
||||
("Priority" (("low") ("medium") ("high"))
|
||||
(, (or (gnats::get-config "DEFAULT_PRIORITY") 1)) enum)
|
||||
("Release" nil
|
||||
(, (or (gnats::get-config "DEFAULT_RELEASE") "xDEFAULT_RELEASEx"))
|
||||
text)
|
||||
("Submitter-Id" nil
|
||||
(, (or (gnats::get-config "DEFAULT_SUBMITTER") "xDEFAULT_SUBMITTERx"))
|
||||
text)
|
||||
("Synopsis" nil nil text
|
||||
(lambda (a b c) (gnats::set-mail-field "Subject" c)))))
|
||||
"AList, keyed on the name of the field, of:
|
||||
1) The field name.
|
||||
2) The list of completions. This can be a list, a function to call, or nil.
|
||||
3) The default value.
|
||||
4) The type of the field.
|
||||
5) A sub-function to call when changed.")
|
||||
|
||||
(defvar gnats::fields nil)
|
||||
|
||||
(defmacro gnats::push (i l)
|
||||
(` (setq (, l) (cons (,@ (list i l))))))
|
||||
|
||||
(defun send-pr::set-categories (&optional arg)
|
||||
"Get the list of categories for the current site out of
|
||||
send-pr::category-alist if there or from send-pr if not. With arg, force
|
||||
update."
|
||||
;;
|
||||
(let ((entry (assoc send-pr:::site send-pr::category-alist)))
|
||||
(or (and entry (null arg))
|
||||
(let ((oldpr (getenv "GNATS_ROOT")) cats)
|
||||
(send-pr::set-sites arg)
|
||||
(setenv "GNATS_ROOT" gnats:root)
|
||||
(setq cats (gnats::get-value-from-shell
|
||||
"send-pr" "-CL" send-pr:::site))
|
||||
(setenv "GNATS_ROOT" oldpr)
|
||||
(if entry (setcdr entry cats)
|
||||
(setq entry (cons send-pr:::site cats))
|
||||
(gnats::push entry send-pr::category-alist))))
|
||||
(setq send-pr:::categories (cdr entry))))
|
||||
|
||||
(defun send-pr::set-sites (&optional arg)
|
||||
"Get the list of sites (by listing the contents of DATADIR/gnats) and assign
|
||||
it to send-pr::sites. With arg, force update."
|
||||
(or (and (null arg) send-pr::sites)
|
||||
(progn
|
||||
(setq send-pr::sites nil)
|
||||
(mapcar
|
||||
(function
|
||||
(lambda (file)
|
||||
(or (memq t (mapcar (function (lambda (x) (string= x file)))
|
||||
'("." ".." "pr-edit" "pr-addr")))
|
||||
(not (file-readable-p file))
|
||||
(gnats::push (list (file-name-nondirectory file))
|
||||
send-pr::sites))))
|
||||
(directory-files (format "%s/gnats" send-pr:datadir) t))
|
||||
(setq send-pr::sites (reverse send-pr::sites)))))
|
||||
|
||||
(defconst send-pr::pr-buffer-name "*send-pr*"
|
||||
"Name of the temporary buffer, where the problem report gets composed.")
|
||||
|
||||
(defconst send-pr::err-buffer-name "*send-pr-error*"
|
||||
"Name of the temporary buffer, where send-pr error messages appear.")
|
||||
|
||||
(defvar send-pr:::err-buffer nil
|
||||
"The error buffer used by the current PR buffer.")
|
||||
|
||||
(defconst gnats::indent 17 "Indent for formatting the value.")
|
||||
|
||||
;;;;---------------------------------------------------------------------------
|
||||
;;;; `send-pr' - command for creating and sending of problem reports
|
||||
;;;;---------------------------------------------------------------------------
|
||||
|
||||
(fset 'send-pr 'send-pr:send-pr)
|
||||
(defun send-pr:send-pr (&optional site)
|
||||
"Create a buffer and read in the result of `send-pr -P'.
|
||||
When finished with editing the problem report use \\[send-pr:submit-pr]
|
||||
to send the PR with `send-pr -b -f -'."
|
||||
;;
|
||||
(interactive
|
||||
(if current-prefix-arg
|
||||
(list (completing-read "Site: " (send-pr::set-sites 'recheck) nil t
|
||||
send-pr:default-site))))
|
||||
(or site (setq site send-pr:default-site))
|
||||
(let ((buf (get-buffer send-pr::pr-buffer-name)))
|
||||
(if (or (not buf)
|
||||
(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)
|
||||
(switch-to-buffer (get-buffer-create send-pr::pr-buffer-name))
|
||||
(setq default-directory (expand-file-name "~/"))
|
||||
(auto-save-mode auto-save-default)
|
||||
(let ((oldpr (getenv "GNATS_ROOT"))
|
||||
(case-fold-search nil))
|
||||
(setenv "GNATS_ROOT" gnats:root)
|
||||
(shell-command (concat "send-pr -P " site) t)
|
||||
(setenv "GNATS_ROOT" oldpr)
|
||||
(if (looking-at "send-pr:")
|
||||
(cond ((looking-at "send-pr: .* does not have a categories list")
|
||||
(setq send-pr::sites nil)
|
||||
(error "send-pr: the GNATS site %s does not have a categories list" site))
|
||||
(t (error (buffer-substring (point-min) (point-max)))))
|
||||
(save-excursion
|
||||
;; Clear cruft inserted by bdamaged .cshrcs
|
||||
(re-search-forward "^SEND-PR:")
|
||||
(delete-region 1 (match-beginning 0)))))
|
||||
(set-buffer-modified-p nil)
|
||||
(send-pr:send-pr-mode)
|
||||
(setq send-pr:::site site)
|
||||
(send-pr::set-categories)
|
||||
(if (null send-pr:::categories)
|
||||
(progn
|
||||
(and send-pr:::err-buffer (kill-buffer send-pr:::err-buffer))
|
||||
(kill-buffer nil)
|
||||
(message "send-pr: no categories found"))
|
||||
(and mail-default-reply-to
|
||||
(gnats::set-mail-field "Reply-To" mail-default-reply-to))
|
||||
(and mail-self-blind
|
||||
(gnats::set-mail-field "BCC" (user-login-name)))
|
||||
(mapcar 'send-pr::maybe-change-field send-pr::fields)
|
||||
(gnats::position-on-field "Description")
|
||||
(message (substitute-command-keys
|
||||
"To send the problem report use: \\[send-pr:submit-pr]"))))
|
||||
|
||||
(fset 'do-send-pr 'send-pr:submit-pr) ;backward compat
|
||||
(defun send-pr:submit-pr ()
|
||||
"Pipe the contents of the buffer *send-pr* to `send-pr -f -.' unless this
|
||||
buffer was loaded with emacsclient, in which case save the buffer and exit."
|
||||
;;
|
||||
(interactive)
|
||||
(cond
|
||||
((and (boundp 'server-buffer-clients)
|
||||
server-buffer-clients)
|
||||
(let ((buffer (current-buffer))
|
||||
(version-control nil) (buffer-backed-up nil))
|
||||
(save-buffer buffer)
|
||||
(kill-buffer buffer)
|
||||
(server-buffer-done buffer)))
|
||||
(t
|
||||
(or (and send-pr:::err-buffer
|
||||
(buffer-name send-pr:::err-buffer))
|
||||
(setq send-pr:::err-buffer
|
||||
(get-buffer-create send-pr::err-buffer-name)))
|
||||
(let ((err-buffer send-pr:::err-buffer) mesg ok)
|
||||
(save-excursion (set-buffer err-buffer) (erase-buffer))
|
||||
(message "running send-pr...")
|
||||
(let ((oldpr (getenv "GNATS_ROOT")))
|
||||
(setenv "GNATS_ROOT" gnats:root)
|
||||
(call-process-region (point-min) (point-max) "send-pr"
|
||||
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
|
||||
;; this kluge to find out whether send-pr succeeded.
|
||||
(if (save-excursion
|
||||
(set-buffer err-buffer)
|
||||
(goto-char (point-min))
|
||||
(setq mesg (buffer-substring (point-min) (- (point-max) 1)))
|
||||
(search-forward "problem report sent" nil t))
|
||||
(progn (message mesg)
|
||||
(kill-buffer err-buffer)
|
||||
(delete-auto-save-file-if-necessary)
|
||||
(set-buffer-modified-p nil)
|
||||
(bury-buffer))
|
||||
(pop-to-buffer err-buffer))
|
||||
))))
|
||||
|
||||
;;;;---------------------------------------------------------------------------
|
||||
;;;; send-pr:send-pr-mode mode
|
||||
;;;;---------------------------------------------------------------------------
|
||||
|
||||
(defvar send-pr-mode-map
|
||||
(let ((map (make-sparse-keymap)))
|
||||
(define-key map "\C-c\C-c" 'send-pr:submit-pr)
|
||||
(define-key map "\C-c\C-f" 'gnats:change-field)
|
||||
(define-key map "\M-n" 'gnats:next-field)
|
||||
(define-key map "\M-p" 'gnats:previous-field)
|
||||
(define-key map "\C-\M-f" 'gnats:forward-field)
|
||||
(define-key map "\C-\M-b" 'gnats:backward-field)
|
||||
map)
|
||||
"Keymap for send-pr mode.")
|
||||
|
||||
(defconst gnats::keyword "^>\\([-a-zA-Z]+\\):")
|
||||
(defconst gnats::before-keyword "[ \t\n\f]*[\n\f]+>\\([-a-zA-Z]+\\):")
|
||||
(defconst gnats::after-keyword "^>\\([-a-zA-Z]+\\):[ \t\n\f]+")
|
||||
|
||||
(fset 'send-pr-mode 'send-pr:send-pr-mode)
|
||||
(defun send-pr:send-pr-mode ()
|
||||
"Major mode for submitting problem reports.
|
||||
For information about the form see gnats(1) and send-pr(1).
|
||||
Special commands: \\{send-pr-mode-map}
|
||||
Turning on send-pr-mode calls the value of the variable send-pr-mode-hook,
|
||||
if it is not nil."
|
||||
(interactive)
|
||||
(gnats::patch-exec-path)
|
||||
(put 'send-pr:send-pr-mode 'mode-class 'special)
|
||||
(kill-all-local-variables)
|
||||
(setq major-mode 'send-pr:send-pr-mode)
|
||||
(setq mode-name "send-pr")
|
||||
(use-local-map send-pr-mode-map)
|
||||
(set-syntax-table text-mode-syntax-table)
|
||||
(setq local-abbrev-table text-mode-abbrev-table)
|
||||
(setq buffer-offer-save t)
|
||||
(make-local-variable 'send-pr:::site)
|
||||
(make-local-variable 'send-pr:::categories)
|
||||
(make-local-variable 'send-pr:::err-buffer)
|
||||
(make-local-variable 'paragraph-separate)
|
||||
(setq paragraph-separate (concat (default-value 'paragraph-separate)
|
||||
"\\|" gnats::keyword "[ \t\n\f]*$"))
|
||||
(make-local-variable 'paragraph-start)
|
||||
(setq paragraph-start (concat (default-value 'paragraph-start)
|
||||
"\\|" gnats::keyword))
|
||||
(run-hooks 'send-pr-mode-hook)
|
||||
t)
|
||||
|
||||
;;;;---------------------------------------------------------------------------
|
||||
;;;; Functions to read and replace field values.
|
||||
;;;;---------------------------------------------------------------------------
|
||||
|
||||
(defun gnats::position-on-field (field)
|
||||
(goto-char (point-min))
|
||||
(if (not (re-search-forward (concat "^>" field ":") nil t))
|
||||
(error "Field `>%s:' not found." field)
|
||||
(re-search-forward "[ \t\n\f]*")
|
||||
(if (looking-at gnats::keyword)
|
||||
(backward-char 1))
|
||||
t))
|
||||
|
||||
(defun gnats::mail-position-on-field (field)
|
||||
(let (end
|
||||
(case-fold-search t))
|
||||
(goto-char (point-min))
|
||||
(re-search-forward "^$")
|
||||
(setq end (match-beginning 0))
|
||||
(goto-char (point-min))
|
||||
(if (not (re-search-forward (concat "^" field ":") end 'go-to-end))
|
||||
(insert field ": \n")
|
||||
(re-search-forward "[ \t\n\f]*"))
|
||||
(skip-chars-backward "\n")
|
||||
t))
|
||||
|
||||
(defun gnats::field-contents (field &optional elem move)
|
||||
(let (pos)
|
||||
(unwind-protect
|
||||
(save-excursion
|
||||
(if (not (gnats::position-on-field field))
|
||||
nil
|
||||
(setq pos (point-marker))
|
||||
(if (or (looking-at "<.*>$") (eolp))
|
||||
t
|
||||
(looking-at ".*$") ; to set match-{beginning,end}
|
||||
(gnats::nth-word
|
||||
(buffer-substring (match-beginning 0) (match-end 0))
|
||||
elem))))
|
||||
(and move pos (goto-char pos)))))
|
||||
|
||||
(defun gnats::functionp (thing)
|
||||
(or (and (symbolp thing) (fboundp thing))
|
||||
(and (listp thing) (eq (car thing) 'lambda))))
|
||||
|
||||
(defun gnats::field-values (field)
|
||||
"Return the possible (known) values for field FIELD."
|
||||
(let* ((fields (if (eq major-mode 'gnats:gnats-mode) gnats::fields
|
||||
send-pr::fields))
|
||||
(thing (elt (assoc field fields) 1)))
|
||||
(cond ((gnats::functionp thing) (funcall thing))
|
||||
((listp thing) thing)
|
||||
(t (error "ACK")))))
|
||||
|
||||
(defun gnats::field-default (field)
|
||||
"Return the default value for field FIELD."
|
||||
(let* ((fields (if (eq major-mode 'gnats:gnats-mode) gnats::fields
|
||||
send-pr::fields))
|
||||
(thing (elt (assoc field fields) 2)))
|
||||
(cond ((stringp thing) thing)
|
||||
((null thing) "")
|
||||
((numberp thing) (car (elt (gnats::field-values field) thing)))
|
||||
((gnats::functionp thing)
|
||||
(funcall thing (gnats::field-contents field)))
|
||||
((eq thing t) (gnats::field-contents field))
|
||||
(t (error "ACK")))))
|
||||
|
||||
(defun gnats::field-type (field)
|
||||
"Return the type of field FIELD."
|
||||
(let* ((fields (if (eq major-mode 'gnats:gnats-mode) gnats::fields
|
||||
send-pr::fields))
|
||||
(thing (elt (assoc field fields) 3)))
|
||||
thing))
|
||||
|
||||
(defun gnats::field-action (field)
|
||||
"Return the extra handling function for field FIELD."
|
||||
(let* ((fields (if (eq major-mode 'gnats:gnats-mode) gnats::fields
|
||||
send-pr::fields))
|
||||
(thing (elt (assoc field fields) 4)))
|
||||
(cond ((null thing) 'ignore)
|
||||
((gnats::functionp thing) thing)
|
||||
(t (error "ACK")))))
|
||||
|
||||
;;;;---------------------------------------------------------------------------
|
||||
;;;; Point movement functions
|
||||
;;;;---------------------------------------------------------------------------
|
||||
|
||||
(or (fboundp 'defsubst) (fset 'defsubst 'defun))
|
||||
|
||||
(defun send-pr::maybe-change-field (field)
|
||||
(setq field (car field))
|
||||
(let ((thing (gnats::field-contents field)))
|
||||
(and thing (eq t thing)
|
||||
(not (eq 'multi-text (gnats::field-type field)))
|
||||
(gnats:change-field field))))
|
||||
|
||||
(defun gnats:change-field (&optional field default)
|
||||
"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)
|
||||
(or field current-prefix-arg (setq field (gnats::current-field)))
|
||||
(or 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)
|
||||
(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))))
|
||||
|
||||
(defun gnats::set-field (field value)
|
||||
(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)
|
||||
(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.
|
||||
If where is nil, then point is not changed; if where is t then point is moved
|
||||
to the beginning of the keyword, otherwise it is moved to the beginning
|
||||
of the white space it was in."
|
||||
;;
|
||||
(if (looking-at gnats::before-keyword)
|
||||
(prog1 t
|
||||
(cond ((eq where t)
|
||||
(re-search-forward "^>") (backward-char))
|
||||
((not (eq where nil))
|
||||
(re-search-backward "[^ \t\n\f]") (forward-char))))
|
||||
nil))
|
||||
|
||||
(defun gnats::after-keyword (&optional where)
|
||||
"Returns t if point is in some white space after a keyword.
|
||||
If where is nil, then point is not changed; if where is t then point is moved
|
||||
to the beginning of the keyword, otherwise it is moved to the end of the white
|
||||
space it was in."
|
||||
;;
|
||||
(if (gnats::looking-after gnats::after-keyword)
|
||||
(prog1 t
|
||||
(cond ((eq where t)
|
||||
(re-search-backward "^>"))
|
||||
((not (eq where nil))
|
||||
(re-search-forward "[^ \t\n\f]") (backward-char))))
|
||||
nil))
|
||||
|
||||
(defun gnats::in-keyword (&optional where)
|
||||
"Returns t if point is within a keyword.
|
||||
If where is nil, then point is not changed; if where is t then point is moved
|
||||
to the beginning of the keyword."
|
||||
;;
|
||||
(let ((old-point (point-marker)))
|
||||
(beginning-of-line)
|
||||
(cond ((and (looking-at gnats::keyword)
|
||||
(< old-point (match-end 0)))
|
||||
(prog1 t
|
||||
(if (eq where t)
|
||||
t
|
||||
(goto-char old-point))))
|
||||
(t (goto-char old-point)
|
||||
nil))))
|
||||
|
||||
(defun gnats::forward-bofield ()
|
||||
"Moves point to the beginning of a field. Assumes that point is in the
|
||||
keyword."
|
||||
;;
|
||||
(if (re-search-forward "[ \t\n\f]+[^ \t\n\f]" (point-max) '-)
|
||||
(backward-char)
|
||||
t))
|
||||
|
||||
(defun gnats::backward-eofield ()
|
||||
"Moves point to the end of a field. Assumes point is in the keyword."
|
||||
;;
|
||||
(if (re-search-backward "[^ \t\n\f][ \t\n\f]+" (point-min) '-)
|
||||
(forward-char)
|
||||
t))
|
||||
|
||||
(defun gnats::forward-eofield ()
|
||||
"Moves point to the end of a field. Assumes that point is in the field."
|
||||
;;
|
||||
;; look for the next field
|
||||
(if (re-search-forward gnats::keyword (point-max) '-)
|
||||
(progn (beginning-of-line) (gnats::backward-eofield))
|
||||
(re-search-backward "[^ \t\n\f][ \t\n\f]*" (point-min) '-)
|
||||
(forward-char)))
|
||||
|
||||
(defun gnats::backward-bofield ()
|
||||
"Moves point to the beginning of a field. Assumes that point is in the
|
||||
field."
|
||||
;;
|
||||
;;look for previous field
|
||||
(if (re-search-backward gnats::keyword (point-min) '-)
|
||||
(gnats::forward-bofield)
|
||||
t))
|
||||
|
||||
|
||||
(defun gnats:forward-field ()
|
||||
"Move point forward to the end of the field or to the beginning of the next
|
||||
field."
|
||||
;;
|
||||
(interactive)
|
||||
(if (or (gnats::before-keyword t) (gnats::in-keyword t)
|
||||
(gnats::after-keyword t))
|
||||
(gnats::forward-bofield)
|
||||
(gnats::forward-eofield)))
|
||||
|
||||
(defun gnats:backward-field ()
|
||||
"Move point backward to the beginning/end of a field."
|
||||
;;
|
||||
(interactive)
|
||||
(backward-char)
|
||||
(if (or (gnats::before-keyword t) (gnats::in-keyword t)
|
||||
(gnats::after-keyword t))
|
||||
(gnats::backward-eofield)
|
||||
(gnats::backward-bofield)))
|
||||
|
||||
(defun gnats:next-field ()
|
||||
"Move point to the beginning of the next field."
|
||||
;;
|
||||
(interactive)
|
||||
(if (or (gnats::before-keyword t) (gnats::in-keyword t)
|
||||
(gnats::after-keyword t))
|
||||
(gnats::forward-bofield)
|
||||
(if (re-search-forward gnats::keyword (point-max) '-)
|
||||
(gnats::forward-bofield)
|
||||
t)))
|
||||
|
||||
(defun gnats:previous-field ()
|
||||
"Move point to the beginning of the previous field."
|
||||
;;
|
||||
(interactive)
|
||||
(backward-char)
|
||||
(if (or (gnats::after-keyword t) (gnats::in-keyword t)
|
||||
(gnats::before-keyword t))
|
||||
(progn (re-search-backward gnats::keyword (point-min) '-)
|
||||
(gnats::forward-bofield))
|
||||
(gnats::backward-bofield)))
|
||||
|
||||
(defun gnats:beginning-of-field ()
|
||||
"Move point to the beginning of the current field."
|
||||
(interactive)
|
||||
(cond ((gnats::in-keyword t)
|
||||
(gnats::forward-bofield))
|
||||
((gnats::after-keyword 0))
|
||||
(t
|
||||
(gnats::backward-bofield))))
|
||||
|
||||
(defun gnats::current-field ()
|
||||
(save-excursion
|
||||
(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
|
||||
;;;;---------------------------------------------------------------------------
|
||||
|
||||
(defun gnats::looking-after (regex)
|
||||
"Returns t if point is after regex."
|
||||
;;
|
||||
(let* ((old-point (point))
|
||||
(start (if (eobp)
|
||||
old-point
|
||||
(forward-char) (point))))
|
||||
(cond ((re-search-backward regex (point-min) t)
|
||||
(goto-char old-point)
|
||||
(cond ((eq (match-end 0) start)
|
||||
t))))))
|
||||
|
||||
(defun gnats::nth-word (string &optional elem)
|
||||
"Returns the elem-th word of the string.
|
||||
If elem is nil, then the first wort is returned, if elem is 0 then
|
||||
the whole string is returned."
|
||||
;;
|
||||
(if (integerp elem)
|
||||
(cond ((eq elem 0) string)
|
||||
((eq elem 1) (gnats::first-word string))
|
||||
((equal string "") "")
|
||||
((>= elem 2)
|
||||
(let ((i 0) (value ""))
|
||||
(setq string ; strip leading blanks
|
||||
(substring string (or (string-match "[^ \t]" string) 0)))
|
||||
(while (< i elem)
|
||||
(setq value
|
||||
(substring string 0
|
||||
(string-match "[ \t]*$\\|[ \t]+" string)))
|
||||
(setq string
|
||||
(substring string (match-end 0)))
|
||||
(setq i (+ i 1)))
|
||||
value)))
|
||||
(gnats::first-word string)))
|
||||
|
||||
(defun gnats::first-word (string)
|
||||
(setq string
|
||||
(substring string (or (string-match "[^ \t]" string) 0)))
|
||||
(substring string 0 (string-match "[ \t]*$\\|[ \t]+" string)))
|
||||
|
||||
;;;;---------------------------------------------------------------------------
|
||||
|
||||
(defun gnats::patch-exec-path ()
|
||||
;;
|
||||
"Replaces `//' by `/' in `exec-path'."
|
||||
;;
|
||||
;(make-local-variable 'exec-path)
|
||||
(let ((err-buffer (get-buffer-create " *gnats::patch-exec-path*"))
|
||||
(ret))
|
||||
(setq exec-path (save-excursion (set-buffer err-buffer)
|
||||
(prin1 exec-path err-buffer)
|
||||
(goto-char (point-min))
|
||||
(replace-string "//" "/")
|
||||
(goto-char (point-min))
|
||||
(setq ret (read err-buffer))
|
||||
(kill-buffer err-buffer)
|
||||
ret
|
||||
))))
|
||||
|
||||
(defun gnats::get-value-from-shell (&rest command)
|
||||
"Execute shell command to get a list of valid values for `variable'."
|
||||
;;
|
||||
(let ((err-buffer (get-buffer-create " *gnats::get-value-from-shell*")))
|
||||
(save-excursion
|
||||
(set-buffer err-buffer)
|
||||
(unwind-protect
|
||||
(condition-case var
|
||||
(progn
|
||||
(apply 'call-process
|
||||
(car command) nil err-buffer nil (cdr command))
|
||||
(goto-char (point-min))
|
||||
(if (looking-at "[-a-z]+: ")
|
||||
(error (buffer-substring (point-min) (point-max))))
|
||||
(read err-buffer))
|
||||
(error nil))
|
||||
(kill-buffer err-buffer)))))
|
||||
|
||||
(or (fboundp 'setenv)
|
||||
(defun setenv (variable &optional value)
|
||||
"Set the value of the environment variable named VARIABLE to VALUE.
|
||||
VARIABLE should be a string. VALUE is optional; if not provided or is
|
||||
`nil', the environment variable VARIABLE will be removed.
|
||||
This function works by modifying `process-environment'."
|
||||
(interactive "sSet environment variable: \nsSet %s to value: ")
|
||||
(if (string-match "=" variable)
|
||||
(error "Environment variable name `%s' contains `='" variable)
|
||||
(let ((pattern (concat "\\`" (regexp-quote (concat variable "="))))
|
||||
(case-fold-search nil)
|
||||
(scan process-environment))
|
||||
(while scan
|
||||
(cond
|
||||
((string-match pattern (car scan))
|
||||
(if (eq nil value)
|
||||
(setq process-environment (delq (car scan)
|
||||
process-environment))
|
||||
(setcar scan (concat variable "=" value)))
|
||||
(setq scan nil))
|
||||
((null (setq scan (cdr scan)))
|
||||
(setq process-environment
|
||||
(cons (concat variable "=" value)
|
||||
process-environment)))))))))
|
||||
|
||||
;;;; end of send-pr.el
|
1604
external/gpl2/send-pr/dist/send-pr/send-pr.info
vendored
Normal file
1604
external/gpl2/send-pr/dist/send-pr/send-pr.info
vendored
Normal file
File diff suppressed because it is too large
Load Diff
269
external/gpl2/send-pr/dist/send-pr/send-pr.man
vendored
Normal file
269
external/gpl2/send-pr/dist/send-pr/send-pr.man
vendored
Normal file
@ -0,0 +1,269 @@
|
||||
.\" -*- nroff -*-
|
||||
.\" ---------------------------------------------------------------------------
|
||||
.\" man page for send-pr (by Heinz G. Seidl, hgs@cygnus.com)
|
||||
.\" updated Feb 1993 for GNATS 3.00 by Jeffrey Osier, jeffrey@cygnus.com
|
||||
.\"
|
||||
.\" This file is part of the Problem Report Management System (GNATS)
|
||||
.\" Copyright 1992 Cygnus Support
|
||||
.\"
|
||||
.\" 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 of the License, 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 Library General Public
|
||||
.\" License along with this program; if not, write to the Free
|
||||
.\" Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA
|
||||
.\"
|
||||
.\" ---------------------------------------------------------------------------
|
||||
.nh
|
||||
.TH SEND-PR 1 xVERSIONx "February 1993"
|
||||
.SH NAME
|
||||
send-pr \- send problem report (PR) to a central support site
|
||||
.SH SYNOPSIS
|
||||
.B send-pr
|
||||
[
|
||||
.I site
|
||||
]
|
||||
[
|
||||
.B \-f
|
||||
.I problem-report
|
||||
]
|
||||
[
|
||||
.B \-t
|
||||
.I mail-address
|
||||
]
|
||||
.br
|
||||
.in +0.8i
|
||||
[
|
||||
.B \-P
|
||||
]
|
||||
[
|
||||
.B \-L
|
||||
]
|
||||
[
|
||||
.B \-\-request-id
|
||||
]
|
||||
[
|
||||
.B \-v
|
||||
]
|
||||
.SH DESCRIPTION
|
||||
.B send-pr
|
||||
is a tool used to submit
|
||||
.I problem reports
|
||||
.\" SITE ADMINISTRATORS - change this if you use a local default
|
||||
(PRs) to a central support site. In most cases the correct
|
||||
.I site
|
||||
will be the default. This argument indicates the support site which
|
||||
is responsible for the category of problem involved. Some sites may
|
||||
use a local address as a default.
|
||||
.I site
|
||||
values are defined by using the
|
||||
.BR aliases (5).
|
||||
.LP
|
||||
.B 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,
|
||||
.B send-pr
|
||||
sends the completed form to the
|
||||
.I Problem Report Management System
|
||||
(\fBGNATS\fR) at a central support site. At the support site, the PR
|
||||
is assigned a unique number and is stored in the \fBGNATS\fR database
|
||||
according to its category and submitter-id. \fBGNATS\fR automatically
|
||||
replies with an acknowledgement, citing the category and the PR
|
||||
number.
|
||||
.LP
|
||||
To ensure that a PR is handled promptly, it should contain your (unique)
|
||||
\fIsubmitter-id\fR and one of the available \fIcategories\fR to identify the
|
||||
problem area. (Use
|
||||
.B `send-pr -L'
|
||||
to see a list of categories.)
|
||||
.LP
|
||||
The
|
||||
.B send-pr
|
||||
template at your site should already be customized with your
|
||||
submitter-id (running `\|\fBinstall-sid\fP \fIsubmitter-id\fP\|' to
|
||||
accomplish this is part of the installation procedures for
|
||||
.BR send-pr ).
|
||||
If this hasn't been done, see your system administrator for your
|
||||
submitter-id, or request one from your support site by invoking
|
||||
.B `send-pr \-\-request\-id'.
|
||||
If your site does not distinguish between different user sites, or if
|
||||
you are not affiliated with the support site, use
|
||||
.B `net'
|
||||
for this field.
|
||||
.LP
|
||||
The more precise your problem description and the more complete your
|
||||
information, the faster your support team can solve your problems.
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
.BI \-f " problem-report"
|
||||
specify a file (\fIproblem-report\fR) which already contains a
|
||||
complete problem report.
|
||||
.B send-pr
|
||||
sends the contents of the file without invoking the editor. If
|
||||
the value for
|
||||
.I problem-report
|
||||
is
|
||||
.BR `\|\-\|' ,
|
||||
then
|
||||
.B send-pr
|
||||
reads from standard input.
|
||||
.TP
|
||||
.BI \-t " mail-address"
|
||||
Change mail address at the support site for problem reports. The
|
||||
default
|
||||
.I mail-address
|
||||
is the address used for the default
|
||||
.IR site .
|
||||
Use the
|
||||
.I site
|
||||
argument rather than this option in nearly all cases.
|
||||
.TP
|
||||
.B \-P
|
||||
print the form specified by the environment variable
|
||||
.B PR_FORM
|
||||
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.
|
||||
.TP
|
||||
.B \-\-request\-id
|
||||
sends mail to the default support site, or
|
||||
.I site
|
||||
if specified, with a request for your
|
||||
.IR submitter-id .
|
||||
If you are
|
||||
not affiliated with
|
||||
.IR site ,
|
||||
use a
|
||||
.I submitter-id
|
||||
of
|
||||
.BR net \|'.
|
||||
.TP
|
||||
.B \-v
|
||||
Display the
|
||||
.B send-pr
|
||||
version number.
|
||||
.LP
|
||||
Note: use
|
||||
.B send-pr
|
||||
to submit problem reports rather than mailing them directly. Using
|
||||
both the template and
|
||||
.B send-pr
|
||||
itself will help ensure all necessary information will reach the
|
||||
support site.
|
||||
.SH ENVIRONMENT
|
||||
The environment variable
|
||||
.B EDITOR
|
||||
specifies the editor to invoke on the template.
|
||||
.br
|
||||
default:
|
||||
.B vi
|
||||
.sp
|
||||
If the environment variable
|
||||
.B PR_FORM
|
||||
is set, then its value is used as the file name of the template for
|
||||
your problem-report editing session. You can use this to start with a
|
||||
partially completed form (for example, a form with the identification
|
||||
fields already completed).
|
||||
.SH "HOW TO FILL OUT A PROBLEM REPORT"
|
||||
Problem reports have to be in a particular form so that a program can
|
||||
easily manage them. Please remember the following guidelines:
|
||||
.IP \(bu 3m
|
||||
describe only
|
||||
.B one problem
|
||||
with each problem report.
|
||||
.IP \(bu 3m
|
||||
For follow-up mail, use the same subject line as the one in the automatic
|
||||
acknowledgent. It consists of category, PR number and the original synopsis
|
||||
line. This allows the support site to relate several mail messages to a
|
||||
particular PR and to record them automatically.
|
||||
.IP \(bu 3m
|
||||
Please try to be as accurate as possible in the subject and/or synopsis line.
|
||||
.IP \(bu 3m
|
||||
The subject and the synopsis line are not confidential. This is
|
||||
because open-bugs lists are compiled from them. Avoid confidential
|
||||
information there.
|
||||
.LP
|
||||
See the GNU
|
||||
.B Info
|
||||
file
|
||||
.B send-pr.info
|
||||
or the document \fIReporting Problems With send-pr\fR\ for detailed
|
||||
information on reporting problems
|
||||
.SH "HOW TO SUBMIT TEST CASES, CODE, ETC."
|
||||
Submit small code samples with the PR. Contact the support site for
|
||||
instructions on submitting larger test cases and problematic source
|
||||
code.
|
||||
.SH FILES
|
||||
.ta \w'/tmp/pbad$$ 'u
|
||||
/tmp/p$$ copy of PR used in editing session
|
||||
.br
|
||||
/tmp/pf$$ copy of empty PR form, for testing purposes
|
||||
.br
|
||||
/tmp/pbad$$ file for rejected PRs
|
||||
.SH EMACS USER INTERFACE
|
||||
An Emacs user interface for
|
||||
.B send-pr
|
||||
with completion of field values is part of the
|
||||
.B send-pr
|
||||
distribution (invoked with
|
||||
.BR "M-x send-pr" ).
|
||||
See the file
|
||||
.B send-pr.info
|
||||
or the ASCII file
|
||||
.B INSTALL
|
||||
in the top level directory of the distribution for configuration and
|
||||
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
|
||||
.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, Jason Merrill, Heinz G. Seidl (Cygnus
|
||||
Support)
|
||||
.SH COPYING
|
||||
Copyright (c) 1992, 1993 Free Software Foundation, Inc.
|
||||
.PP
|
||||
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.
|
||||
.PP
|
||||
Permission is granted to copy and distribute modified versions of this
|
||||
manual under the conditions for verbatim copying, provided that the
|
||||
entire resulting derived work is distributed under the terms of a
|
||||
permission notice identical to this one.
|
||||
.PP
|
||||
Permission is granted to copy and distribute translations of this
|
||||
manual into another language, under the above conditions for modified
|
||||
versions, except that this permission notice may be included in
|
||||
translations approved by the Free Software Foundation instead of in
|
||||
the original English.
|
||||
|
519
external/gpl2/send-pr/dist/send-pr/send-pr.sh
vendored
Executable file
519
external/gpl2/send-pr/dist/send-pr/send-pr.sh
vendored
Executable file
@ -0,0 +1,519 @@
|
||||
#!/bin/sh
|
||||
# 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).
|
||||
#
|
||||
# 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.
|
||||
|
||||
# The version of this send-pr.
|
||||
VERSION=xVERSIONx
|
||||
|
||||
# The submitter-id for your site.
|
||||
SUBMITTER=xSUBMITTERx
|
||||
|
||||
# Where the GNATS directory lives, if at all.
|
||||
[ -z "$GNATS_ROOT" ] &&
|
||||
GNATS_ROOT=xGNATS_ROOTx
|
||||
|
||||
# The default mail address for PR submissions.
|
||||
GNATS_ADDR=xGNATS_ADDRx
|
||||
|
||||
# Where the gnats category tree lives.
|
||||
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="xDEFAULT_RELEASEx"
|
||||
|
||||
# The default organization.
|
||||
DEFAULT_ORGANIZATION="xDEFAULT_ORGANIZATIONx"
|
||||
|
||||
# The default site to look for.
|
||||
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="xMAIL_AGENTx"
|
||||
|
||||
ECHON=xECHONx
|
||||
|
||||
if [ $ECHON = bsd ] ; then
|
||||
ECHON1="echo -n"
|
||||
ECHON2=
|
||||
elif [ $ECHON = sysv ] ; then
|
||||
ECHON1=echo
|
||||
ECHON2='\c'
|
||||
else
|
||||
ECHON1=echo
|
||||
ECHON2=
|
||||
fi
|
||||
|
||||
#
|
||||
|
||||
[ -z "$TMPDIR" ] && TMPDIR=/tmp
|
||||
|
||||
TEMP=$TMPDIR/p$$
|
||||
BAD=$TMPDIR/pbad$$
|
||||
REF=$TMPDIR/pf$$
|
||||
|
||||
if [ -z "$LOGNAME" -a -n "$USER" ]; then
|
||||
LOGNAME=$USER
|
||||
fi
|
||||
|
||||
FROM="$LOGNAME"
|
||||
REPLY_TO="$LOGNAME"
|
||||
|
||||
# Find out the name of the originator of this PR.
|
||||
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
|
||||
ORIGINATOR="`cat $TEMP`"
|
||||
rm -f $TEMP
|
||||
fi
|
||||
|
||||
if [ -n "$ORGANIZATION" ]; then
|
||||
if [ -f "$ORGANIZATION" ]; then
|
||||
ORGANIZATION="`cat $ORGANIZATION`"
|
||||
fi
|
||||
else
|
||||
if [ -n "$DEFAULT_ORGANIZATION" ]; then
|
||||
ORGANIZATION="$DEFAULT_ORGANIZATION"
|
||||
elif [ -f $HOME/.organization ]; then
|
||||
ORGANIZATION="`cat $HOME/.organization`"
|
||||
elif [ -f $HOME/.signature ]; then
|
||||
ORGANIZATION="`cat $HOME/.signature`"
|
||||
fi
|
||||
fi
|
||||
|
||||
# If they don't have a preferred editor set, then use
|
||||
if [ -z "$VISUAL" ]; then
|
||||
if [ -z "$EDITOR" ]; then
|
||||
EDIT=vi
|
||||
else
|
||||
EDIT="$EDITOR"
|
||||
fi
|
||||
else
|
||||
EDIT="$VISUAL"
|
||||
fi
|
||||
|
||||
# Find out some information.
|
||||
SYSTEM=`( [ -f /bin/uname ] && /bin/uname -a ) || \
|
||||
( [ -f /usr/bin/uname ] && /usr/bin/uname -a ) || echo ""`
|
||||
ARCH=`[ -f /bin/arch ] && /bin/arch`
|
||||
MACHINE=`[ -f /bin/machine ] && /bin/machine`
|
||||
|
||||
COMMAND=`echo $0 | sed -e 's,.*/,,'`
|
||||
USAGE="Usage: $COMMAND [-PVL] [-t address] [-f filename] [--request-id]
|
||||
[--version]"
|
||||
REMOVE=
|
||||
BATCH=
|
||||
|
||||
while [ $# -gt 0 ]; do
|
||||
case "$1" in
|
||||
-r) ;; # Ignore for backward compat.
|
||||
-t | --to) if [ $# -eq 1 ]; then echo "$USAGE"; exit 1; fi
|
||||
shift ; GNATS_ADDR="$1"
|
||||
EXPLICIT_GNATS_ADDR=true
|
||||
;;
|
||||
-f | --file) if [ $# -eq 1 ]; then echo "$USAGE"; exit 1; fi
|
||||
shift ; IN_FILE="$1"
|
||||
if [ "$IN_FILE" != "-" -a ! -r "$IN_FILE" ]; then
|
||||
echo "$COMMAND: cannot read $IN_FILE"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
-b | --batch) BATCH=true ;;
|
||||
-p | -P | --print) PRINT=true ;;
|
||||
-L | --list) FORMAT=norm ;;
|
||||
-l | -CL | --lisp) FORMAT=lisp ;;
|
||||
--request-id) REQUEST_ID=true ;;
|
||||
-h | --help) echo "$USAGE"; exit 0 ;;
|
||||
-V | --version) echo "$VERSION"; exit 0 ;;
|
||||
-*) echo "$USAGE" ; exit 1 ;;
|
||||
*) if [ -z "$USER_GNATS_SITE" ]; then
|
||||
if [ ! -r "$DATADIR/gnats/$1" ]; then
|
||||
echo "$COMMAND: the GNATS site $1 does not have a categories list."
|
||||
exit 1
|
||||
else
|
||||
# The site name is the alias they'll have to have created.
|
||||
USER_GNATS_SITE=$1
|
||||
fi
|
||||
else
|
||||
echo "$USAGE" ; exit 1
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
if [ -n "$USER_GNATS_SITE" ]; then
|
||||
GNATS_SITE=$USER_GNATS_SITE
|
||||
GNATS_ADDR=$USER_GNATS_SITE-gnats
|
||||
fi
|
||||
|
||||
if [ "$SUBMITTER" = "unknown" -a -z "$REQUEST_ID" -a -z "$IN_FILE" ]; then
|
||||
cat << '__EOF__'
|
||||
It seems that send-pr is not installed with your unique submitter-id.
|
||||
You need to run
|
||||
|
||||
install-sid YOUR-SID
|
||||
|
||||
where YOUR-SID is the identification code you received with `send-pr'.
|
||||
`send-pr' will automatically insert this value into the template field
|
||||
`>Submitter-Id'. If you've downloaded `send-pr' from the Net, use `net'
|
||||
for this value. If you do not know your id, run `send-pr --request-id' to
|
||||
get one from your support site.
|
||||
__EOF__
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -r "$DATADIR/gnats/$GNATS_SITE" ]; then
|
||||
CATEGORIES=`grep -v '^#' $DATADIR/gnats/$GNATS_SITE | sort`
|
||||
else
|
||||
echo "$COMMAND: could not read $DATADIR/gnats/$GNATS_SITE for categories list."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$CATEGORIES" ]; then
|
||||
echo "$COMMAND: the categories list for $GNATS_SITE was empty!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
case "$FORMAT" in
|
||||
lisp) echo "$CATEGORIES" | \
|
||||
awk 'BEGIN {printf "( "} {printf "(\"%s\") ",$0} END {printf ")\n"}'
|
||||
exit 0
|
||||
;;
|
||||
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
|
||||
;;
|
||||
esac
|
||||
|
||||
ORIGINATOR_C='<name of the PR author (one line)>'
|
||||
ORGANIZATION_C='<organization of PR author (multiple lines)>'
|
||||
CONFIDENTIAL_C='<[ yes | no ] (one line)>'
|
||||
SYNOPSIS_C='<synopsis of the problem (one line)>'
|
||||
SEVERITY_C='<[ non-critical | serious | critical ] (one line)>'
|
||||
PRIORITY_C='<[ low | medium | high ] (one line)>'
|
||||
CATEGORY_C='<name of the product (one line)>'
|
||||
CLASS_C='<[ sw-bug | doc-bug | change-request | support ] (one line)>'
|
||||
RELEASE_C='<release number or tag (one line)>'
|
||||
ENVIRONMENT_C='<machine, os, target, libraries (multiple lines)>'
|
||||
DESCRIPTION_C='<precise description of the problem (multiple lines)>'
|
||||
HOW_TO_REPEAT_C='<code/input/activities to reproduce the problem (multiple lines)>'
|
||||
FIX_C='<how to correct or work around the problem, if known (multiple lines)>'
|
||||
|
||||
# Catch some signals. ($xs kludge needed by Sun /bin/sh)
|
||||
xs=0
|
||||
trap 'rm -f $REF $TEMP; exit $xs' 0
|
||||
trap 'echo "$COMMAND: Aborting ..."; rm -f $REF $TEMP; xs=1; exit' 1 2 3 13 15
|
||||
|
||||
# If they told us to use a specific file, then do so.
|
||||
if [ -n "$IN_FILE" ]; then
|
||||
if [ "$IN_FILE" = "-" ]; then
|
||||
# The PR is coming from the standard input.
|
||||
if [ -n "$EXPLICIT_GNATS_ADDR" ]; then
|
||||
sed -e "s;^[Tt][Oo]:.*;To: $GNATS_ADDR;" > $TEMP
|
||||
else
|
||||
cat > $TEMP
|
||||
fi
|
||||
else
|
||||
# Use the file they named.
|
||||
if [ -n "$EXPLICIT_GNATS_ADDR" ]; then
|
||||
sed -e "s;^[Tt][Oo]:.*;To: $GNATS_ADDR;" $IN_FILE > $TEMP
|
||||
else
|
||||
cat $IN_FILE > $TEMP
|
||||
fi
|
||||
fi
|
||||
else
|
||||
|
||||
if [ -n "$PR_FORM" -a -z "$PRINT_INTERN" ]; then
|
||||
# If their PR_FORM points to a bogus entry, then bail.
|
||||
if [ ! -f "$PR_FORM" -o ! -r "$PR_FORM" -o ! -s "$PR_FORM" ]; then
|
||||
echo "$COMMAND: can't seem to read your template file (\`$PR_FORM'), ignoring PR_FORM"
|
||||
sleep 1
|
||||
PRINT_INTERN=bad_prform
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -n "$PR_FORM" -a -z "$PRINT_INTERN" ]; then
|
||||
cp $PR_FORM $TEMP ||
|
||||
( echo "$COMMAND: could not copy $PR_FORM" ; xs=1; exit )
|
||||
else
|
||||
for file in $TEMP $REF ; do
|
||||
cat > $file << '__EOF__'
|
||||
SEND-PR: -*- send-pr -*-
|
||||
SEND-PR: Lines starting with `SEND-PR' will be removed automatically, as
|
||||
SEND-PR: will all comments (text enclosed in `<' and `>').
|
||||
SEND-PR:
|
||||
SEND-PR: Please consult the send-pr man page `send-pr(1)' or the Texinfo
|
||||
SEND-PR: manual if you are not sure how to fill out a problem report.
|
||||
SEND-PR:
|
||||
SEND-PR: Choose from the following categories:
|
||||
SEND-PR:
|
||||
__EOF__
|
||||
|
||||
# Format the categories so they fit onto lines.
|
||||
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
|
||||
Subject:
|
||||
From: $FROM
|
||||
Reply-To: $REPLY_TO
|
||||
X-send-pr-version: $VERSION
|
||||
|
||||
|
||||
>Submitter-Id: $SUBMITTER
|
||||
>Originator: $ORIGINATOR
|
||||
>Organization:
|
||||
`
|
||||
if [ -n "$ORGANIZATION" ]; then
|
||||
echo "$ORGANIZATION"
|
||||
else
|
||||
echo " $ORGANIZATION_C" ;
|
||||
fi ;
|
||||
`
|
||||
>Confidential: $CONFIDENTIAL_C
|
||||
>Synopsis: $SYNOPSIS_C
|
||||
>Severity: $SEVERITY_C
|
||||
>Priority: $PRIORITY_C
|
||||
>Category: $CATEGORY_C
|
||||
>Class: $CLASS_C
|
||||
>Release: `if [ -n "$DEFAULT_RELEASE" ]; then
|
||||
echo "$DEFAULT_RELEASE"
|
||||
else
|
||||
echo " $RELEASE_C"
|
||||
fi; `
|
||||
>Environment:
|
||||
$ENVIRONMENT_C
|
||||
`[ -n "$SYSTEM" ] && echo System: $SYSTEM`
|
||||
`[ -n "$ARCH" ] && echo Architecture: $ARCH`
|
||||
`[ -n "$MACHINE" ] && echo Machine: $MACHINE`
|
||||
>Description:
|
||||
$DESCRIPTION_C
|
||||
>How-To-Repeat:
|
||||
$HOW_TO_REPEAT_C
|
||||
>Fix:
|
||||
$FIX_C
|
||||
__EOF__
|
||||
done
|
||||
fi
|
||||
|
||||
if [ "$PRINT" = true -o "$PRINT_INTERN" = true ]; then
|
||||
cat $TEMP
|
||||
xs=0; exit
|
||||
fi
|
||||
|
||||
chmod u+w $TEMP
|
||||
if [ -z "$REQUEST_ID" ]; then
|
||||
eval $EDIT $TEMP
|
||||
else
|
||||
ed -s $TEMP << '__EOF__'
|
||||
/^Subject/s/^Subject:.*/Subject: request for a customer id/
|
||||
/^>Category/s/^>Category:.*/>Category: send-pr/
|
||||
w
|
||||
q
|
||||
__EOF__
|
||||
fi
|
||||
|
||||
if cmp -s $REF $TEMP ; then
|
||||
echo "$COMMAND: problem report not filled out, therefore not sent"
|
||||
xs=1; exit
|
||||
fi
|
||||
fi
|
||||
|
||||
#
|
||||
# Check the enumeration fields
|
||||
|
||||
# This is a "sed-subroutine" with one keyword parameter
|
||||
# (with workaround for Sun sed bug)
|
||||
#
|
||||
SED_CMD='
|
||||
/$PATTERN/{
|
||||
s|||
|
||||
s|<.*>||
|
||||
s|^[ ]*||
|
||||
s|[ ]*$||
|
||||
p
|
||||
q
|
||||
}'
|
||||
|
||||
|
||||
while [ -z "$REQUEST_ID" ]; do
|
||||
CNT=0
|
||||
|
||||
# 1) Confidential
|
||||
#
|
||||
PATTERN=">Confidential:"
|
||||
CONFIDENTIAL=`eval sed -n -e "\"$SED_CMD\"" $TEMP`
|
||||
case "$CONFIDENTIAL" in
|
||||
""|yes|no) CNT=`expr $CNT + 1` ;;
|
||||
*) echo "$COMMAND: \`$CONFIDENTIAL' is not a valid value for \`Confidential'." ;;
|
||||
esac
|
||||
#
|
||||
# 2) Severity
|
||||
#
|
||||
PATTERN=">Severity:"
|
||||
SEVERITY=`eval sed -n -e "\"$SED_CMD\"" $TEMP`
|
||||
case "$SEVERITY" in
|
||||
""|non-critical|serious|critical) CNT=`expr $CNT + 1` ;;
|
||||
*) echo "$COMMAND: \`$SEVERITY' is not a valid value for \`Severity'."
|
||||
esac
|
||||
#
|
||||
# 3) Priority
|
||||
#
|
||||
PATTERN=">Priority:"
|
||||
PRIORITY=`eval sed -n -e "\"$SED_CMD\"" $TEMP`
|
||||
case "$PRIORITY" in
|
||||
""|low|medium|high) CNT=`expr $CNT + 1` ;;
|
||||
*) echo "$COMMAND: \`$PRIORITY' is not a valid value for \`Priority'."
|
||||
esac
|
||||
#
|
||||
# 4) Category
|
||||
#
|
||||
PATTERN=">Category:"
|
||||
CATEGORY=`eval sed -n -e "\"$SED_CMD\"" $TEMP`
|
||||
FOUND=
|
||||
for C in $CATEGORIES
|
||||
do
|
||||
if [ "$C" = "$CATEGORY" ]; then FOUND=true ; break ; fi
|
||||
done
|
||||
if [ -n "$FOUND" ]; then
|
||||
CNT=`expr $CNT + 1`
|
||||
else
|
||||
if [ -z "$CATEGORY" ]; then
|
||||
echo "$COMMAND: you must include a Category: field in your report."
|
||||
else
|
||||
echo "$COMMAND: \`$CATEGORY' is not a known category."
|
||||
fi
|
||||
fi
|
||||
#
|
||||
# 5) Class
|
||||
#
|
||||
PATTERN=">Class:"
|
||||
CLASS=`eval sed -n -e "\"$SED_CMD\"" $TEMP`
|
||||
case "$CLASS" in
|
||||
""|sw-bug|doc-bug|change-request|support) CNT=`expr $CNT + 1` ;;
|
||||
*) echo "$COMMAND: \`$CLASS' is not a valid value for \`Class'."
|
||||
esac
|
||||
|
||||
[ $CNT -lt 5 -a -z "$BATCH" ] &&
|
||||
echo "Errors were found with the problem report."
|
||||
|
||||
while true; do
|
||||
if [ -z "$BATCH" ]; then
|
||||
$ECHON1 "a)bort, e)dit or s)end? $ECHON2"
|
||||
read input
|
||||
else
|
||||
if [ $CNT -eq 5 ]; then
|
||||
input=s
|
||||
else
|
||||
input=a
|
||||
fi
|
||||
fi
|
||||
case "$input" in
|
||||
a*)
|
||||
if [ -z "$BATCH" ]; then
|
||||
echo "$COMMAND: the problem report remains in $BAD and is not sent."
|
||||
mv $TEMP $BAD
|
||||
else
|
||||
echo "$COMMAND: the problem report is not sent."
|
||||
fi
|
||||
xs=1; exit
|
||||
;;
|
||||
e*)
|
||||
eval $EDIT $TEMP
|
||||
continue 2
|
||||
;;
|
||||
s*)
|
||||
break 2
|
||||
;;
|
||||
esac
|
||||
done
|
||||
done
|
||||
#
|
||||
# Remove comments and send the problem report
|
||||
# (we have to use patterns, where the comment contains regex chars)
|
||||
#
|
||||
# /^>Originator:/s;$ORIGINATOR;;
|
||||
sed -e "
|
||||
/^SEND-PR:/d
|
||||
/^>Organization:/,/^>[A-Za-z-]*:/s;$ORGANIZATION_C;;
|
||||
/^>Confidential:/s;<.*>;;
|
||||
/^>Synopsis:/s;$SYNOPSIS_C;;
|
||||
/^>Severity:/s;<.*>;;
|
||||
/^>Priority:/s;<.*>;;
|
||||
/^>Category:/s;$CATEGORY_C;;
|
||||
/^>Class:/s;<.*>;;
|
||||
/^>Release:/,/^>[A-Za-z-]*:/s;$RELEASE_C;;
|
||||
/^>Environment:/,/^>[A-Za-z-]*:/s;$ENVIRONMENT_C;;
|
||||
/^>Description:/,/^>[A-Za-z-]*:/s;$DESCRIPTION_C;;
|
||||
/^>How-To-Repeat:/,/^>[A-Za-z-]*:/s;$HOW_TO_REPEAT_C;;
|
||||
/^>Fix:/,/^>[A-Za-z-]*:/s;$FIX_C;;
|
||||
" $TEMP > $REF
|
||||
|
||||
if $MAIL_AGENT < $REF; then
|
||||
echo "$COMMAND: problem report sent"
|
||||
xs=0; exit
|
||||
else
|
||||
echo "$COMMAND: mysterious mail failure."
|
||||
if [ -z "$BATCH" ]; then
|
||||
echo "$COMMAND: the problem report remains in $BAD and is not sent."
|
||||
mv $REF $BAD
|
||||
else
|
||||
echo "$COMMAND: the problem report is not sent."
|
||||
fi
|
||||
xs=1; exit
|
||||
fi
|
658
external/gpl2/send-pr/dist/send-pr/send-pr.texi
vendored
Normal file
658
external/gpl2/send-pr/dist/send-pr/send-pr.texi
vendored
Normal file
@ -0,0 +1,658 @@
|
||||
\input texinfo @c -*-texinfo-*-
|
||||
@c $NetBSD: send-pr.texi,v 1.1.1.1 2016/01/14 21:06:14 christos Exp $
|
||||
@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
|
54
external/gpl2/send-pr/dist/send-pr/states.texi
vendored
Normal file
54
external/gpl2/send-pr/dist/send-pr/states.texi
vendored
Normal file
@ -0,0 +1,54 @@
|
||||
@node States
|
||||
@c $NetBSD: states.texi,v 1.1.1.1 2016/01/14 21:06:14 christos Exp $
|
||||
@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
|
||||
|
1
external/gpl2/send-pr/dist/send-pr/version.texi
vendored
Normal file
1
external/gpl2/send-pr/dist/send-pr/version.texi
vendored
Normal file
@ -0,0 +1 @@
|
||||
@set VERSION 3.2
|
Loading…
Reference in New Issue
Block a user