diff options
Diffstat (limited to 'gnu')
-rw-r--r-- | gnu/usr.bin/Makefile | 1 | ||||
-rw-r--r-- | gnu/usr.bin/binutils/libbfd/Makefile | 2 | ||||
-rw-r--r-- | gnu/usr.bin/send-pr/COPYING | 339 | ||||
-rw-r--r-- | gnu/usr.bin/send-pr/Makefile | 35 | ||||
-rw-r--r-- | gnu/usr.bin/send-pr/README | 43 | ||||
-rw-r--r-- | gnu/usr.bin/send-pr/categories | 21 | ||||
-rw-r--r-- | gnu/usr.bin/send-pr/doc/Makefile | 4 | ||||
-rw-r--r-- | gnu/usr.bin/send-pr/doc/categ.texi | 125 | ||||
-rw-r--r-- | gnu/usr.bin/send-pr/doc/fields.texi | 522 | ||||
-rw-r--r-- | gnu/usr.bin/send-pr/doc/s-usage.texi | 570 | ||||
-rw-r--r-- | gnu/usr.bin/send-pr/doc/send-pr.texi | 658 | ||||
-rw-r--r-- | gnu/usr.bin/send-pr/doc/states.texi | 58 | ||||
-rw-r--r-- | gnu/usr.bin/send-pr/doc/version.texi | 3 | ||||
-rwxr-xr-x | gnu/usr.bin/send-pr/install-sid.sh | 82 | ||||
-rw-r--r-- | gnu/usr.bin/send-pr/send-pr-el.in | 813 | ||||
-rw-r--r-- | gnu/usr.bin/send-pr/send-pr.1 | 355 | ||||
-rw-r--r-- | gnu/usr.bin/send-pr/send-pr.sh | 591 |
17 files changed, 1 insertions, 4221 deletions
diff --git a/gnu/usr.bin/Makefile b/gnu/usr.bin/Makefile index 7e96a6f..e12a540 100644 --- a/gnu/usr.bin/Makefile +++ b/gnu/usr.bin/Makefile @@ -14,7 +14,6 @@ SUBDIR= ${_binutils} \ ${_groff} \ ${_rcs} \ sdiff \ - send-pr \ ${_tests} \ ${_texinfo} diff --git a/gnu/usr.bin/binutils/libbfd/Makefile b/gnu/usr.bin/binutils/libbfd/Makefile index 1493ccf..ca5e183 100644 --- a/gnu/usr.bin/binutils/libbfd/Makefile +++ b/gnu/usr.bin/binutils/libbfd/Makefile @@ -84,7 +84,7 @@ bfdver.h: Makefile echo '#define BFD_VERSION 217500000' > ${.TARGET} echo '#define BFD_VERSION_DATE 20070703' >> ${.TARGET} echo '#define BFD_VERSION_STRING ${VERSION}' >> ${.TARGET} - echo '#define REPORT_BUGS_TO "<http://www.freebsd.org/send-pr.html>"' >> ${.TARGET} + echo '#define REPORT_BUGS_TO "<http://www.freebsd.org/support.html>"' >> ${.TARGET} targmatch.h: targmatch.sed config.bfd sed -f ${.ALLSRC:M*.sed} ${.ALLSRC:M*.bfd} > ${.TARGET} diff --git a/gnu/usr.bin/send-pr/COPYING b/gnu/usr.bin/send-pr/COPYING deleted file mode 100644 index 515b6d3..0000000 --- a/gnu/usr.bin/send-pr/COPYING +++ /dev/null @@ -1,339 +0,0 @@ - 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. diff --git a/gnu/usr.bin/send-pr/Makefile b/gnu/usr.bin/send-pr/Makefile deleted file mode 100644 index f17db49..0000000 --- a/gnu/usr.bin/send-pr/Makefile +++ /dev/null @@ -1,35 +0,0 @@ -# $FreeBSD$ -# -# Makefile for building a standalone send-pr. -# - -SCRIPTS= send-pr -MAN= send-pr.1 -SUBMITTERS= current-users -RELEASE= `uname -rsm` -CLEANFILES+= send-pr send-pr.el - -SUBDIR+= doc - -LINKS= ${BINDIR}/send-pr ${BINDIR}/sendbug -MLINKS= send-pr.1 sendbug.1 - -send-pr: send-pr.sh Makefile - sed -e 's,@DATADIR@,/etc,g' \ - -e 's/@DEFAULT_RELEASE@/$(RELEASE)/g' \ - -e 's/^SUBMITTER=.*/SUBMITTER=$(SUBMITTERS)/' \ - ${.ALLSRC:N*Makefile} > ${.TARGET} - -send-pr.el: send-pr-el.in Makefile - default_release=`uname -rsm`; \ - sed -e 's,@DATADIR@,/etc,g' \ - -e "s/@DEFAULT_RELEASE@/$${default_release}/g" \ - -e 's/"unknown"/"$(SUBMITTERS)"/g' \ - ${.ALLSRC:N*Makefile} > ${.TARGET} - -# called from /usr/src/etc/Makefile -etc-gnats-freefall: - ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m 0644 \ - ${.CURDIR}/categories ${DESTDIR}/etc/gnats/freefall - -.include <bsd.prog.mk> diff --git a/gnu/usr.bin/send-pr/README b/gnu/usr.bin/send-pr/README deleted file mode 100644 index b479179..0000000 --- a/gnu/usr.bin/send-pr/README +++ /dev/null @@ -1,43 +0,0 @@ - send-pr - sends bug reports to a central support site - -`send-pr' uses electronic mail to submit support questions and -software bugs to a central site. No piece of software is perfect, and -software organizations understand this `send-pr' is designed to allow -users who have problems to submit reports of these problems to sites -responsible for supporting the software in question, in a defined form -which can be read by an electronically managed database. - -`send-pr' is part of a suite of programs known collectively as GNATS, -an acronym for Problem Report Management System. GNATS consists of -several programs which, used in concert, formulate and partially -administer a database of Problem Reports, or PRs, at a central support -site. A PR goes through several states in its lifetime; GNATS tracks -the PR and all information associated with it through each state and -finally acts as an archive for PRs which have been resolved. - -The same engine can be used to submit bugs to any number of support -sites by setting up aliases for each of them; `send-pr' error-checks -each PR as it is sent to be sure that the category specified matches a -category supported by the site in question. - -`send-pr' invokes an editor on a problem report template (after trying -to fill in some fields with reasonable default values). When you exit -the editor, `send-pr' sends the completed form to the support site. -At the support site, the PR is assigned a unique number and is stored -in the GNATS database according to its category and customer-id. GNATS -automatically replies with an acknowledgement, citing the category and -the PR number. - -See the Texinfo file `send-pr.texi' or the Info file `send-pr.info' -for detailed installation and usage information. - -See the file MANIFEST for a list of the files which should have -accompanied this distribution. - -See `send-pr.texi', `send-pr.info', or the file INSTALL for the -installation procedure for `send-pr'. - - -Copyright (c) 1993, Free Software Foundation, Inc. -See the file COPYING for copyright information concerning this -distribution and all its components. diff --git a/gnu/usr.bin/send-pr/categories b/gnu/usr.bin/send-pr/categories deleted file mode 100644 index da511e7..0000000 --- a/gnu/usr.bin/send-pr/categories +++ /dev/null @@ -1,21 +0,0 @@ -# $FreeBSD$ -advocacy -alpha -amd64 -arm -bin -conf -docs -gnu -i386 -ia64 -java -kern -misc -ports -powerpc -sparc64 -standards -threads -usb -www diff --git a/gnu/usr.bin/send-pr/doc/Makefile b/gnu/usr.bin/send-pr/doc/Makefile deleted file mode 100644 index 1de7064..0000000 --- a/gnu/usr.bin/send-pr/doc/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -INFO = send-pr -INFOSECTION="System Utilities" - -.include <bsd.info.mk> diff --git a/gnu/usr.bin/send-pr/doc/categ.texi b/gnu/usr.bin/send-pr/doc/categ.texi deleted file mode 100644 index fe84918..0000000 --- a/gnu/usr.bin/send-pr/doc/categ.texi +++ /dev/null @@ -1,125 +0,0 @@ -@c $FreeBSD$ - -@node Valid Categories -@unnumberedsec Valid Categories -@cindex valid categories -@cindex example of a list of valid categories - -@table @code -@item bfd -@sc{gnu} binary file descriptor library. - -@item bifrabulator -This one doesn't actually exist. - -@item binutils -@sc{gnu} utilities for binary files (@code{ar}, @code{nm}, @code{size}@dots{}). - -@item bison -@sc{gnu} parser generator. - -@item byacc -Free parser generator. - -@item config -Cygnus Solutions 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 Solutions C Support Library. - -@item libg++ -@sc{gnu} C++ class library. - -@item libiberty -@sc{gnu} @samp{libiberty} library. - -@item libm -Cygnus Solutions 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 Solutions C Support and Math Libraries. - -@item patch -@sc{gnu} bug patch program. - -@item gnats -@sc{gnu} Problem Report Management System. - -@item rcs -Revision Control System. - -@item readline -@sc{gnu} @code{readline} library. - -@item send-pr -@sc{gnu} Problem Report submitting program. - -@item test -Category to use when testing @code{send-pr}. - -@item texindex -@sc{gnu} documentation indexing utility. - -@item texinfo -@sc{gnu} documentation macros. - -@item other -Anything which is not covered by the above categories. -@end table diff --git a/gnu/usr.bin/send-pr/doc/fields.texi b/gnu/usr.bin/send-pr/doc/fields.texi deleted file mode 100644 index 0cce642..0000000 --- a/gnu/usr.bin/send-pr/doc/fields.texi +++ /dev/null @@ -1,522 +0,0 @@ -@c $FreeBSD$ - -@node Fields -@section Problem Report format -@cindex Problem Report format -@cindex format -@cindex database similarities -@cindex fields - -The format of a PR is designed to reflect the nature of @sc{gnats} as a -database. Information is arranged into @dfn{fields}, and kept in -individual records (Problem Reports). - -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. - -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 - -@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 them follow this list. - -@cindex fields - list -@cindex GNATS fields - list -@table @code -@cindex @code{Submitter-Id} field -@cindex @code{>Submitter-Id:} -@item >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.) - -@cindex @code{Originator} field -@cindex @code{>Originator:} -@item >Originator: -(@sc{Text}) Originator's real name. The default is the value of the -originator's environment variable @code{NAME}. - -@cindex @code{>Organization:} -@cindex @code{Organization} field -@item >Organization: -(@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 file,,The @code{config} file}). -@end ifclear -@ifset SENDPR -@code{send-pr} shell script. -@end ifset - -@cindex @code{Confidential} field -@cindex @code{>Confidential:} -@cindex confidentiality in PRs -@cindex PR confidentiality -@item >Confidential: -(@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{no}. - -@cindex @code{Synopsis} field -@cindex @code{>Synopsis:} -@item >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. - -@cindex @code{Severity} field -@cindex @code{>Severity:} -@item >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 -@noindent -The default value is @samp{serious}. -@sp 1 - -@cindex @code{Priority} field -@cindex @code{>Priority:} -@item >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 - -@cindex @code{Category} field -@cindex @code{>Category:} -@item >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 file,,The @code{categories} file}, for details. -@end ifclear - -@cindex @code{Class} field -@cindex @code{>Class:} -@item >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 - -@cindex @code{Release} field -@cindex @code{>Release:} -@item >Release: -(@sc{Text}) Release or version number of the product, component or -concept. - -@cindex @code{Environment} field -@cindex @code{>Environment:} -@item >Environment: -(@sc{MultiText}) Description of the environment where the problem occured: -machine architecture, operating system, host and target types, -libraries, pathnames, etc. - -@cindex @code{Description} field -@cindex @code{>Description:} -@item >Description: -(@sc{MultiText}) Precise description of the problem. - -@cindex @code{How-To-Repeat} field -@cindex @code{>How-To-Repeat:} -@item >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}. - -@cindex @code{Fix} field -@cindex @code{>Fix:} -@item >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 file,,The @code{categories} file}). -@end ifclear - -@cindex @code{>Arrival-Date:} -@cindex @code{Arrival-Date} field -@item >Arrival-Date: -(@sc{Text}) The time that this PR was received by @sc{gnats}. The date -is provided automatically by @sc{gnats}. - -@cindex @code{>Audit-Trail:} -@cindex @code{Audit-Trail} field -@item >Audit-Trail: -(@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 - -@cindex subsequent mail -@cindex other mail -@cindex appending PRs -@cindex saving related mail -@cindex related mail -@noindent -The @samp{>Audit-Trail:} field also contains any mail messages received -by @sc{gnats} related to this PR, in the order received. - -@cindex @code{>Unformatted:} -@cindex @code{Unformatted} field -@item - >Unformatted: -(@sc{MultiText}) Any random text found outside the fields in the -original Problem Report. -@end table - diff --git a/gnu/usr.bin/send-pr/doc/s-usage.texi b/gnu/usr.bin/send-pr/doc/s-usage.texi deleted file mode 100644 index 5c9006b..0000000 --- a/gnu/usr.bin/send-pr/doc/s-usage.texi +++ /dev/null @@ -1,570 +0,0 @@ -@c $FreeBSD$ - -@c This is the usage section for send-pr. It is called as -@c chapter (Invoking send-pr) by send-pr.texi, and also as -@c section (Submitting Problem Reports) by gnats.texi (chapter/section -@c identifiers are adjusted accordingly) - -@c FIXME! This still seems jumbled... - -You can invoke @code{send-pr} from a shell prompt, or from within -@sc{gnu} Emacs using @w{@samp{M-x send-pr}}. - -@menu -* using send-pr:: Creating new Problem Reports -* send-pr in Emacs:: Using send-pr from within Emacs -* send-pr from the shell:: Invoking send-pr from the shell -* Submitting via e-mail:: Submitting a Problem Report via direct e-mail -* 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} will set the @samp{>Originator:} field to -the value of the @code{NAME} environment variable if it has been set; -similarly, @samp{>Organization:} will be set to the value of @code{ORGANIZATION}. -@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}. @xref{send-pr from the shell}. -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 on your local machine 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 (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}. @emph{NOTE:} If you are using -send-pr to send problem reports to the FreeBSD Project, this version of -send-pr already has a customer ID in it and you do not need to request a -new one. -@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 -c @var{mail-address} -@itemx --cc @var{mail-address} -Places @var{mail-address} in the @code{Cc:} header field of the message -to be sent. - -@item --request-id -Sends a request for a @code{>Submitter-Id:} to the Support Site. - -@cindex listing valid categories -@item -L -@itemx --list -Prints the list of valid @code{>Category:} values on standard output. -No mail is sent. - -@item -s @var{severity} -@itemx --severity @var{severity} -@cindex @code{send-pr} fields -Sets the initial value of the @code{>Severity:} field to @var{severity}. - -@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 - -@c ------------------------------------------------------------------------- -@node Submitting via e-mail -@section Submitting a Problem Report via direct e-mail -@cindex Direct e-mail -@cindex Submitting a PR via e-mail -In addition to using @code{send-pr}, there is another way to submit a problem -report. You can simply send an e-mail message to the support site. - -To do this, look at the address in the @samp{To:} field of the @code{send-pr} -template. When you send unformatted e-mail to this address, @sc{gnats} -processes the message as a new problem report, filling in as many fields from -defaults as it can: - -@table @code -@item Synopsis -The @samp{>Synopsis} field is filled in by the @samp{Subject:} header. - -@item Submitter ID -@sc{gnats} will try to derive the @samp{>Submitter} field from the address -in the @samp{From:} header. - -@item Description -All of the text in the body of the e-mail message is put into the -@samp{>Description} field. Each line of the text is indented by one space, -indicating that it is "quoted text" from the sender. -@end table - -Other fields, such as category, version, severity, etc. are set to default -values (if the @sc{gnats} administrator has set them). - -@c -------------------------------------------------------------------------- -@node Helpful hints -@section Helpful hints -@cindex helpful hints -@cindex Using and Porting @sc{gnu} CC -@cindex effective problem reporting -@cindex kinds of helpful information -@cindex information to submit -@cindex Report all the facts! - -There is no orthodox standard for submitting effective bug reports, -though you might do well to consult the section on submitting bugs for -@sc{gnu} @code{gcc} in @ref{Bugs, , Reporting Bugs, gcc, Using and -Porting GNU CC}, by Richard Stallman. This section contains -instructions on what kinds of information to include and what kinds of -mistakes to avoid. - -In general, common sense (assuming such an animal exists) dictates the -kind of information that would be most helpful in tracking down and -resolving problems in software. -@itemize @bullet -@item -Include anything @emph{you} would want to know if you were looking at -the report from the other end. There's no need to include every minute -detail about your environment, although anything that might be different -from someone else's environment should be included (your path, for -instance). - -@item -Narratives are often useful, given a certain degree of restraint. If a -person responsible for a bug can see that A was executed, and then B and -then C, knowing that sequence of events might trigger the realization of -an intermediate step that was missing, or an extra step that might have -changed the environment enough to cause a visible problem. Again, -restraint is always in order (``I set the build running, went to get a -cup of coffee (Columbian, cream but no sugar), talked to Sheila on the -phone, and then THIS happened@dots{}'') but be sure to include anything -relevant. - -@item -Richard Stallman writes, ``The fundamental principle of reporting bugs -usefully is this: @strong{report all the facts}. If you are not sure -whether to state a fact or leave it out, state it!'' This holds true -across all problem reporting systems, for computer software or social -injustice or motorcycle maintenance. It is especially important in the -software field due to the major differences seemingly insignificant -changes can make (a changed variable, a missing semicolon, etc.). - -@item -Submit only @emph{one} problem with each Problem Report. If you have -multiple problems, use multiple PRs. This aids in tracking each problem -and also in analyzing the problems associated with a given program. - -@item -It never hurts to do a little research to find out if the bug you've -found has already been reported. Most software releases contain lists -of known bugs in the Release Notes which come with the software; see -your system administrator if you don't have a copy of these. - -@item -The more closely a PR adheres to the standard format, the less -interaction is required by a database administrator to route the -information to the proper place. Keep in mind that anything that -requires human interaction also requires time that might be better spent -in actually fixing the problem. It is therefore in everyone's best -interest that the information contained in a PR be as correct as -possible (in both format and content) at the time of submission. -@end itemize diff --git a/gnu/usr.bin/send-pr/doc/send-pr.texi b/gnu/usr.bin/send-pr/doc/send-pr.texi deleted file mode 100644 index 1abb296..0000000 --- a/gnu/usr.bin/send-pr/doc/send-pr.texi +++ /dev/null @@ -1,658 +0,0 @@ -@c $FreeBSD$ - -\input texinfo @c -*-texinfo-*- -@setfilename send-pr.info -@settitle Reporting Problems Using send-pr - -@setchapternewpage odd - -@include version.texi -@set SENDPR - -@ifinfo -@format -START-INFO-DIR-ENTRY -* send-pr: (send-pr). Reporting problems--using send-pr -END-INFO-DIR-ENTRY -@end format -@end ifinfo - -@ifinfo -Copyright @copyright{} 1993, 1994, 1995 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, 1994, 1995 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 Solutions -@cindex @sc{gnu} software support -Cygnus Solutions in Sunnyvale, 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 Solutions 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 Solutions, 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 Solutions, Sunnyvale, CA 408 542 9600 -#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 Solutions, Sunnyvale, CA 408 542 9600 -#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 Solutions, Sunnyvale, CA 408 542 9600 -#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 Solutions, Sunnyvale, CA 408 542 9600 -#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}/share/gnats/@var{site}}} - -@item send-pr.el -into @w{@file{@var{prefix}/share/emacs/lisp}}@footnote{If your main Emacs -lisp repository is in a different directory from this, substitute that -directory for @w{@file{@var{prefix}/share/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}/share/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 Solutions -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}/share/gnats/@var{site} -@end smallexample - -@end itemize - -@node default site -@section Setting a default @var{site} -@cindex default @var{site} -@cindex setting a default @var{site} - -@code{send-pr} is capable of sending Problem Reports to any number of -Support Sites, using mail aliases which have @samp{-gnats} appended them. -@code{send-pr} automatically appends the suffix, so that when you type - -@smallexample -send-pr @var{site} -@end smallexample - -@noindent -the Problem Report goes to the address noted in the @file{aliases} file -as @w{@samp{@var{site}-gnats}}. You can do this in the Emacs version of -@code{send-pr} by invoking the program with - -@smallexample -C-u M-x send-pr -@end smallexample - -@noindent -You are prompted for @var{site}. - -@var{site} is also used to error-check the @samp{>Category:} field, as a -precaution against sending mistaken information (and against sending -information to the wrong site). - -You may also simply type - -@smallexample -send-pr -@end smallexample - -@noindent -from the shell (or @w{@samp{M-x send-pr}} in Emacs), and the Problem -Report you generate will be sent to the @var{site}, which is usually the -site from which you received your distribution of @w{@code{send-pr}}. -If you use @sc{gnats} at your own organization, the default is usually -your local address for reporting problems. - -To change this, simply edit the file @file{Makefile} before installing -and change the line - -@smallexample -GNATS_SITE = @var{site} -@end smallexample - -@noindent -to reflect the site where you wish to send PRs by default. - -@c --------------------------------------------------------------- -@node Index -@unnumbered Index - -@printindex cp - -@c --------------------------------------------------------------- -@contents -@bye diff --git a/gnu/usr.bin/send-pr/doc/states.texi b/gnu/usr.bin/send-pr/doc/states.texi deleted file mode 100644 index f38405c..0000000 --- a/gnu/usr.bin/send-pr/doc/states.texi +++ /dev/null @@ -1,58 +0,0 @@ -@c $FreeBSD$ - -@node States -@section States of Problem Reports - -@cindex life-cycle of a Problem Report -@cindex states of Problem Reports -@cindex Problem Report states -@cindex automatic notification - -Each PR goes through a defined series of states between origination and -closure. The originator of a PR receives notification automatically of -any state changes. - -Unless your site has customized states (see @pxref{states -file,,,gnats}), @sc{gnats} uses these states: - -@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. - -@cindex @emph{analyzed} state -@cindex state---@dfn{analyzed} -@item 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. - -@cindex @emph{feedback} state -@cindex state---@dfn{feedback} -@item 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. - -@cindex @emph{closed} state -@cindex state---@dfn{closed} -@cindex final state (@dfn{closed}) -@item 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. - -@cindex @emph{suspended} state -@cindex state---@dfn{suspended} -@item 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 - diff --git a/gnu/usr.bin/send-pr/doc/version.texi b/gnu/usr.bin/send-pr/doc/version.texi deleted file mode 100644 index bffedc2..0000000 --- a/gnu/usr.bin/send-pr/doc/version.texi +++ /dev/null @@ -1,3 +0,0 @@ -@c $FreeBSD$ - -@set VERSION 3.113 diff --git a/gnu/usr.bin/send-pr/install-sid.sh b/gnu/usr.bin/send-pr/install-sid.sh deleted file mode 100755 index f7f24e5..0000000 --- a/gnu/usr.bin/send-pr/install-sid.sh +++ /dev/null @@ -1,82 +0,0 @@ -#!/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=3.2 - -BINDIR=@BINDIR@ - -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 diff --git a/gnu/usr.bin/send-pr/send-pr-el.in b/gnu/usr.bin/send-pr/send-pr-el.in deleted file mode 100644 index 8195ecb..0000000 --- a/gnu/usr.bin/send-pr/send-pr-el.in +++ /dev/null @@ -1,813 +0,0 @@ -;;;; -*-emacs-lisp-*- -;;;;--------------------------------------------------------------------------- -;;;; EMACS interface for send-pr (by Heinz G. Seidl) -;;;; Slightly hacked by Brendan Kehoe (brendan@cygnus.com). -;;;; -;;;; This file is part of the Problem Report Management System (GNATS) -;;;; Copyright 1992, 1993, 1997 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. -;;;; -;;;;--------------------------------------------------------------------------- -;;;; -;;;; $FreeBSD$ - -(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 "3.113") - -(defvar gnats:root "/home/gnats" - "*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?") - -;;; This has to be here rather than at the bottom of this file with -;;; the other utility functions because it is used by -;;; gnats::get-config, which is called when send-pr.el is being -;;; loaded (see the "defconst" below), before the whole file has been -;;; loaded. - -(defun gnats::find-safe-default-directory (&optional buffer) -"If the directory referred to by `default-directory' for the current -buffer (or for optional argument BUFFER) does not exist, set it to the home -directory of the current user if that exists, or to `/'. - -Returns the final value of default-directory in the buffer." - (let ((homedir (expand-file-name "~/"))) - (save-excursion - (if buffer (set-buffer buffer)) - (if (not (file-exists-p default-directory)) - (if (file-exists-p homedir) - (setq default-directory homedir) - (setq default-directory "/"))) - default-directory))) - -;;; 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-on-region - (point-min) (point-max) - (concat ". " gnats:root "/gnats-adm/config; echo $" var ) t) - (goto-char (point-min)) - ; We have to use get-buffer, since shell-command-on-region will wipe - ; out the buffer if there's no output from the command. - (if (or (not (get-buffer "*Shell Command Output*")) - (looking-at "^\\.:\\|/bin/sh:\\|\n")) - (setq ret nil) - (setq ret (buffer-substring (point-min) (- (point-max) 1))))) - (if (and ret (string-equal ret "")) (setq ret nil)) - (kill-buffer buf) - ret)) - -;; const because it must match the script's value -(defconst send-pr:datadir (or (gnats::get-config "DATADIR") "@DATADIR@") - "*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") "freefall") - "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") ("update") ("maintainer-update")) - (, (or (gnats::get-config "DEFAULT_CLASS") 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") "@DEFAULT_RELEASE@")) - text) - ("Submitter-Id" nil - (, (or (gnats::get-config "DEFAULT_SUBMITTER") "unknown")) 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.") - -(defvar send-pr:::spawn-to-send nil - "Whether or not send-pr-mode should spawn a send-pr process to send the PR.") - -(defconst gnats::indent 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) - (send-pr::insert-template site) - (setenv "GNATS_ROOT" oldpr) - (goto-char (point-min)) - (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 - (goto-char 1) - (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) - (setq send-pr:::spawn-to-send t) - (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")) - (or (stringp mail-default-reply-to) - (setq mail-default-reply-to (getenv "REPLYTO"))) - (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]")))) - -(defvar send-pr::template-alist nil - "An alist containing the output of send-pr -P <sitename> for various sites.") - -(defun send-pr::insert-template (site) - (let ((elt (assoc site send-pr::template-alist))) - (if elt - (save-excursion (insert (cdr elt))) - (call-process "send-pr" nil t nil "-P" site) - (save-excursion - (setq send-pr::template-alist - (cons (cons site (buffer-substring (point-min) (point-max))) - send-pr::template-alist)))))) - -(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))) - (send-pr:::spawn-to-send - (if (or (buffer-modified-p) - (not send-pr:::sent) - (y-or-n-p "PR already sent; resend? ")) - (progn - (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) - ;; ensure that a final newline is present: - (if (not (equal (char-after (1- (point-max))) ?\n)) - (save-excursion (goto-char (point-max)) - (insert ?\n))) - (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) - (setq send-pr:::sent t) - (bury-buffer)) - (pop-to-buffer err-buffer)) - )))) - (t - (save-buffer) - (message "Exit emacs to send the PR.")))) - -;;;;--------------------------------------------------------------------------- -;;;; 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 'send-pr:::spawn-to-send) - (make-local-variable 'send-pr:::sent) - (setq send-pr:::sent nil) - (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 &optional quiet) - (goto-char (point-min)) - (if (not (re-search-forward (concat "^>" field ":") nil t)) - (if quiet - nil - (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 t)) - 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") - (if (or (interactive-p) t) - (let ((prompt (concat ">" field ": ")) - (domain (gnats::field-values field)) - (type (gnats::field-type field))) - (or default (setq default (gnats::field-default field))) - (setq new - (if (eq type 'enum) - (completing-read prompt domain nil t - (if gnats::emacs-19p (cons default 0) - default)) - (read-string prompt (if gnats::emacs-19p (cons default 1) - default))))) - (setq new default)) - (gnats::set-field field new) - (funcall (gnats::field-action field) 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)) - (while (search-forward "//" nil t) - (replace-match "/" nil t)) - (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 diff --git a/gnu/usr.bin/send-pr/send-pr.1 b/gnu/usr.bin/send-pr/send-pr.1 deleted file mode 100644 index 49fd42b..0000000 --- a/gnu/usr.bin/send-pr/send-pr.1 +++ /dev/null @@ -1,355 +0,0 @@ -.\" -*- 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 -.\" -.\" --------------------------------------------------------------------------- -.\" -.\" $FreeBSD$ -.nh -.TH SEND-PR 1 3.113 "October 2006" -.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 \-s -.I severity -] -[ -.B \-V -] -.br -[ -.B \-\-version -] -[ -.B \-c -.I address -] -[ -.B \-a -.I file -] -.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 -one of the available \fIcategories\fR to identify the -problem area. (Use -.B `send-pr -L' -to see a list of categories.) -.LP -The more precise your problem description and the more complete your -information, the faster your support team can solve your problems. -.LP -.B send-pr -depends on a correctly configured mail submission system to work correctly. -If, for any reason, sending mail is not working, problem reports can be -submitted over the web, through: -.IP -.I http://www.freebsd.org/send-pr.html -.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 \-s " severity" -Give the problem report the severity -.IR severity . -.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 -.BI \-c " address" -Put -.I address -in the -.B Cc: -header of the message. -.TP -.BI \-a " file" -Copy the specified -.I file -into the -.B Fix: -section. -Binary files are uuencoded. -.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 \-V -Display the -.B send-pr -version number. -This may also be specified as -.B \-\-version. -.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 FREEBSD CATEGORIES -.TP -.B advocacy -This used to be for the advocacy WWW pages. -Now deprecated in favour of the -.B www -category, relevant alternative use of this category is encouraged. -.TP -.B alpha -Alpha processor specific problems. -.TP -.B amd64 -AMD64 processor specific problems. -.TP -.B arm -ARM processor specific problems. -.TP -.B bin -Corrections or enhancements to system executables. -.TP -.B conf -Corrections or enhancements to the system configuration files. -.TP -.B docs -Corrections or enhancements to the manpages or other documentation. -.TP -.B gnu -Corrections or enhancements to the GNU contributed software. -.TP -.B i386 -Intel x86 processor specific problems. -.TP -.B ia64 -Intel ia64 processor specific problems. -.TP -.B java -Problems related to Java. -.TP -.B kern -Changes or enhancements to the architecture independent kernel sources. -.TP -.B misc -Problems that do not fit into any of the other categories. -.TP -.B ports -Corrections or enhancements (including new ports) to the ports collection. -.TP -.B powerpc -PowerPC processor specific problems. -.TP -.B sparc64 -SPARC processor specific problems. -.TP -.B standards -Standards conformance issues. -.TP -.B threads -Problems related to threading on FreeBSD. -.TP -.B usb -Problems related to the USB subsystem. -.TP -.B www -Changes or enhancements to the FreeBSD website. -.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 MAIL_AGENT -is set, its value is used as the path + command line arguments of the -executable to be invoked for sending the problem report (which will be -provided via standard input). -.br -This can be useful if you either use a MTA other than sendmail or need -to provide additional parameters, such as the envelope sender on -machines without a valid FQDN. -.br -Default value: -.B /usr/sbin/sendmail -oi -t -.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 -acknowledgement. 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.XXXXXXXX 'u -/tmp/pf.XXXXXXXX copy of PR used in editing session -.br -/tmp/pf.XXXXXXXX copy of empty PR form, for testing purposes -.br -/tmp/pr.XXXXXXXX copy of filled PR form, created on interrupt -.br -/tmp/pbad.XXXXXXXX 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 ). -.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. - diff --git a/gnu/usr.bin/send-pr/send-pr.sh b/gnu/usr.bin/send-pr/send-pr.sh deleted file mode 100644 index dee0f48..0000000 --- a/gnu/usr.bin/send-pr/send-pr.sh +++ /dev/null @@ -1,591 +0,0 @@ -#!/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@cygnus.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. -# -# $FreeBSD$ - -# The version of this send-pr. -VERSION=3.114 - -# The submitter-id for your site. -# "current-users" is the only allowable value for FreeBSD. -SUBMITTER="current-users" - -# Where the GNATS directory lives, if at all. -[ -z "$GNATS_ROOT" ] && -GNATS_ROOT= - -# The default mail address for PR submissions. -GNATS_ADDR=FreeBSD-gnats-submit@freebsd.org - -# Where the gnats category tree lives. -DATADIR=@DATADIR@ - -# If we've been moved around, try using GCC_EXEC_PREFIX. -[ ! -d $DATADIR/gnats -a -d "$GCC_EXEC_PREFIX" ] && DATADIR="$GCC_EXEC_PREFIX" - -# The default release for this host. -DEFAULT_RELEASE="@DEFAULT_RELEASE@" - -# The default organization. -DEFAULT_ORGANIZATION= - -# The default site to look for. -GNATS_SITE=freefall - -# 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="${MAIL_AGENT:-/usr/sbin/sendmail -oi -t}" - -# Path to pw(8) -PW="/usr/sbin/pw" - -ECHON=bsd - -if [ $ECHON = bsd ] ; then - ECHON1="echo -n" - ECHON2= -elif [ $ECHON = sysv ] ; then - ECHON1=echo - ECHON2='\c' -else - ECHON1=echo - ECHON2= -fi - -# - -# find a user name -if [ "$LOGNAME" = "" ]; then - if [ "$USER" != "" ]; then - LOGNAME="$USER" - else - LOGNAME="UNKNOWN" - fi -fi - -# 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`" -else - PTEMP=`mktemp -t p` || exit 1 - PTEMP2=`mktemp -t p` || exit 1 - # Must use temp file due to incompatibilities in quoting behavior - # and to protect shell metacharacters in the expansion of $LOGNAME - $ECHON1 $LOGNAME | awk '{print toupper(substr($1,1,1))substr($1,2)}' > $PTEMP2 - ICLOGNAME="`cat $PTEMP2`" - $PW usershow $LOGNAME | awk -F: '{ print $8 }' \ - | sed -e "s/\&/$ICLOGNAME/" \ - | sed -e 's/,.*//' > $PTEMP - ORIGINATOR="`cat $PTEMP`" - rm -f "$PTEMP" "$PTEMP2" -fi - -FROM="$ORIGINATOR <$LOGNAME>" -REPLY_TO="$ORIGINATOR <${REPLY_TO:-${REPLYTO:-$LOGNAME}}>" - -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`" - 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] [-s severity] - [-c address] [-a file] [--version]" -REMOVE= -BATCH= -CC= -SEVERITY_C= - -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 ;; - -c | --cc) if [ $# -eq 1 ]; then echo "$USAGE"; exit 1; fi - shift ; CC="$1" - ;; - -s | --severity) if [ $# -eq 1 ]; then echo "$USAGE"; exit 1; fi - shift ; SEVERITY_C="$1" - ;; - -p | -P | --print) PRINT=true ;; - -L | --list) FORMAT=norm ;; - -l | -CL | --lisp) FORMAT=lisp ;; - -h | --help) echo "$USAGE"; exit 0 ;; - -V | --version) echo "$VERSION"; exit 0 ;; - -a | --attach) if [ -z "$2" ]; then - echo "$USAGE" ; exit 1; - fi - if [ -e "$2" -a ! -d "$2" ]; then - PRETTY_NAME=`basename $2` - if file $2 | grep "text" >/dev/null 2>/dev/null ; then - ATTACHED_FILES="$ATTACHED_FILES ---- $PRETTY_NAME begins here --- -`cat \"$2\"` ---- $PRETTY_NAME ends here --- -" - else - ATTACHED_FILES="$ATTACHED_FILES -`uuencode \"$PRETTY_NAME\" < \"$2\"` -" - fi - shift; - fi; - ;; - -*) 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" ] && [ "$USER_GNATS_SITE" != "$GNATS_SITE" ]; then - GNATS_SITE=$USER_GNATS_SITE - GNATS_ADDR=$USER_GNATS_SITE-gnats -fi - -if [ "$SUBMITTER" = "unknown" -a -z "$IN_FILE" ]; then - SUBMITTER="current-users" -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='no <FreeBSD PRs are public data>' -SYNOPSIS_C='<synopsis of the problem (one line)>' -if [ -z "$SEVERITY_C" ]; then - SEVERITY_C='<[ non-critical | serious | critical ] (one line)>' -fi -PRIORITY_C='<[ low | medium | high ] (one line)>' -CATEGORY_C='<choose from the list of categories above (one line)>' -CLASS_C='<[ sw-bug | doc-bug | change-request | update | maintainer-update ] (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)>' - -# Create temporary files, safely -REF=`mktemp -t pf` || exit 1 -TEMP=`mktemp -t pf` || exit 1 -# Catch some signals. ($xs kludge needed by Sun /bin/sh) -xs=0 -trap 'rm -f $REF $TEMP; exit $xs' 0 -trap 'SAV=`mktemp -t pr`;echo "$COMMAND: Aborting ... saving unfinished PR into $SAV"; rm -f $REF ; mv $TEMP $SAV; 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 ) - [ -n "$ATTACHED_FILES" ] && echo "$ATTACHED_FILES" >> $TEMP - else - for file in $TEMP $REF ; do - cat > $file << '__EOF__' -SEND-PR: -*- send-pr -*- -SEND-PR: vim: syntax=sendpr -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 following URL if you are not sure how to -SEND-PR: fill out a problem report: -SEND-PR: http://www.freebsd.org/doc/en/articles/problem-reports/ -SEND-PR: -SEND-PR: Note that the Synopsis field is mandatory. -SEND-PR: -SEND-PR: Please note that (unless you state otherwise) if your report -SEND-PR: includes a patch then it will be taken under the same license as -SEND-PR: the one on the file(s) you want to change. -SEND-PR: -SEND-PR: BE ADVISED THAT FREEBSD PROBLEM REPORTS ARE PUBLIC INFORMATION AND -SEND-PR: WILL BE PUBLISHED AS-IS ON THE PROJECT'S MAILING LISTS AND WEB SITES. -SEND-PR: DO NOT SUBMIT ANY INFORMATION YOU DO NOT WANT MADE PUBLIC. -SEND-PR: -SEND-PR: If you wish to submit a problem report confidentially, then contact -SEND-PR: the FreeBSD bugmaster (bugmaster@FreeBSD.org) to arrange for a -SEND-PR: relevant developer to be contacted. -SEND-PR: -SEND-PR: For sensitive security issues, consider contacting the FreeBSD -SEND-PR: security officer team (security-officer@freebsd.org) directly. -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 -From: $FROM -Reply-To: $REPLY_TO -Cc: $CC -X-send-pr-version: $VERSION -X-GNATS-Notify: - - ->Submitter-Id: $SUBMITTER ->Originator: $ORIGINATOR ->Organization: ${ORGANIZATION-$ORGANIZATION_C} ->Confidential: $CONFIDENTIAL_C ->Synopsis: $SYNOPSIS_C ->Severity: $SEVERITY_C ->Priority: $PRIORITY_C ->Category: $CATEGORY_C ->Class: $CLASS_C ->Release: ${DEFAULT_RELEASE-$RELEASE_C} ->Environment: -`[ -n "$SYSTEM" ] && echo System: $SYSTEM` -`[ -n "$ARCH" ] && echo Architecture: $ARCH` -`[ -n "$MACHINE" ] && echo Machine: $MACHINE` - $ENVIRONMENT_C ->Description: - $DESCRIPTION_C ->How-To-Repeat: - $HOW_TO_REPEAT_C ->Fix: - - $FIX_C -$ATTACHED_FILES - -__EOF__ - - done - fi - - if [ "$PRINT" = true -o "$PRINT_INTERN" = true ]; then - cat $TEMP - xs=0; exit - fi - - chmod u+w $TEMP - eval $EDIT $TEMP - - 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='{ -s||| -s|<.*>|| -s|^[ ]*|| -s|[ ]*$|| -p -q -}' - - -while true; do - CNT=0 - - # 1) Confidential - # - PATTERN=">Confidential:" - CONFIDENTIAL=`eval sed -n -e "\"/$PATTERN/$SED_CMD\"" $TEMP` - case "$CONFIDENTIAL" in - ""|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 "\"/$PATTERN/$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 "\"/$PATTERN/$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 "\"/$PATTERN/$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 "\"/$PATTERN/$SED_CMD\"" $TEMP` - case "$CLASS" in - ""|sw-bug|doc-bug|change-request|update|maintainer-update) CNT=`expr $CNT + 1` ;; - *) echo "$COMMAND: \`$CLASS' is not a valid value for \`Class'." - esac - # - # 6) Check that synopsis is not empty - # - if grep "^>Synopsis:[ ]*${SYNOPSIS_C}\$" $TEMP > /dev/null - then - echo "$COMMAND: Synopsis must not be empty." - else - CNT=`expr $CNT + 1` - fi - - [ $CNT -lt 6 -a -z "$BATCH" ] && - echo "Errors were found with the problem report." - - while true; do - if [ -z "$BATCH" ]; then - $ECHON1 "s)end, e)dit or a)bort? $ECHON2" - read input - else - if [ $CNT -eq 6 ]; then - input=s - else - input=a - fi - fi - case "$input" in - a*) - if [ -z "$BATCH" ]; then - BAD=`mktemp -t pbad` - 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*) - if [ $CNT -lt 6 ]; then - if [ -z "$BATCH" ]; then - echo "But there are still errors in the problem report!" - continue 2 - else - echo "Errors found in PR" - exit 1 - fi - fi - break 2 - ;; - esac - done -done - -# -# Remove the subject field if one is already there. There's no reason -# for it to be any different than the synopsis. -# -if grep '^Subject:' $TEMP > /dev/null -then - ed -s $TEMP << __EOF__ -/^Subject:/d -w -q -__EOF__ -fi - -# -# Add the subject field with the value of $SYNOPSIS. We use the To: -# field as an anchor, which had better be there. -# -SYNOPSIS=`grep '^>Synopsis:' $TEMP | sed -e 's/^>Synopsis:[ ]*//' | - sed -e "s;$SYNOPSIS_C;;"` -ed -s $TEMP << __EOF__ -/^To:/a -Subject: $SYNOPSIS -. -w -q -__EOF__ - -# -# 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 - BAD=`mktemp -t pbad` - 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 -fi |