home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / gnu / gnats-3.01 / send-pr / send-pr.input < prev    next >
Encoding:
Text File  |  1993-04-13  |  46.4 KB  |  1,416 lines

  1. @c -*-texinfo-*-
  2.  
  3. @c ---------------------------------------------------------------
  4. @node Reporting problems
  5. @chapter An introduction to @code{send-pr}
  6. @cindex reporting problems
  7. @cindex introduction
  8. @cindex email addresses
  9. @cindex addresses
  10.  
  11. @code{@value{NAMEUC}} uses electronic mail to begin processing reported problems
  12. and support requests.  It also automatically forwards the report to
  13. those responsible for the problem in question, and returns mail
  14. acknowledging that the Problem Report (@dfn{PR}) was received.
  15.  
  16. All PRs should follow a specific format in order for @code{@value{NAMEUC}} to
  17. handle them properly.  The easiest way to avoid format problems when
  18. submitting bugs is to use the @code{send-pr} utility.  @code{send-pr}
  19. invokes an editor on a default Problem Report template, attempting to
  20. automatically fill in some fields with predefined values.  You then
  21. complete the form with relevant information.  @code{send-pr} takes
  22. over once you quit the editor, and electronically mails the completed
  23. PR using your local @code{mail} program.  When a Problem Report is
  24. received by @code{@value{NAMEUC}} at the support site, its state is considered
  25. to be @dfn{open}.
  26.  
  27. In general, you can use any editor and mailer to submit valid Problem
  28. Reports, as long as the format required by @code{@value{NAMEUC}} is preserved.
  29. @code{send-pr} automates the process, however, and ensures that certain
  30. fields necessary for automatic processing are present.  @code{send-pr}
  31. is strongly recommended for all initial problem-oriented correspondence
  32. with your support site.  The organization you submit Problem Reports to
  33. will supply an address to which further information can be sent; the
  34. person responsible for the category of the problem you report will
  35. probably contact you direcly.
  36.  
  37. @ifset SENDPR
  38. @menu
  39. * States of Problem Reports::  The Life of a Problem Report
  40. * Problem Report format::      Formatting Problem Reports
  41. @end menu
  42.  
  43. @c ---------------------------------------------------------------
  44. @node States of Problem Reports
  45. @section The Life of a Problem Report
  46. @cindex life-cycle of a Problem Report
  47. @cindex states of Problem Reports
  48. @cindex Problem Report states
  49. @cindex automatic notification
  50.  
  51. Each PR goes through a defined series of states between origination and
  52. closure, and is considered @dfn{active} until it has been resolved or
  53. otherwise explicitly @dfn{closed}.  As the originator of a PR, you are
  54. automatically notified of any state changes that occur as long as your
  55. email address in the mail header is correct.
  56.  
  57. @table @dfn
  58. @cindex @emph{open} bugs
  59. @cindex initial state (@dfn{open})
  60. @cindex state---@dfn{open}
  61. @item open
  62. This is the initial state of a Problem Report.  This means the PR has
  63. been filed and the responsible person(s) notified.
  64.  
  65. @item analyzed
  66. @cindex @emph{analyzed} state
  67. @cindex state---@dfn{analyzed}
  68. The bug has been analyzed by the responsible person.  The analysis
  69. should contain a preliminary evaluation of the problem and an estimate
  70. of the amount of time and resources necessary to solve the problem.  It
  71. should also suggest possible workarounds.
  72.  
  73. @item suspended
  74. @cindex @emph{suspended} state
  75. @cindex state---@dfn{suspended}
  76. Work on the problem has been postponed.  This happens if a timely
  77. solution is not possible or is not cost-effective at the present time.
  78. The PR continues to exist, though a solution is not being actively
  79. sought.  If the problem cannot be solved at all, it should be closed
  80. rather than suspended.
  81.  
  82. @item feedback
  83. @cindex @emph{feedback} state
  84. @cindex state---@dfn{feedback}
  85. This state indicates that the problem has been solved, and you've been
  86. given a patch or other fix.  The PR remains in this state until you
  87. acknowledge that the solution works.
  88.  
  89. @item closed
  90. @cindex @emph{closed} state
  91. @cindex state---@dfn{closed}
  92. @cindex final state (@dfn{closed})
  93. A Problem Report is closed only when any changes to the software in
  94. question have been documented, integrated and tested, and you've
  95. confirmed the solution.
  96. @end table
  97.  
  98. @c ---------------------------------------------------------------
  99. @node Problem Report format
  100. @section Problem Report format
  101. @cindex Problem Report format
  102. @cindex format
  103. @cindex database similarities
  104. @cindex fields
  105.  
  106. The format of a PR is designed to reflect the nature of @code{@value{NAMEUC}} as a
  107. database; information is arranged into fields.  A ``PR'' can be
  108. considered a record that is electronically entered into the @code{@value{NAMEUC}}
  109. database.  Thus, the level a PR adheres to the standard format
  110. determines the level of interaction that is required by a database
  111. administrator to route the information to the proper place.  (Hint: Keep
  112. in mind that anything that requires human interaction also requires time
  113. that might be better spent in actually fixing the bug.  It is therefore
  114. in the best interest of all parties involved that the information
  115. contained in a PR be as correct as possible at the time of submission.)
  116.  
  117. The PR form has two main sections, the @dfn{mail header} and the
  118. @dfn{problem report}.  Each has fields that must contain entries before
  119. the PR can be considered complete.
  120.  
  121. @menu
  122. * Mail Header fields::
  123. * Problem Report fields::
  124. @end menu
  125.  
  126. @c ----------------------
  127. @node Mail Header fields
  128. @subsection Mail Header fields
  129. @cindex mail header fields
  130. @cindex Internet standard RFC-822
  131. A Problem Report may contain any mail header field described in the
  132. Internet standard RFC-822.  However, only the fields which identify the
  133. sender and the subject are required for @code{send-pr} to function
  134. properly:
  135.  
  136. @table @code
  137. @item To:
  138. Automatically supplied by @code{send-pr}.  It is the preconfigured mail
  139. address for the support site where the PR is sent.
  140.  
  141. @item Subject:
  142. Complete this field with a terse description of the problem.
  143.  
  144. @item From:
  145. Usually supplied automatically by your mailer; should contain your
  146. electronic mail address.  (This is found via the environment variable
  147. @code{LOGNAME}, or @code{USER} if @code{LOGNAME} is not present.)
  148.  
  149. @item Reply-To:
  150. A return address to which electronic replies can be sent.  In most
  151. cases, this is probably the same address as the @code{From:} field.
  152. @end table
  153.  
  154. @c ----------------------
  155. @node Problem Report fields
  156. @subsection Problem Report fields
  157. @cindex Problem Report fields
  158.  
  159. These fields should comprise the only text in the body of the message in
  160. order to avoid confusion.
  161.  
  162. Problem Report fields begin with a keyword enclosed with `>' and `:', and
  163. belong to one of three data types:
  164.  
  165. @table @asis
  166. @cindex Problem Report data types
  167. @item @sc{Enumerated}
  168. One value out of a specific set of choices.  The value must be on the
  169. same line as the keyword.  For each @sc{Enumerated} keyword, the
  170. possible choices are listed in the template as a comment.
  171.  
  172. @item @sc{String}
  173. One single line of text which must begin and end on the same line as the
  174. keyword.
  175.  
  176. @item @sc{Text}
  177. Text of any length may occur in this field.  @sc{Text} may span multiple
  178. lines and may also include blank lines.  A @sc{Text} field ends only
  179. when another keyword appears.
  180. @end table
  181.  
  182. The level of completeness and correctness in the following fields when
  183. the PR is submitted helps determine the speed and quality of the
  184. solution to the problem.
  185.  
  186. @table @code
  187. @cindex Problem Report fields - list
  188. @item >Submitter-Id:
  189. @cindex @samp{Submitter-Id} field
  190. @cindex @samp{--request-id} option
  191. (@sc{Enumerated}) A unique identification code assigned by your
  192. support site.  It is used to identify all Problem Reports coming
  193. from a particular site.  (If you don't have an identification code,
  194. please use @samp{send-pr --request-id} to apply for one from your support
  195. organization.  Problem Reports from those not affiliated with the
  196. support organization should use the default value of @samp{net} for this
  197. field.)
  198.  
  199. @item >Originator:
  200. @cindex @samp{Originator} field
  201. (@sc{String}) Your real name.  The default is the value of the
  202. environment variable @code{NAME}; if this is not present, the contents
  203. of the file @file{.fullname} in your home directory are used.  If
  204. neither of these is present, the field is left blank.
  205.  
  206. @item >Organization:
  207. @cindex @samp{Organization} field
  208. (@sc{Text}) The name of your organization.  The default value is the
  209. contents of the environment variable @code{ORGANIZATION}; if this
  210. variable is not set, the information is sought in the following order:
  211.  
  212. @itemize @bullet
  213. @item 
  214. if @code{DEFAULT_ORGANIZATION} was set when your local @code{send-pr}
  215. was installed, this value is used; otherwise,
  216.  
  217. @item 
  218. if your home directory contains the file @file{.organization}, its
  219. contents are used; otherwise,
  220.  
  221. @item
  222. if your home directory contains the file @file{.signature}, its contents
  223. are used; otherwise,
  224.  
  225. @item
  226. the field is blank by default.
  227. @end itemize
  228.  
  229. @item >Confidential:
  230. @cindex @samp{Confidential} field
  231. (@sc{Enumerated}) Use of this field depends on your relationship with
  232. the support organization; contractual agreements often have provisions
  233. for preserving confidentiality.  Conversely, a lack of a contract often
  234. means that any data you provide will not be considered confidential.
  235. Contact the support organization directly if this is an issue.  
  236.  
  237. If your relationship to the support organization provides for
  238. confidentiality, then if the value of this field is @samp{yes} the
  239. support organization treats your PR as confidential; any code samples
  240. you provide are not made publicly available (e.g., in regression test
  241. suites).  The default value is @samp{yes}.
  242.  
  243. @item >Synopsis:
  244. @cindex @samp{Synopsis} field
  245. (@sc{String}) One-line summary of the problem.
  246.  
  247. @item >Severity:
  248. @cindex @samp{Severity} field
  249. (@sc{Enumerated}) The severity of the problem.  Accepted values are:
  250.  
  251. @table @code
  252. @item critical  
  253. The product, component or concept is completely non-operational or some
  254. essential functionality is missing.  No workaround is known.
  255.  
  256. @item serious
  257. The product, component or concept is not working properly or significant
  258. functionality is missing.  Problems that would otherwise be considered
  259. @samp{critical} are rated @samp{serious} when a workaround is known.
  260.  
  261. @item non-critical
  262. The product, component or concept is working in general, but lacks
  263. features, has irritating behaviour, does something wrong, or doesn't
  264. match its documentation.
  265. @end table
  266. The default value is @samp{serious}.
  267. @sp 1
  268.  
  269. @item >Priority:
  270. @cindex @samp{Priority} field
  271. (@sc{Enumerated}) How soon a solution is required.  Accepted values are:
  272.  
  273. @table @code
  274. @item high
  275. A solution is needed as soon as possible.
  276.  
  277. @item medium
  278. The problem should be solved in the next release of the software.
  279.  
  280. @item low
  281. The problem should be solved in a future release.
  282. @end table
  283. @noindent
  284. The default value is @samp{medium}.
  285. @sp 1
  286.  
  287. @item >Category:
  288. @cindex @samp{Category} field
  289. (@sc{Enumerated}) The name of the product, component or concept where
  290. the problem lies.  Your support organization provides a list of valid
  291. categories.  Try @samp{send-pr -L} to see the listing provided with your
  292. distribution.  For an example list, see @ref{Valid Categories}.
  293.  
  294. @sp 1
  295. @item >Class:
  296. @cindex @samp{Class} field
  297. (@sc{Enumerated}) The class of a problem can be one of the following:
  298.  
  299. @table @code
  300. @item support
  301. A support problem or question.
  302.  
  303. @item sw-bug
  304. A software bug.
  305.  
  306. @item doc-bug
  307. A bug in the documentation.
  308.  
  309. @item change-request
  310. A request for a change in behavior, etc.
  311.  
  312. @c THIS CLASS EXISTS BUT WILL NOT BE USED EXTERNALLY
  313. @c @item mistaken  
  314. @c No bug, user error or misunderstanding.
  315.  
  316. @item duplicate (@var{pr-number})
  317. Duplicate PR.  @var{pr-number} should be the number of the original PR.
  318. @end table
  319. @noindent
  320. The default is @samp{sw-bug}.
  321. @sp 1
  322.  
  323. @item >Release:
  324. @cindex @samp{Release} field
  325. (@sc{String}) Release number or version of the product, component or
  326. concept.
  327.  
  328. @item >Environment:
  329. @cindex @samp{Environment} field
  330. (@sc{Text}) Description of the environment where the problem occured:
  331. machine architecture, operating system, host and target types,
  332. libraries, pathnames, etc.
  333.  
  334. @item >Description:
  335. @cindex @samp{Description} field
  336. (@sc{Text}) Precise description of the problem, including all
  337. preconditions, inputs, outputs, conditions after the problem, and
  338. symptoms.  Please feel free to provide any additional information you
  339. think is important.  Include all the details that would be necessary for
  340. someone else to recreate the problem you're submitting, however obvious.
  341. Sometimes seemingly arbitrary or obvious information can point the way
  342. toward a solution.  @xref{Helpful hints}, for the types of information
  343. to include.
  344.  
  345. @item >How-To-Repeat:
  346. @cindex @samp{How-To-Repeat} field
  347. (@sc{Text}) Example code, input, or activities to reproduce the problem.
  348. The support organization uses your example code both to reproduce the
  349. problem and to test whether the problem is fixed.  Again, see
  350. @ref{Helpful hints}, for helpful hints.
  351. @end table
  352.  
  353. @end ifset
  354. @c ---------------------------------------------------------------
  355. @node Invoking send-pr
  356. @chapter Editing and sending PRs
  357. @cindex editing and sending PRs
  358. @cindex sending PRs
  359. @cindex invoking send-pr
  360. @cindex using send-pr
  361.  
  362. Invoking @code{send-pr} presents a partially completed template with a
  363. number of fields already filled in.  Complete the template as fully as
  364. possible to make a useful bug report.  Submit only one bug with each PR.
  365.  
  366. @cindex template
  367. A template consists of three sections:
  368.  
  369. @table @dfn
  370. @item Comments
  371. The top several lines of a blank template consist of a series of
  372. comments that provide some basic information about completing the
  373. Problem Report, as well as a list of valid entries for the
  374. @samp{>Category:} field.  These comments are all preceded by the string
  375. @samp{SEND-PR:} and are erased automatically when the PR is submitted.
  376. Note that the instructional comments within @samp{<} and @samp{>} are
  377. also removed.  (Only these comments are removed; lines you provide that
  378. happen to have those characters in them, such as examples of shell-level
  379. redirection, are not affected.)
  380.  
  381. @item Mail Header
  382. A standard mail header is provided.  All fields except the
  383. @samp{Subject:} line are filled with default values.
  384.  
  385. @item @code{send-pr} Fields
  386. These are the informational fields that @code{@value{NAMEUC}} uses to route
  387. your Problem Report to the responsible party for further action.
  388. They should be filled out as completely as possible.
  389. @end table
  390.  
  391. @noindent
  392. An example template and complete Problem Report are provided in
  393. @ref{An Example}.
  394.  
  395. The default template contains your preconfigured @samp{>Submitter-Id:}.
  396. When you invoke @code{send-pr}, it attempts to determine values for the
  397. @samp{>Originator:} and @samp{>Organization:} fields (@pxref{Problem
  398. Report fields}).  @code{send-pr} also attempts to find out some
  399. information about your system and architecture, and places this
  400. information in the @samp{>Environment:} field if it finds any.
  401.  
  402. @code{send-pr} also provides the mail header section of the template
  403. with default values in the @samp{To:}, @samp{From:}, and
  404. @samp{Reply-To:} fields.  The @samp{Subject:} field is empty.
  405.  
  406. Above the main part of the template is a comment section, beginning
  407. with the messages:
  408.  
  409. @cindex comment section
  410. @smallexample
  411. @group
  412. SEND-PR: -*- text  -*-
  413. SEND-PR: Lines starting with `SEND-PR' will be removed
  414. SEND-PR: automatically as well as all comments (the text 
  415. SEND-PR: below enclosed in `<' and `>').
  416. SEND-PR: 
  417. SEND-PR: Please consult the document `Reporting Problems 
  418. SEND-PR: With send-pr' if you are not sure how to fill out
  419. SEND-PR: a problem report.
  420. SEND-PR:
  421. SEND-PR: Choose from the following categories:
  422. @end group
  423. @end smallexample
  424.  
  425. @noindent
  426. and also containing a list of valid @code{>Category:} values.  One (and
  427. only one) of these values should be placed in the @code{>Category:}
  428. field.  A complete sample bug report, from template to completed PR, is
  429. shown in @ref{An Example}.  @xref{Valid Categories, , Valid Categories},
  430. for a sample list of categories, or for a complete list type
  431. @kbd{send-pr -L} at your prompt.
  432.  
  433. The mail header is just below the comment section.  Fill out the
  434. @samp{Subject:} field.  The @samp{To:} field will contain a default
  435. value if you neglected to specify a @var{site} when invoking
  436. @code{send-pr}.
  437.  
  438. @cindex mail header section
  439. @smallexample
  440. @group
  441. To: @var{support-site}
  442. Subject: @emph{complete this field}
  443. From: @var{your-login}@@@var{your-site}
  444. Reply-To: @var{your-login}@@@var{your-site}
  445. X-send-pr-version: send-pr @value{VERSION}
  446. @end group
  447. @end smallexample
  448.  
  449. @noindent
  450. where @var{support-site} is an alias for the support site you wish to
  451. submit this PR to.
  452.  
  453. The rest of the template contains @code{@value{NAMEUC}} fields.  Each field is
  454. either completed with valid information (such as your
  455. @samp{>Submitter-Id:}) or contains a one-line instruction specifying the
  456. information that field needs in order to be correct.  For example, the
  457. @samp{>Confidential:} field expects a value of @samp{yes} or @samp{no},
  458. and the answer must fit on one line; similarly, the @samp{>Synopsis:}
  459. field expects a short synopsis of the problem, which must also fit on
  460. one line.  Fill out the fields as completely as possible.
  461.  
  462. @cindex @code{send-pr} fields
  463. @smallexample
  464. @group
  465. >Submitter-Id:   @var{submitter-id}
  466. >Originator:    @var{your name here}
  467. >Organization:  
  468. @var{your site here}
  469. >Confidential:<[ yes | no ] (one line)>
  470. >Synopsis:    <synopsis of the problem (one line)>
  471. >Severity:    <[ non-critical | serious | critical ] (one line)>
  472. >Priority:    <[ low | medium | high ] (one line)>
  473. >Category:    <name of the product (one line)>
  474. >Class:       <[sw-bug|doc-bug|change-request|support](one line)>
  475. >Release:     <release number or tag (one line)>
  476. >Environment:
  477.          <machine, os, target, libraries (multiple lines)>
  478.  
  479. >Description:
  480.        <precise description of the problem (multiple lines)>
  481. >How-To-Repeat:
  482.        <code/input/activities to reproduce (multiple lines)>
  483. @end group
  484. @end smallexample
  485.  
  486. @cindex @samp{Submitter-Id}
  487. @cindex @samp{--request-id} option
  488. When you're finished editing the Problem Report, @code{send-pr} sends
  489. the completed PR to the address named in the @samp{To:} field in the
  490. mail header.  @code{send-pr} checks that the complete form contains a
  491. valid @samp{>Submitter-Id:} and a valid @samp{>Category:}.  Your copy of
  492. @code{send-pr} should have already been customized on installation to
  493. reflect your @samp{>Submitter-Id:} (@pxref{Installing send-pr, ,
  494. Installing @code{send-pr} on your system}).  If you don't know your
  495. @samp{>Submitter-Id:} value, you can request it using @w{@samp{send-pr
  496. --request-id}}.  If your organization is not affiliated with the site
  497. you send Problem Reports to, a good generic @samp{>Submitter-Id:} to use
  498. is @samp{net}.
  499.  
  500. @cindex bad Problem Reports
  501. @cindex errors
  502. @cindex invalid Problem Reports
  503. A PR which has a @samp{>Submitter-Id:} equal to @samp{unknown} or which
  504. has an invalid @samp{>Category:} is left in a temporary file named
  505. @samp{/tmp/pbad@var{nnnn}} on your machine, where @var{nnnn} is replaced
  506. by the process id given to your current @code{send-pr} session.  An
  507. error message is generated specifying the exact name of the bad file.
  508. You can then edit this file and resubmit it with
  509.  
  510. @smallexample
  511. send-pr -f @var{filename}
  512. @end smallexample
  513.  
  514. Invoke @code{send-pr} from a shell prompt or from within @sc{gnu} Emacs
  515. using @w{@kbd{M-x send-pr}}.
  516.  
  517. @menu
  518. * Command line options::    Invoking send-pr from the shell
  519. * send-pr within Emacs::    Using send-pr from within Emacs
  520. @end menu
  521.  
  522. @node Command line options
  523. @section Invoking @code{send-pr} from the shell
  524. @cindex command line options
  525. @cindex invoking @code{send-pr} from the shell
  526. @cindex shell invocation
  527.  
  528. @smallexample
  529. send-pr [ @var{site} ][ -f @var{problem-report} ] [ -t @var{mail-address} ]
  530.         [ -L ] [ -p ] [ -P ] [ --request-id ] [ -V ] 
  531. @end smallexample
  532.  
  533. @var{site} is an alias on your local machine which points to an address
  534. used by a support site.  If this argument is not present, the default
  535. @var{site} is usually the site which you received @code{send-pr} from,
  536. or your local site if you use @code{@value{NAMEUC}} locally.
  537. (@xref{default site, , Setting a default @var{site}}.)
  538.  
  539. Invoking @code{send-pr} with no options calls the editor named in your
  540. environment variable @code{EDITOR}.  If the environment variable
  541. @code{PR_FORM} is set, its value is used as a file name which contains a
  542. valid template.  If @code{PR_FORM} contains a missing or unreadable
  543. file, or if the file is empty, @code{send-pr} generates an error message
  544. and opens the editor on a default template.
  545.  
  546. @table @code
  547. @item -f @var{problem-report}
  548. @cindex @samp{-f @var{problem-report}} option
  549. Use this option to specify a file, @var{problem-report}, where a
  550. completed Problem Report already exists.  @code{send-pr} sends the
  551. contents of the file without invoking an editor.  (If
  552. @var{problem-report} is @samp{-}, @code{send-pr} reads from the
  553. standard input; @code{send-pr} uses this feature internally.)
  554.  
  555. @item -t @var{mail-address}
  556. @cindex @samp{-t @var{mail-address}} option
  557. Sets the electronic mail address to receive the PR.  The default is
  558. preset when @code{send-pr} is configured.  This option is not
  559. recommended; instead, use the argument @var{site} on the command line.
  560.  
  561. @item -L
  562. @cindex @samp{-L} option
  563. @cindex Listing valid categories
  564. This prints the list of valid @code{>Category:} values on standard
  565. output.  No mail is sent.
  566.  
  567. @item -p
  568. @cindex @samp{-p} option
  569. Prints the standard blank template on the standard output.  You can
  570. print this blank form and use it to generate forms to @sc{FAX} or
  571. physically mail to the support site if electronic mail fails to get
  572. through.  You can also complete some default fields, such as your
  573. organization's name in the @samp{>Organization:} field, your
  574. @samp{Submitter-Id:}, and details about your machine's architecture in
  575. the @samp{>Environment:} field, and use it as a custom form.  Specify
  576. @code{send-pr} to use this custom form by setting your environment
  577. variable @code{PR_FORM} to the name of the customized file.  No mail is
  578. sent when you use this option.
  579.  
  580. @item -P
  581. @cindex @samp{-P} option
  582. Prints out the template specified by the variable @code{PR_FORM} in your
  583. environment.  If @code{PR_FORM} is not set, the standard blank form is
  584. printed.  If the file specified by @code{PR_FORM} doesn't exist, an
  585. error message is printed.  No mail is sent.
  586.  
  587. @item --request-id
  588. @cindex @samp{--request-id} option
  589. Specifying this option sends a request for a @code{>Submitter-Id:} to the
  590. support site (or to the mail address specified either with the @samp{-t}
  591. option or in the @samp{To:} field in the mail header).
  592.  
  593. @item -V
  594. @itemx --version
  595. @cindex @samp{-V} option
  596. Displays the @code{send-pr} version number and a usage summary.  No mail
  597. is sent.
  598. @end table
  599.  
  600. @c ---------------------------------------------------------------
  601. @node send-pr within Emacs 
  602. @section Using @code{send-pr} from within Emacs
  603. @cindex @code{send-pr} within Emacs
  604. @cindex invoking @code{send-pr} from Emacs
  605. @cindex interactive interface
  606.  
  607. You can use an interactive @code{send-pr} interface from within @sc{gnu}
  608. Emacs to fill out your Problem Report.  We recommend that you
  609. familiarize yourself with Emacs before using this feature
  610. @ifinfo
  611. (@pxref{Introduction, , , emacs, GNU Emacs}).
  612. @end ifinfo
  613. @iftex
  614. (see the Emacs manual, @cite{GNU Emacs}).
  615. @end iftex
  616.  
  617. The interface is called with @kbd{M-x send-pr}.  The interactive
  618. interface prompts you for input for certain fields and then places you
  619. in an Emacs buffer so you can complete the fields specific to your
  620. problem.  It also sets up a few extra key bindings for ease of use.
  621.  
  622. To start the interactive @code{send-pr}, type 
  623.  
  624. @smallexample
  625. M-x send-pr
  626. @end smallexample
  627.  
  628. @noindent
  629. from inside Emacs.  Emacs responds with a template specifying your
  630. preconfigured template as described above.  You may also submit problem
  631. reports to support sites different from the default site.  To use this
  632. feature, invoke @code{send-pr} with
  633.  
  634. @smallexample
  635. C-u @var{site} M-x send-pr
  636. @end smallexample
  637.  
  638. @emph{Note:} if typing @kbd{M-x send-pr} doesn't work, see your system
  639. administrator for help in loading @code{send-pr} in Emacs.  In short,
  640. any users who wish to use the Emacs version of @code{send-pr} must
  641. place the following line in their @file{.emacs} files:
  642.  
  643. @smallexample
  644. (autoload 'send-pr "send-pr" "Submit a Problem Report." t)
  645. @end smallexample
  646.  
  647. @noindent
  648. For more details on installing @code{send-pr}, see @ref{Installing
  649. send-pr, Installing @code{send-pr} on your system}.
  650.  
  651. @cindex Emacs
  652. If you are using @kbd{M-x send-pr}, you are prompted in the minibuffer
  653. with the line:
  654. @smallexample
  655. >Category: other
  656. @end smallexample
  657.  
  658. @noindent
  659. Delete the default value @samp{other} and replace it with the keyword
  660. corresponding to your problem.  For example, if the problem you're
  661. reporting has to do with the @sc{gnu} C compiler, and your support
  662. organization accepts bugs submitted for this program under the category
  663. @samp{gcc}, delete @samp{other} @emph{in the minibuffer} and then type
  664. @kbd{gcc [@key{RET}]}.  Emacs replaces the
  665. @smallexample
  666. >Category:       <name of the product (one line)>
  667. @end smallexample
  668. @noindent
  669. line in the template with
  670. @smallexample
  671. >Category:       gcc
  672. @end smallexample
  673. @cindex completion in Emacs
  674. @noindent
  675. and moves on to another field.  
  676.  
  677. The @w{@kbd{M-x send-pr}} function provides completion as well; in the
  678. above example you can also type @w{@kbd{gc[@key{TAB}]}}, and Emacs will
  679. try to complete the entry for you.  Note that typing
  680. @w{@kbd{g[@key{TAB}]}} may not have the same effect if there are several
  681. possible entries beginning with @samp{g}.  In that case Emacs will not
  682. be able to complete the entry because it can not know whether you meant
  683. @samp{gcc} or, say, @samp{gas}, if both of those are possible
  684. categories.  @w{@kbd{M-x send-pr}} continues to prompt you for a valid
  685. entry until you enter one.
  686.  
  687. @kbd{M-x send-pr} prompts you interactively to enter each field for
  688. which there is a range of specific choices.  If you attempt to enter a
  689. value which is not in the range of acceptable entries, Emacs responds
  690. with @w{@samp{[No match]}} and allows you to change the entry until it
  691. contains an acceptable value.  This is an excellent way both to avoid
  692. unusable information (at least in these enumerated fields) and also to
  693. avoid typographical errors which could cause problems later.
  694.  
  695. The interactive mode prompts you for the following fields:
  696.  
  697. @table @code
  698. @item >Category:
  699. @item >Confidential: (@var{default}=@code{yes})
  700. @item >Severity: (@var{default}=@code{serious})
  701. @item >Priority: (@var{default}=@code{medium})
  702. @item >Class: (@var{default}=@code{sw-bug})
  703. @item >Release:
  704. @end table
  705.  
  706. After you complete these fields, @kbd{M-x send-pr} places the cursor in
  707. the @samp{Subject:} line of the mail header and displays the message
  708. @smallexample
  709. To send the problem report use: C-c C-c
  710. @end smallexample
  711. @noindent
  712. in the minibuffer.  At this point, edit the file in the main buffer to
  713. reflect your specific problem, putting relevant information in the
  714. proper fields.  @xref{An Example}, for a sample Problem Report.
  715.  
  716. @kbd{M-x send-pr} provides a few key bindings to make it simpler to move
  717. around in a template buffer.
  718.  
  719. @table @kbd
  720. @item M-p
  721. @itemx M-x @value{NAMELC}-previous-field
  722. moves the cursor to the beginning of the previous field
  723.  
  724. @item M-n
  725. @itemx M-x @value{NAMELC}-next-field
  726. moves the cursor to the beginning of the next field
  727.  
  728. @item M-C-b
  729. @itemx M-x @value{NAMELC}-backward-field
  730. moves the cursor to the end of the previous field
  731.  
  732. @item M-C-f
  733. @itemx M-x @value{NAMELC}-forward-field
  734. moves the cursor to the end of the next field
  735. @end table
  736.  
  737. @code{send-pr} takes over again when you type @kbd{C-c C-c} to send the
  738. message.  Any errors are reported in a separate window.  This window
  739. remains active until you send the PR properly (or, of course, until you
  740. explicitly kill the window).
  741.  
  742. For detailed instructions for
  743. using Emacs,
  744. @ifinfo
  745. @xref{Introduction, , , emacs, GNU Emacs}.
  746. @end ifinfo
  747. @iftex
  748. see the Emacs manual, @cite{GNU Emacs}.
  749. @end iftex
  750.  
  751. @c ---------------------------------------------------------------
  752. @node Installing send-pr
  753. @chapter Installing @code{send-pr} on your system
  754. @cindex installation
  755.  
  756. If you receive @code{send-pr} as part of a larger software distribution,
  757. it will most likely be automatically installed when the full
  758. distribution is installed.  If you are using @code{@value{NAMEUC}} at
  759. your site as well, you must decide where @code{send-pr} is to send bug
  760. reports by default; see @ref{default site, , Setting a default
  761. @var{site}}.
  762.  
  763. @menu
  764. * installation::   installing `send-pr' by itself
  765. * default site::   setting a default site
  766. @end menu
  767.  
  768. @node installation
  769. @section Installing @code{send-pr} by itself
  770.  
  771. The @code{send-pr} directory, is easily installed by itself by following
  772. these steps (you may need @code{root} access in order to change the
  773. @file{aliases} file and to install @code{send-pr}):
  774.  
  775. @enumerate 1
  776. @item @emph{Unpack the distribution} into a directory which we will
  777. refer to as @var{srcdir}.
  778.  
  779. @item @emph{Edit the @file{Makefile} to reflect local conventions.}@*
  780. Specifically, you should edit the variable @samp{prefix} to alter the
  781. installation location.  The default is @file{/usr/local}.  All files are
  782. installed under @samp{prefix} (see below).
  783.  
  784. @item @emph{Run}
  785. @smallexample
  786. make all install [ info ] install-info [ clean ]
  787. @end smallexample
  788.  
  789. @noindent
  790. The targets mean the following:
  791.  
  792. @table @code
  793. @item all
  794. Builds @code{send-pr} and @code{install-sid}
  795.  
  796. @item install
  797. Installs the following:
  798.  
  799. @table @code
  800. @item install-sid
  801. @itemx send-pr
  802. into @file{@var{prefix}/bin}
  803.  
  804. @item send-pr.1
  805. into @file{@var{prefix}/man/man1}
  806.  
  807. @item @var{site}
  808. the list of valid @var{categories} for the support site you received
  809. @code{send-pr} from, installed as
  810. @w{@file{@var{prefix}/lib/@value{NAMELC}/@var{site}}}
  811.  
  812. @item send-pr.el
  813. into @w{@file{@var{prefix}/lib/emacs/lisp}}
  814. @end table
  815.  
  816. @item info (@emph{optional})
  817. Builds @file{send-pr.info} from @file{send-pr.texi}@*
  818. (@file{send-pr.info} is included with this distribution)
  819.  
  820. @item install-info
  821. Installs @file{send-pr.info} into @w{@file{@var{prefix}/info}}
  822.  
  823. @item clean (@emph{optional})
  824. Removes all intermediary build files that can be rebuilt from source
  825. code
  826. @end table
  827.  
  828. @item @emph{Run}
  829. @smallexample
  830. install-sid @var{your-sid}
  831. @end smallexample
  832.  
  833. @noindent
  834. where @var{your-sid} is the identification code you received with
  835. @code{send-pr}.  @code{send-pr} will automatically insert this value
  836. into the template field @samp{>Submitter-Id}.  If you've downloaded
  837. @code{send-pr} from the Net, use @samp{net} for this value.
  838.  
  839. @item @emph{Any users who wish to use the Emacs version of
  840. @code{send-pr}} must place the following line in their @file{.emacs}
  841. files:
  842.  
  843. @smallexample
  844. (autoload 'send-pr "send-pr" "Submit a Problem Report." t)
  845. @end smallexample
  846.  
  847. @item @emph{Create a mail alias} for the support site you received
  848. @code{send-pr} from, and for every site with which you wish to use
  849. @code{send-pr} to communicate, each with a suffix of @samp{-@value{NAMELC}}.  The
  850. support site(s) will provide the correct addresses toward which these
  851. aliases should point.  For instance, edit your mail aliases file to
  852. contain something like:
  853.  
  854. @smallexample
  855. # support sites; for use with send-pr
  856. cygnus-@value{NAMELC}:     bugs@@cygnus.com            # Cygnus Support
  857. bumblebee-@value{NAMELC}:  bumblebugs@@bumblebee.com   # Bumblebee Inc.
  858. mycompany-@value{NAMELC}:  bugs@@my.company.com (@emph{if you use @code{@value{NAMEUC}} locally})
  859. @end smallexample
  860.  
  861. @code{send-pr} automatically searches for these aliases when you type
  862.  
  863. @smallexample
  864. send-pr cygnus
  865. send-pr bumblebee
  866. send-pr @var{site}@dots{}
  867. @end smallexample
  868.  
  869. @noindent
  870. @code{send-pr} also uses @var{site} to determine the categories of bugs
  871. the site in question accepts by looking in
  872.  
  873. @smallexample
  874. @var{prefix}/lib/@value{NAMELC}/@var{site}
  875. @end smallexample
  876.  
  877. @end enumerate
  878.  
  879. @node default site
  880. @section Setting a default @var{site}
  881.  
  882. @code{send-pr} is capable of sending bug reports to any number of
  883. support sites via mail aliases which have @samp{-@value{NAMELC}}
  884. appended them.  @code{send-pr} automatically appends the suffix, so that
  885. when you type
  886.  
  887. @smallexample
  888. send-pr @var{site}
  889. @end smallexample
  890.  
  891. @noindent
  892. the bug report will go to the address noted in the @file{aliases} file
  893. as @samp{@var{site}-@value{NAMELC}}.  This is done in the Emacs version
  894. of @code{send-pr} by invoking the program with 
  895.  
  896. @smallexample
  897. C-u @var{site} M-x send-pr
  898. @end smallexample
  899.  
  900. @noindent
  901. This value is also used to error-check the @samp{>Category:} field, as a
  902. precaution against sending mistaken information (and against sending
  903. information to the wrong site).
  904.  
  905. You may also simply type
  906.  
  907. @smallexample
  908. send-pr
  909. @end smallexample
  910.  
  911. @noindent
  912. from the shell (or simply ``@kbd{M-x send-pr}'' in Emacs), and the
  913. problem report you generate will be sent to the @dfn{default} site,
  914. which is usually the site from which you received your distribution of
  915. @code{send-pr}.  If you use @code{@value{NAMEUC}} at your own
  916. organization, the default is your local bug-reporting address.
  917.  
  918. To change this, simply edit the file @file{Makefile} before installing
  919. and change the line 
  920.  
  921. @smallexample
  922. @value{NAMEUC}_SITE = @var{site}
  923. @end smallexample
  924.  
  925. @noindent
  926. to reflect the site you wish to send PRs to by default.  Again,
  927. @code{send-pr} automatically appends the @samp{-@value{NAMELC}} to the
  928. @var{site} given on the command line.
  929.  
  930. @c ---------------------------------------------------------------
  931. @node Helpful hints
  932. @chapter Helpful hints
  933. @cindex helpful hints
  934. @cindex Using and Porting @sc{gnu} CC
  935. @cindex effective problem reporting
  936. @cindex kinds of helpful information
  937. @cindex information to submit
  938. @cindex Report all the facts!
  939.  
  940. There is no orthodox standard for submitting effective bug reports,
  941. though you might do well to consult the section on submitting bugs for
  942. @sc{gnu} @code{gcc} in @ref{Bugs, , Reporting Bugs, gcc, Using and
  943. Porting @sc{gnu} CC}, by Richard Stallman, for information that can
  944. typically be useful as well as mistakes to avoid.
  945.  
  946. In general, common sense (assuming such an animal exists) dictates the
  947. kind of information that would be most helpful in tracking down and
  948. resolving problems in software.  
  949. @itemize @bullet
  950. @item 
  951. Include anything @emph{you} would want to know if you were looking at
  952. the report from the other end.  There's no need to include every minute
  953. detail about your environment (users have been known to provide the
  954. values of every variable in their environments), although anything that
  955. might be different from someone else's environment should be included
  956. (your path, for instance).
  957.  
  958. @item 
  959. Narratives are often useful, given a certain degree of restraint.  If a
  960. person responsible for a bug can see that A was executed, and then B and
  961. then C, knowing that sequence of events might trigger the finding of an
  962. intermediate step that was missing, or an extra step that might have
  963. changed the environment enough to cause a visible problem.  Again,
  964. restraint is always in order (``I set the build running, went to get a
  965. cup of coffee (Columbian, cream but no sugar), talked to Sheila on the
  966. phone, and then THIS happened@dots{}'') but be sure to include anything
  967. relevant.
  968.  
  969. @item 
  970. Richard Stallman writes, ``The fundamental principle of reporting bugs
  971. usefully is this: @strong{report all the facts}.  If you are not sure
  972. whether to state a fact or leave it out, state it!''  This holds true
  973. across all problem reporting systems, for computer software or social
  974. injustice or motorcycle maintenance.  It is especially important in the
  975. software field due to the major differences seemingly insignificant
  976. changes can make (a changed variable, a missing semicolon).
  977.  
  978. @item
  979. Submit only @emph{one} problem with each Problem Report.  If you have
  980. multiple problems, use multiple PRs.  This aids in tracking each problem
  981. and also in analyzing the problems associated with a given program.
  982.  
  983. @item
  984. It never hurts to do a little research to find out if the bug you've
  985. found has already been reported.  Most software releases will have lists
  986. of known bugs in the Release Notes which should have come with the
  987. software; see your system administrator if you don't have a copy of
  988. these.
  989. @end itemize
  990.  
  991. @c -----------------------------
  992. @node An Example
  993. @chapter An Example
  994. @cindex an example
  995. @cindex example PR
  996. @cindex Cygnus Support
  997. @cindex @sc{gnu} software support
  998.  
  999. Cygnus Support in Mountain View, CA, is a heavy user of
  1000. @code{@value{NAMEUC}} and @code{send-pr}.  As a support company, Cygnus
  1001. finds problem tracking to be a crucial part of everyday business.
  1002. Cygnus mainly supports the @sc{gnu} compiling tools, including
  1003. @code{@value{NAMEUC}} and @code{send-pr}, over several Un*x and
  1004. Un*x-like platforms, and is an example of @code{@value{NAMEUC}} in
  1005. action.
  1006.  
  1007. With each shipment of the Cygnus Developer's Toolkit, customers receive
  1008. the latest version of @code{send-pr}, which contains an up-to-date
  1009. listing of valid categories (values for the @code{>Category:} field).
  1010. Using these tools, Cygnus' customers can communicate their problems to
  1011. Cygnus effectively and receive automatic confirmation of receipt as well
  1012. as notification of changes in the status of their reported problems.
  1013. Much of Cygnus' support mechanism relies on electronic mail.
  1014.  
  1015. As an example, let's pretend we're a customer of Cygnus Support, and
  1016. that we're having a problem with some of our software.  
  1017.  
  1018. Assume that we're getting an error in our bifrabulator program wherein
  1019. the prestidigitation routines don't match with the whatsitsname.  We've
  1020. made sure we're following the rules of the program and checked the
  1021. Release Notes from Cygnus and found that the bug isn't already known.
  1022. In other words, we're pretty sure we've found a bug.
  1023.  
  1024. @cindex Imaginary Software, Ltd.
  1025. Our first step is to call @code{send-pr}.  It really doesn't matter
  1026. whether we use @code{send-pr} from the shell or from within Emacs.
  1027. Indeed, if we use Emacs as a primary editor, calling @code{send-pr} from
  1028. the shell is likely to start @code{send-pr} in an Emacs buffer anyway.
  1029. So, since our company, @emph{Imaginary Software, Ltd.}, is a heavy user
  1030. of @sc{gnu} software, we're pretty familiar with Emacs, so from within
  1031. Emacs we type
  1032. @smallexample
  1033. M-x send-pr
  1034. @end smallexample
  1035. @noindent
  1036. and we're greeted with the following screen:
  1037.  
  1038. @cindex default PR template
  1039. @cindex example of a default template
  1040. @cartouche
  1041. @smallexample
  1042. SEND-PR: -*- text  -*-
  1043. SEND-PR: Lines starting with `SEND-PR' will be removed 
  1044. SEND-PR: automatically as well as all comments (the text
  1045. SEND-PR: below enclosed in `<' and `>').
  1046. SEND-PR: Please consult the manual if you are not sure
  1047. SEND-PR: how to fill out a problem report.
  1048. SEND-PR:
  1049. SEND-PR: Choose from the following categories:
  1050. SEND-PR:
  1051. SEND-PR:           bfd       binutils  bison       
  1052. SEND-PR: byacc     clib      config    cvs         diff        
  1053. SEND-PR: doc       emacs     flex      g++         gas         
  1054. SEND-PR: gcc       gdb       glob      gprof       grep        
  1055. SEND-PR: info      ispell    kerberos  ld          libg++      
  1056. SEND-PR: libiberty make      makeinfo  mas         newlib      
  1057. SEND-PR: other     patch     rcs       readline    send-pr     
  1058. SEND-PR: test      texindex  texinfo   texinfo.tex 
  1059. SEND-PR: bifrabulator  <---@emph{note: this one is fake}
  1060. SEND-PR:
  1061. To: cygnus-bugs@@cygnus.com 
  1062. Subject: 
  1063. From: jeffrey@@imaginary.com
  1064. Reply-To: jeffrey@@imaginary.com
  1065. X-send-pr-version: send-pr @value{VERSION}
  1066.  
  1067. >Submitter-Id:  imaginary
  1068. >Originator:    Jeffrey Osier
  1069. >Organization:  
  1070. Imaginary Software, Ltd.
  1071. >Confidential:  <[ yes | no ] (one line)>
  1072. >Synopsis:      <synopsis of the problem (one line)>
  1073. >Severity:      <[ non-critical | serious | critical ] (one line)>
  1074. >Priority:      <[ low | medium | high ] (one line)>
  1075. >Category:      <name of the product (one line)>
  1076. >Class:         <[sw-bug|doc-bug|change-request|support](oneline)>
  1077. >Release:       <release number or tag (one line)>
  1078. >Environment:
  1079.          <machine, os, target, libraries (multiple lines)>
  1080. System: SunOS imaginary.com 4.1.1 1 sun4
  1081. Architecture: sun4
  1082.  
  1083. >Description:
  1084.        <precise description of the problem (multiple lines)>
  1085. >How-To-Repeat:
  1086.        <code/input/activities to reproduce (multiple lines)>
  1087.  
  1088. @iftex
  1089. @hrule
  1090. @end iftex
  1091. -----Emacs: *send-pr*   (send-pr Fill)----All------------------
  1092. @iftex
  1093. @hrule
  1094. @end iftex
  1095. >Category: other[]
  1096. @end smallexample
  1097. @end cartouche
  1098. @page
  1099. We know from past experience that we need to set certain information into
  1100. each field, so we compile all the information we know about our problem.
  1101. We have some sample code which we know should work, even though it
  1102. doesn't, so we'll include that.  Below is the completed PR; we send this
  1103. using @kbd{C-c C-c}.  (The comments have been truncated).
  1104.  
  1105. @cindex completed Problem Report
  1106. @cindex example of a completed PR
  1107. @cartouche
  1108. @smallexample
  1109. SEND-PR: Lines starting with `SEND-PR' will be removed
  1110. SEND-PR: automatically as well as all comments (the text
  1111. SEND-PR: @dots{}
  1112. SEND-PR:
  1113. To: cygnus-bugs@@cygnus.com 
  1114. Subject: bifrabulator routines don't match
  1115. From: jeffrey@@imaginary.com
  1116. Reply-To: jeffrey@@imaginary.com
  1117. X-send-pr-version: send-pr @value{VERSION}
  1118.  
  1119. >Submitter-Id:  imaginary
  1120. >Originator:    Jeffrey Osier
  1121. >Organization:  
  1122. Imaginary Software, Ltd.
  1123. >Confidential:  no
  1124. >Synopsis:      bifrabulator routines don't match
  1125. >Severity:      serious
  1126. >Priority:      medium
  1127. >Category:      bifrabulator
  1128. >Class:         sw-bug
  1129. >Release:       progressive-930101
  1130. >Environment:   
  1131. System: SunOS imaginary.com 4.1.1 1 sun4
  1132. Architecture: sun4 (SPARC)
  1133.  
  1134. >Description:
  1135.    the following code I fed into the bifrabulator came back 
  1136.    with a strange error.  apparently, the prestidigitation 
  1137.    routine doesn't match with the whatsitsname in all cases.
  1138.  
  1139. >How-To-Repeat:
  1140.    call the bifrabulator on the following code.
  1141.    @var{code sample@dots{}}
  1142.  
  1143.  
  1144. @iftex
  1145. @hrule
  1146. @end iftex
  1147. -----Emacs: *send-pr*   (send-pr Fill)----All------------------
  1148. @iftex
  1149. @hrule
  1150. @end iftex
  1151. To send the problem report use: C-c C-c
  1152. @end smallexample
  1153. @end cartouche
  1154.  
  1155. We type @kbd{C-c C-c}, and off it goes.  Now, we depend on Cygnus
  1156. Support to figure out the answer to our problem.
  1157.  
  1158. Soon afterward, we get the following message from Cygnus:
  1159.  
  1160. @smallexample
  1161. @group
  1162. From: @value{NAMELC} (@value{NAMEUC} management)
  1163. Sender: @value{NAMELC}-admin
  1164. Reply-To: hacker@@cygnus.com
  1165. To: jeffrey@@imaginary.com
  1166. Subject: Re: bifrabulator/1425: routines don't match
  1167.  
  1168. Thank you very much for your problem report.
  1169. It has the internal identification: g++/1425.
  1170. The individual assigned to look at your bug is:  hacker
  1171. (F.B. Hacker)
  1172.  
  1173. Category: bifrabulator
  1174. Responsible: hacker
  1175. Synopsis: bifrabulator routines don't match
  1176. Arrival-Date: Sat Feb 30 03:12:55 1993
  1177. @end group
  1178. @end smallexample
  1179.  
  1180. @noindent
  1181. This is our ``receipt'' that the bug has been accepted and forwarded to
  1182. the responsible party.  
  1183.  
  1184. @noindent
  1185. A while later, we get the analysis:
  1186.  
  1187. @smallexample
  1188. @group
  1189. To:  jeffrey@@imaginary.com
  1190. From:  hacker@@cygnus.com
  1191. Subject:  Re: bifrabulator/1425: routines don't match
  1192. Reply-To: hacker@@cygnus.com
  1193.  
  1194. Got your message, Jeff.  It seems that the bifrabulator was 
  1195. confusing the prestidigitation routines with the realitychecker
  1196. when lexically parsing the whatsitsname.
  1197.  
  1198. I'm working on robustisizing the bifrabulator now.
  1199.  
  1200. How about lunch next week?
  1201. --
  1202. F.B. Hacker
  1203. Cygnus Support, Mountain View, CA  415 903 1400
  1204. #include <std-disclaimer.h>
  1205. @end group
  1206. @end smallexample
  1207.  
  1208. @noindent
  1209. About the same time, we get another message from Cygnus.
  1210.  
  1211. @cindex state change example
  1212. @cindex example of a state change
  1213. @smallexample
  1214. @group
  1215. From: hacker@@cygnus.com
  1216. To:  jeffrey@@imaginary.com
  1217. Subject:  Re: bifrabulator/1425: doesn't match prestidig
  1218. Reply-To:  hacker@@cygnus.com
  1219.  
  1220.  
  1221.              `F.B. Hacker' changed the state to `analyzed'.
  1222.  
  1223. State-Changed-From-To: open-analyzed
  1224. State-Changed-By: hacker
  1225. State-Changed-When: Fri Feb 31 1993 08:59:16 1993
  1226. State-Changed-Why:
  1227.     figured out the problem, working on a patch this afternoon
  1228. --
  1229. F.B. Hacker
  1230. Cygnus Support, Mountain View, CA  415 903 1400
  1231. #include <std-disclaimer.h>
  1232. @end group
  1233. @end smallexample
  1234.  
  1235. @noindent
  1236. The bug has now been analyzed, and Cygnus is working on a solution.
  1237. Sometime later, we get more mail from F.B.:
  1238.  
  1239. @smallexample
  1240. @group
  1241. To:  jeffrey@@imaginary.com
  1242. From:  hacker@@cygnus.com
  1243. Subject:  Re: bifrabulator/1425: routines don't match
  1244. Reply-To: hacker@@cygnus.com
  1245.  
  1246. There's a patch now that you can ftp over and check out.
  1247.  
  1248. Hey, that joke you sent me was great!  The one about the
  1249. strings walking into a bar...  my boss laughed for an hour!
  1250. --
  1251. F.B. Hacker
  1252. Cygnus Support, Mountain View, CA  415 903 1400
  1253. #include <std-disclaimer.h>
  1254. @end group
  1255. @end smallexample
  1256. @sp 2
  1257. @smallexample
  1258. @group
  1259. From: hacker@@cygnus.com
  1260. To:  jeffrey@@imaginary.com
  1261. Subject:  Re: bifrabulator/1425: doesn't match prestidig
  1262. Reply-To:  hacker@@cygnus.com
  1263.  
  1264.  
  1265.              `F.B. Hacker' changed the state to `feedback'.
  1266.  
  1267. State-Changed-From-To: analyzed-feedback
  1268. State-Changed-By: hacker
  1269. State-Changed-When: Fri Feb 31 1993 23:43:16 1993
  1270. State-Changed-Why:
  1271.     got the patch finished, notified Jeff at Imaginary Software
  1272. --
  1273. F.B. Hacker
  1274. Cygnus Support, Mountain View, CA  415 903 1400
  1275. #include <std-disclaimer.h>
  1276. @end group
  1277. @end smallexample
  1278.  
  1279. @noindent
  1280. The bug has gone into @dfn{feedback} status now, until we get the patch,
  1281. install it and test it.  When everything tests well, we can mail F.B.
  1282. back and tell him the bug's been fixed, and he can change the state of
  1283. the PR from @dfn{feedback} to @dfn{closed}.
  1284.  
  1285. Following is a list of valid @samp{>Category:} entries that are
  1286. supported by Cygnus.
  1287.  
  1288. @menu
  1289. * Valid Categories::    A listing of Cygnus' valid categories
  1290. @end menu
  1291.  
  1292. @c -----------------------------
  1293. @node Valid Categories
  1294. @unnumberedsec Valid Categories
  1295. @cindex valid categories
  1296. @cindex example of a list of valid categories
  1297.  
  1298. @table @code
  1299. @item bfd
  1300. @sc{gnu} binary file descriptor library.
  1301.  
  1302. @item bifrabulator
  1303. This one doesn't actually exist.
  1304.  
  1305. @item binutils
  1306. @sc{gnu} utilities for binary files (@code{ar}, @code{nm}, @code{size}@dots{}).
  1307.  
  1308. @item bison
  1309. @sc{gnu} parser generator.
  1310.  
  1311. @item byacc
  1312. Free parser generator.
  1313.  
  1314. @item config
  1315. Cygnus Support Software configuration and installation.
  1316.  
  1317. @item cvs
  1318. Concurrent Version System.
  1319.  
  1320. @item diff
  1321. @sc{gnu} @code{diff} program.
  1322.  
  1323. @item doc
  1324. Documentation and manuals.
  1325.  
  1326. @item emacs
  1327. @sc{gnu} Emacs editor and related functions.
  1328.  
  1329. @item flex
  1330. @sc{gnu} lexical analyzer.
  1331.  
  1332. @item g++
  1333. @sc{gnu} C++ compiler.
  1334.  
  1335. @item gas
  1336. @sc{gnu} assembler.
  1337.  
  1338. @item gcc
  1339. @sc{gnu} C compiler.
  1340.  
  1341. @item gdb
  1342. @sc{gnu} source code debugger.
  1343.  
  1344. @item glob
  1345. The filename globbing functions.
  1346.  
  1347. @item gprof
  1348. @sc{gnu} profiler.
  1349.  
  1350. @item grep
  1351. @sc{gnu} @code{grep} program.
  1352.  
  1353. @item info
  1354. @sc{gnu} @code{info} hypertext reader.
  1355.  
  1356. @item ispell
  1357. @sc{gnu} spelling checker.
  1358.  
  1359. @item kerberos
  1360. Kerberos authentication system.
  1361.  
  1362. @item ld
  1363. @sc{gnu} linker.
  1364.  
  1365. @item libc
  1366. Cygnus Support C Support Library.
  1367.  
  1368. @item libg++
  1369. @sc{gnu} C++ class library.
  1370.  
  1371. @item libiberty
  1372. @sc{gnu} @samp{libiberty} library.
  1373.  
  1374. @item libm
  1375. Cygnus Support C Math Library.
  1376.  
  1377. @item make
  1378. @sc{gnu} @code{make} program.
  1379.  
  1380. @item makeinfo
  1381. @sc{gnu} utility to build Info files from Texinfo documents.
  1382.  
  1383. @item mas
  1384. @sc{gnu} Motorola syntax assembler.
  1385.  
  1386. @item newlib
  1387. Cygnus Support C Support and Math Libraries.
  1388.  
  1389. @item patch
  1390. @sc{gnu} bug patch program.
  1391.  
  1392. @item @value{NAMELC}
  1393. @sc{gnu} Problem Report Management System.
  1394.  
  1395. @item rcs
  1396. Revision Control System.
  1397.  
  1398. @item readline
  1399. @sc{gnu} @code{readline} library.
  1400.  
  1401. @item send-pr
  1402. @sc{gnu} Problem Report submitting program.
  1403.  
  1404. @item test
  1405. Category to use when testing @code{send-pr}.
  1406.  
  1407. @item texindex
  1408. @sc{gnu} documentation indexing utility.
  1409.  
  1410. @item texinfo
  1411. @sc{gnu} documentation macros.
  1412.  
  1413. @item other
  1414. Anything which is not covered by the above categories.
  1415. @end table
  1416.