1This is gnats.info, produced by makeinfo version 4.7 from gnats.texi.
2
3START-INFO-DIR-ENTRY
4* Keeping Track: (gnats).	GNU Problem Report Management System
5END-INFO-DIR-ENTRY
6
7   Copyright (C) 1993, 1995, 2001, 2002, 2003 Free Software Foundation,
8Inc.
9
10   Permission is granted to make and distribute verbatim copies of this
11manual provided the copyright notice and this permission notice are
12preserved on all copies.
13
14   Permission is granted to copy and distribute modified versions of
15this manual under the conditions for verbatim copying, provided also
16that the entire resulting derived work is distributed under the terms
17of a permission notice identical to this one.
18
19   Permission is granted to copy and distribute translations of this
20manual into another language, under the above conditions for modified
21versions.
22
23
24File: gnats.info,  Node: Top,  Next: Introduction,  Up: (dir)
25
26Overview
27********
28
29This manual documents GNATS, the GNU Problem Report Management System,
30version 4.1.0.  GNATS is a bug-tracking tool designed for use at a
31central "Support Site".  Users who experience problems use electronic
32mail, web-based or other clients communicating with the GNATS network
33daemon running at the support site or direct database submissions to
34communicate these problems to "maintainers" at that Support Site.
35GNATS partially automates the tracking of these "Problem Reports"
36("PR"s) by:
37
38   * organizing problem reports into a database and notifying
39     responsible parties of suspected bugs;
40
41   * allowing support personnel and their managers to edit and query
42     accumulated bugs; and
43
44   * providing a reliable archive of problems (and their subsequent
45     solutions) with a given program.
46
47   GNATS offers many of the same features offered by more generalized
48databases, including editing, querying, and basic reporting.  The GNATS
49database itself is an ordered repository for problem reports; each PR
50receives a unique, incremental "PR number" which identifies it
51throughout its lifetime.  For a discussion on the working system
52adopted by GNATS, see *Note The database paradigm: Paradigm.
53
54   You can access the submitting, editing, and querying functions of
55GNATS from within GNU Emacs.  *Note The GNATS user tools: GNATS user
56tools.
57
58* Menu:
59
60* Introduction::          Introducing GNATS.
61* GNATS user tools::      The GNATS user tools.
62* Installation::          Installing GNATS.
63* Management::            GNATS Administration.
64* Locations::             Where GNATS lives.
65* gnatsd::                The GNATS network server.
66* Access Control::        Controlling access to GNATS databases.
67* Regexps::               Querying using regular expressions.
68* dbconfig recipes::      Useful dbconfig tricks.
69* Support::               GNATS related sites and mailing lists.
70* Index::
71
72
73File: gnats.info,  Node: Introduction,  Next: GNATS user tools,  Prev: Top,  Up: Top
74
751 Introducing GNATS
76*******************
77
78Any support organization realizes that a large amount of data flows back
79and forth between the maintainers and the users of their products.  This
80data often takes the form of problem reports and communication via
81electronic mail.  GNATS addresses the problem of organizing this
82communication by defining a database made up of archived and indexed
83problem reports.
84
85   GNATS was designed as a tool for software maintainers.  It consists
86of several utilities which, when used in concert, formulate and
87administer a database of Problem Reports grouped by site-defined
88"problem categories".  It allows a support organization to keep track
89of problems (hence the term "Problem Report") in an organized fashion.
90Essentially, GNATS acts as an active archive for field-separated
91textual data.
92
93* Menu:
94
95* Paradigm::       The database paradigm
96* Flowchart::      Flowchart of GNATS activities
97* States::         States of Problem Reports
98* Fields::         Problem Report format
99
100
101File: gnats.info,  Node: Paradigm,  Next: Flowchart,  Up: Introduction
102
1031.1 The database paradigm
104=========================
105
106It is in your best interest as the maintainer of a body of work to
107organize the feedback you receive on that work, and to make it easy for
108users of your work to report problems and suggestions.
109
110   GNATS makes this easy by automatically filing incoming problem
111reports into appropriate places, by notifying responsible parties of the
112existence of the problem and (optionally) sending an acknowledgment to
113the submitter that the report was received, and by making these Problem
114Reports accessible to queries and easily editable.  GNATS is a database
115specialized for a specific task.
116
117   GNATS was designed for use at a Support Site that handles a high
118level of problem-related traffic.  It maintains Problem Reports in the
119form of text files with defined "fields" (*note GNATS data fields:
120Fields.).  The location of the database, as well as the categories it
121accepts as valid, the maintainers for whom it provides service, and the
122submitters from whom it accepts Problem Reports, are all definable by
123the "Support Site".  *Note GNATS administration: Management.
124
125   Each PR is a separate file within a main repository (*note Where
126GNATS lives: Locations.).  Editing access to the database is regulated
127to maintain consistency.  To make queries on the database faster, an
128index is kept automatically (*note The `index' file: index file.).
129
130   We provide several software tools so that users may submit new
131Problem Reports, edit existing Problem Reports, and query the database.
132
133   * `send-pr' is used by both product maintainers and the end users of
134     the products they support to submit PRs to the database.
135
136   * `edit-pr' is used by maintainers when editing problem reports in
137     the database.
138
139   * Maintainers, managers and administrators can use `query-pr' to
140     make inquiries about individual PRs or groups of PRs.
141
142
143   Other interfaces to GNATS include Gnatsweb, a web-based tool which
144provides features for submitting and editing PRs and querying the
145database, and TkGnats, a Tcl/Tk-based frontend.  These tools are
146distributed together with GNATS.
147
148   At the Support Site, a GNATS "administrator" is charged with the
149duty of maintaining GNATS.  These duties are discussed in detail in
150*Note GNATS Administration: Management, and generally include
151configuring GNATS for the Support Site, editing PRs that GNATS cannot
152process, pruning log files, setting up new problem categories, backing
153up the database, and distributing `send-pr' so that others may submit
154Problem Reports.
155
156   Responsibility for a given Problem Report initially depends on the
157category of the problem.  Optionally, an automated reminder can be sent
158to the responsible person if a problem report is neglected for a
159requisite time period.  *Note Overview of GNATS configuration: GNATS
160configuration.
161
162   GNATS does not have the ability to decipher random text.  If there
163is no default category set, any problem reports which arrive in a
164format GNATS does not recognize are placed in a separate directory
165pending investigation by the GNATS administrator (*note GNATS
166Administration: Management.).
167
168   Once a problem is recorded in the database, work can begin toward a
169solution.  A problem's initial "state" type is "open" (*note States of
170Problem Reports: States.).  An acknowledgment may be sent to the
171originator of the bug report (depending on whether this feature has
172been switched on in the GNATS configuration).  GNATS forwards copies of
173the report to the party responsible for that problem category and to
174the person responsible for problems arriving from that submitter.
175
176   When a problem has been identified, the maintainer can change its
177state to "analyzed", and then to "feedback" when a solution is found.
178GNATS may be configured so that each time the state of a PR changes,
179the submitter of the problem report is notified of the reason for the
180change.  If the party responsible for the PR changes, the previous
181responsible party and the new responsible party receive notice of the
182change.  The change and reason are also recorded in the `Audit-Trail'
183field of the Problem Report.  (*Note Editing existing Problem Reports:
184edit-pr.  For information on the `Audit-Trail' field, see *Note Problem
185Report format: Fields.)
186
187   When the originator of the Problem Report confirms that the solution
188works, the maintainer can change the state to "closed".  If the PR
189cannot be closed, the maintainer can change its state to "suspended" as
190a last resort.  (For a more detailed description of the standard
191states, see *Note States of Problem Reports: States.)
192
193   It should be emphasized that what we describe here is the default way
194that GNATS works, but as of version 4, GNATS is extremely customizable,
195allowing sites to tailor almost every aspect of its behavior.  See for
196instance *Note The `dbconfig' file: dbconfig file. and *Note States of
197Problem Reports: States.)
198
199
200File: gnats.info,  Node: Flowchart,  Next: States,  Prev: Paradigm,  Up: Introduction
201
2021.2 Flowchart of GNATS activities
203=================================
204
205This informal flowchart shows the relationships of the GNATS tools to
206each other and to the files with which they interoperate.
207
208
209
210     +===========+       +===========+        +============+
211     # USER SITE #       # USER SITE #        # USER SITE  #
212     #           #       #           #        #            #
213     # *send-pr* #       # *send-pr* #        # Web client #
214     +=====|=====+       +=====|=====+        +=====|======+
215           |                   V                    |
216           `--------->    Email/gnatsd...   <-------'
217                     ,--->     |
218     +===============|=========|===================+
219     # SUPPORT SITE  |         `---> /etc/aliases  #
220     #          *send-pr*                |         #
221     #     +-----------------------------V--------+#
222     #     | GNATS        DATABASEDIR/gnats-queue/|#
223     #     |                             |        |#
224     #     |        _________            V        |#
225     #     |       |*file-pr*|<--- *queue-pr -r*  |#
226     #     |       |         |                    |#
227     #  _  |       |  valid  |                    |#
228     # |M| |       |Category?|N--.                |#
229     # |A| |       |_________|   |      GNATS     |#
230     # |I| |              Y|     |  ADMINISTRATOR |#
231     # |N| |               |     |                |#
232     # |T|<----------------|     |                |#
233     # |A| |               |     |  .-> *edit-pr* |#
234     # |I|--->*edit-pr*-.  |     V  |           | |#
235     # |N| |            |  |DATABASEDIR/pending | |#
236     # |E|<--*query-pr* |  |                    | |#
237     # |R| |       |    |  |                    | |#
238     # |S| |       |    V  V                    V |#
239     # |_| |+------------------------------------+|#
240     #     ||         GNATS Database             ||#
241     #     ||  DATABASEDIR/CATEGORY/GNATS-ID     ||#
242     #     |+------------------------------------+|#
243     #     +--------------------------------------+#
244     +=============================================+
245
246
247
248
249File: gnats.info,  Node: States,  Next: Fields,  Prev: Flowchart,  Up: Introduction
250
2511.3 States of Problem Reports
252=============================
253
254Each PR goes through a defined series of states between origination and
255closure.  By default, the originator of a PR receives notification
256automatically of any state changes.
257
258   Unless your site has customized states (*note states file:
259(gnats)states file.), GNATS uses these states:
260
261"open"
262     The initial state of a Problem Report.  This means the PR has been
263     filed and the responsible person(s) notified.
264
265"analyzed"
266     The responsible person has analyzed the problem.  The analysis
267     should contain a preliminary evaluation of the problem and an
268     estimate of the amount of time and resources necessary to solve
269     the problem.  It should also suggest possible workarounds.
270
271"feedback"
272     The problem has been solved, and the originator has been given a
273     patch or other fix.  The PR remains in this state until the
274     originator acknowledges that the solution works.
275
276"closed"
277     A Problem Report is closed ("the bug stops here") only when any
278     changes have been integrated, documented, and tested, and the
279     submitter has confirmed the solution.
280
281"suspended"
282     Work on the problem has been postponed.  This happens if a timely
283     solution is not possible or is not cost-effective at the present
284     time.  The PR continues to exist, though a solution is not being
285     actively sought.  If the problem cannot be solved at all, it
286     should be closed rather than suspended.
287
288
289File: gnats.info,  Node: Fields,  Prev: States,  Up: Introduction
290
2911.4 Problem Report format
292=========================
293
294The format of a PR is designed to reflect the nature of GNATS as a
295database.  Information is arranged into "fields", and kept in
296individual records (Problem Reports).
297
298   A Problem Report contains two different types of fields: "Mail
299Header" fields, which are used by the mail handler for delivery, and
300"Problem Report" fields, which contain information relevant to the
301Problem Report and its submitter.  A Problem Report is essentially a
302specially formatted electronic mail message.
303
304   Problem Report fields are denoted by a keyword which begins with `>'
305and ends with `:', as in `>Confidential:'.  Fields belong to one of
306eight data types as listed in *Note Field datatypes reference::.  As of
307version 4 of GNATS all characteristics of fields, such as field name,
308data type, allowed values, permitted operations, on-change actions etc.
309are configurable.
310
311   For details, see *note The `dbconfig' file: dbconfig file.
312
313Example Problem Report
314----------------------
315
316   The following is an example Problem Report with the fields that
317would be present in a standard GNATS configuration.  Mail headers are
318at the top, followed by GNATS fields, which begin with `>' and end with
319`:'.  The `Subject:' line in the mail header and the `Synopsis' field
320are usually duplicates of each other.
321
322     Message-Id:  MESSAGE-ID
323     Date:        DATE
324     From:        ADDRESS
325     Reply-To:    ADDRESS
326     To:          BUG-ADDRESS
327     Subject:     SUBJECT
328
329     >Number:       GNATS-ID
330     >Category:     CATEGORY
331     >Synopsis:     SYNOPSIS
332     >Confidential: yes _or_ no
333     >Severity:     critical, serious, _or_ non-critical
334     >Priority:     high, medium _or_ low
335     >Responsible:  RESPONSIBLE
336     >State:        open, analyzed, suspended, feedback, _or_ closed
337     >Class:        sw-bug, doc-bug, change-request, support,
338     duplicate, _or_ mistaken
339     >Submitter-Id: SUBMITTER-ID
340     >Arrival-Date: DATE
341     >Originator:   NAME
342     >Organization: ORGANIZATION
343     >Release:      RELEASE
344     >Environment:
345        ENVIRONMENT
346     >Description:
347        DESCRIPTION
348     >How-To-Repeat:
349        HOW-TO-REPEAT
350     >Fix:
351        FIX
352     >Audit-Trail:
353     APPENDED-MESSAGES...
354     State-Changed-From-To: FROM-TO
355     State-Changed-When: DATE
356     State-Changed-Why:
357        REASON
358     Responsible-Changed-From-To: FROM-TO
359     Responsible-Changed-When: DATE
360     Responsible-Changed-Why:
361        REASON
362     >Unformatted:
363        MISCELLANEOUS
364
365* Menu:
366
367* Field datatypes reference::
368* Mail header fields::
369* Problem Report fields::
370
371
372File: gnats.info,  Node: Field datatypes reference,  Next: Mail header fields,  Up: Fields
373
3741.4.1 Field datatypes reference
375-------------------------------
376
377The following is a short reference to the characteristics of the
378different field types.
379
380   For details, see *Note Field datatypes::.
381
382`text'
383     A one-line text string.
384
385`multitext'
386     Multiple lines of text.
387
388`enum'
389     The value in this field is required to be from a list of specified
390     values, defined at the Support Site.
391
392     (*Note The `dbconfig' file: dbconfig file, for details.
393
394`multienum'
395     Similar to the `enum' datatype, except that the field can contain
396     multiple values.
397
398`enumerated-in-file'
399     Similar to `enum', but the allowed field values are listed in a
400     separate file on the GNATS server.
401
402`multi-enumerated-in-file'
403     Similar to `enumerated-in-file', except that the field can contain
404     multiple values.
405
406`date'
407     Used to hold dates.
408
409`integer'
410     Used to hold integer numbers.
411
412
413File: gnats.info,  Node: Mail header fields,  Next: Problem Report fields,  Prev: Field datatypes reference,  Up: Fields
414
4151.4.2 Mail header fields
416------------------------
417
418A Problem Report may contain any mail header field described in the
419Internet standard RFC-822.  The `send-pr' tool can be configured either
420to submit PRs to the support site by e-mail or by talking directly to
421the `gnatsd' network daemon on the GNATS server.  This is also true for
422other client tools such as Gnatsweb.  Even when these tools are set up
423submit PRs directly to `gnatsd', they will still include mail header
424fields that identify the sender and the subject in the submitted PR:
425
426`To:'
427     The mail address for the Support Site, automatically supplied by
428     the tool used to submit the PR or by the originator if plain
429     e-mail was used.
430
431`Subject:'
432     A terse description of the problem.  This field normally contains
433     the same information as the `Synopsis' field.
434
435`From:'
436     Supplied automatically when PRs are submitted by plain e-mail and
437     when well-behaved tools such as `send-pr' are used; should always
438     contain the originator's e-mail address.
439
440`Reply-To:'
441     A return address to which electronic replies can be sent; in most
442     cases, the same address as the `From:' field.
443
444   One of the configurable options for GNATS is whether or not to
445retain `Received-By' headers, which often consume a lot of space and
446are not often used.  *Note The dbconfig file: dbconfig file.
447
448
449File: gnats.info,  Node: Problem Report fields,  Prev: Mail header fields,  Up: Fields
450
4511.4.3 Problem Report fields
452---------------------------
453
454In a standard GNATS installation, certain fields will always be present
455in a Problem Report.  If a PR arrives without one or more of these
456fields, GNATS will add them, and if they have default values set by the
457configuration at the Support Site, they will be filled in with these
458values.  Certain tools such as `send-pr' are set up to provide sensible
459defaults for most fields (*note The send-pr.conf configuration file:
460send-pr.conf file.)
461
462   In the list below, the field type (`text', `multitext',
463`enumerated', etc.) is supplied in parantheses.  The different field
464types are explained briefly in *Note Field datatypes reference::.
465
466`Submitter-Id'
467     (`enumerated-in-file') A unique identification code assigned by the
468     Support Site.  It is used to identify all Problem Reports coming
469     from a particular site.  Submitters without a value for this field
470     can invoke `send-pr' with the `--request-id' option to apply for
471     one from the support organization.  Problem Reports from those not
472     affiliated with the support organization should use the default
473     value of `net' for this field.
474
475     *Note The `submitters' file: submitters file, for details.
476
477`Notify-List'
478     (`text') Comma-separated list of e-mail-addresses of people to
479     notify when the PR changes significantly, i.e. when the Audit-Trail
480     changes.  This list is independent from the Notify subfield of
481     entries in the `categories' file of the GNATS database.
482
483`Originator'
484     (`text') Originator's real name.  Note that the Submitter and
485     Originator might not be the same person/entity in all cases.
486
487`Organization'
488     (`multitext') The originator's organization.
489
490`Confidential'
491     (`enum') Use of this field depends on the originator's relationship
492     with the support organization; contractual agreements often have
493     provisions for preserving confidentiality.  Conversely, a lack of a
494     contract often means that any data provided will not be considered
495     confidential.  Submitters should be advised to contact the support
496     organization directly if this is an issue.
497
498     If the originator's relationship to the support organization
499     provides for confidentiality, then if the value of this field is
500     `yes' the support organization treats the PR as confidential; any
501     code samples provided are not made publicly available.
502
503`Synopsis'
504     (`text') One-line summary of the problem.  `send-pr' copies this
505     information to the `Subject' line when you submit a Problem Report.
506
507`Severity'
508     (`enum') The severity of the problem.  By default, accepted values
509     include:
510
511    `critical'
512          The product, component or concept is completely
513          non-operational or some essential functionality is missing.
514          No workaround is known.
515
516    `serious'
517          The product, component or concept is not working properly or
518          significant functionality is missing.  Problems that would
519          otherwise be considered `critical' are usually rated
520          `serious' when a workaround is known.
521
522    `non-critical'
523          The product, component or concept is working in general, but
524          lacks features, has irritating behavior, does something
525          wrong, or doesn't match its documentation.
526
527`Priority'
528     (`enumerated') How soon the originator requires a solution.
529     Accepted values include:
530
531    `high'
532          A solution is needed as soon as possible.
533
534    `medium'
535          The problem should be solved in the next release.
536
537    `low'
538          The problem should be solved in a future release.
539
540`Category'
541     (`enumerated-in-file') The name of the product, component or
542     concept where the problem lies.  The values for this field are
543     defined by the Support Site.  *Note The `categories' file:
544     categories file, for details.
545
546`Class'
547     (`enumerated-in-file') The class of a problem in a default GNATS
548     installation can be one of the following:
549
550    `sw-bug'
551          A general product problem.  (`sw' stands for "software".)
552
553    `doc-bug'
554          A problem with the documentation.
555
556    `change-request'
557          A request for a change in behavior, etc.
558
559    `support'
560          A support problem or question.
561
562    `duplicate (PR-NUMBER)'
563          Duplicate PR.  PR-NUMBER should be the number of the original
564          PR.
565
566    `mistaken'
567          No problem, user error or misunderstanding.  This value can
568          only be set by tools at the Support Site, since it has no
569          meaning for ordinary submitters.
570
571     *Note The `classes' file: classes file, for details.
572
573`Release'
574     (`text') Release or version number of the product, component or
575     concept.
576
577`Environment'
578     (`multitext') Description of the environment where the problem
579     occurred: machine architecture, operating system, host and target
580     types, libraries, pathnames, etc.
581
582`Description'
583     (`multitext') Precise description of the problem.
584
585`How-To-Repeat'
586     (`multitext') Example code, input, or activities to reproduce the
587     problem.  The support organization uses example code both to
588     reproduce the problem and to test whether the problem is fixed.
589     Include all preconditions, inputs, outputs, conditions after the
590     problem, and symptoms.  Any additional important information
591     should be included.  Include all the details that would be
592     necessary for someone else to recreate the problem reported,
593     however obvious.  Sometimes seemingly arbitrary or obvious
594     information can point the way toward a solution.  See also *Note
595     Helpful hints: Helpful hints.
596
597`Fix'
598     (`multitext') A description of a solution to the problem, or a
599     patch which solves the problem.  (This field is most often filled
600     in at the Support Site; we provide it to the submitter in case he
601     or she has solved the problem.)
602
603GNATS adds the following fields when the PR arrives at the Support Site:
604
605`Number'
606     (`enumerated') The incremental identification number for this PR.
607     This is included in the automated reply to the submitter (if that
608     feature of GNATS is activated; *note The `dbconfig' file: dbconfig
609     file.).  It is also included in the copy of the PR that is sent to
610     the maintainer.
611
612     The `Number' field is often paired with the `Category' field as
613
614          CATEGORY/NUMBER
615
616     in subsequent email messages.  This is GNATS' way of tracking
617     followup messages that arrive by mail so that they are filed as
618     part of the original PR.
619
620`State'
621     (`enumerated') The current state of the PR.  In default GNATS
622     installations, accepted values are:
623
624    `open'
625          The PR has been filed and the responsible person notified.
626
627    `analyzed'
628          The responsible person has analyzed the problem.
629
630    `feedback'
631          The problem has been solved, and the originator has been
632          given a patch or other fix.  Support organizations may also
633          choose to temporarily "park" PRs that are awaiting further
634          input from the submitter under this state.
635
636    `closed'
637          The changes have been integrated, documented, and tested, and
638          the originator has confirmed that the solution works.
639
640    `suspended'
641          Work on the problem has been postponed.
642
643     The initial state of a PR is `open'.  *Note States of Problem
644     Reports: States.
645
646`Responsible'
647     (`text') The person at the Support Site who is responsible for this
648     PR.  GNATS retrieves this information from the `categories' file
649     (*note The `categories' file: categories file.).
650
651`Arrival-Date'
652     (`date') The time that this PR was received by GNATS.  The date is
653     provided automatically by GNATS.
654
655`Date-Required'
656     (`date') The date by which a fix is required.  This is up to the
657     maintainers at the Support Site to determine, so this field is not
658     available until after the PR has been submitted.
659
660`Audit-Trail'
661     (`multitext') Tracks related electronic mail as well as changes in
662     the `State' and `Responsible' fields with the sub-fields:
663
664    `State-Changed-<From>-<To>: OLDSTATE>-<NEWSTATE'
665          The old and new `State' field values.
666
667    `Responsible-Changed-<From>-<To>: OLDRESP>-<NEWRESP'
668          The old and new `Responsible' field values.
669
670    `State-Changed-By: NAME'
671    `Responsible-Changed-By: NAME'
672          The name of the maintainer who effected the change.
673
674    `State-Changed-When: TIMESTAMP'
675    `Responsible-Changed-When: TIMESTAMP'
676          The time the change was made.
677
678    `State-Changed-Why: REASON...'
679    `Responsible-Changed-Why: REASON...'
680          The reason for the change.
681
682     The `Audit-Trail' field also contains any mail messages received by
683     GNATS related to this PR, in the order received.  GNATS needs to
684     find a reference to the PR in the Subject field of received email
685     in order to be able to file it correctly, see *Note Following up
686     via direct email: follow-up via email.
687
688`Unformatted'
689     (`multitext') Any random text found outside the fields in the
690     original Problem Report.
691
692   During a Problem Report's journey from `open' to `closed', two more
693fields, `Last-Modified' and `Closed Date' (both of type `date') will be
694added.
695
696
697File: gnats.info,  Node: GNATS user tools,  Next: Installation,  Prev: Introduction,  Up: Top
698
6992 The GNATS User Tools
700**********************
701
702This chapter describes the user tools distributed with GNATS.  The
703GNATS administrative and internal tools are described in *Note GNATS
704Administration: Management. The user tools provide facilities for
705initial submission, querying and editing of Problem Reports:
706
707`send-pr'
708     Used by anyone who has a problem with a body of work to submit a
709     report of the problem to the maintainers of that work (*note
710     Submitting Problem Reports: send-pr.).
711
712`query-pr'
713     Used to query the GNATS database (*note Querying the database:
714     query-pr.).
715
716`edit-pr'
717     Used to edit Problem Reports (to record new data, to change the
718     responsible party, etc.) (*note Editing existing Problem Reports:
719     edit-pr.).
720
721* Menu:
722
723* Environment::       Environment variables and GNATS tools
724* send-pr::           Submitting Problem Reports
725* edit-pr::           Editing existing Problem Reports
726* query-pr::          Querying the database
727* Emacs::             The Emacs interface
728
729
730File: gnats.info,  Node: Environment,  Next: send-pr,  Up: GNATS user tools
731
7322.1 Environment variables and GNATS tools
733=========================================
734
735All the GNATS user tools honor the `GNATSDB' environment variable which
736is used to determine which database to use.  For a local database, it
737contains the name of the database to access.
738
739   For network access via gnatsd, it contains a colon-separated list of
740strings that describe the remote database in the form
741
742     SERVER:PORT:DATABASENAME:USERNAME:PASSWORD
743
744   Any of the fields may be omitted except for SERVER, but at least one
745colon must appear; otherwise, the value is assumed to be the name of a
746local database.
747
748   If `GNATSDB' is not set and no command-line options are used to
749specify the database, it is assumed that the database is local and that
750its name is `default'.
751
752
753File: gnats.info,  Node: send-pr,  Next: edit-pr,  Prev: Environment,  Up: GNATS user tools
754
7552.2 Submitting Problem Reports
756==============================
757
758Use `send-pr' to submit Problem Reports to the database.  `send-pr' is
759a shell script which composes a template for submitters to complete.
760
761   You can invoke `send-pr' from a shell prompt, or from within GNU
762Emacs using `M-x send-pr' (*note Submitting Problem Reports from Emacs:
763Emacs submitting.)
764
765* Menu:
766
767* PR template::               The Problem Report template
768* send-pr in Emacs::          Using send-pr from within Emacs
769* send-pr from the shell::    Invoking send-pr from the shell
770* Submitting via e-mail::     Submitting a Problem Report via direct e-mail
771* Helpful hints::
772
773
774File: gnats.info,  Node: send-pr from the shell,  Next: Submitting via e-mail,  Prev: send-pr in Emacs,  Up: send-pr
775
7762.2.1 Invoking `send-pr' from the shell
777---------------------------------------
778
779     send-pr [ -b | --batch ]
780             [ -d DATABASE | --database DATABASE ]
781             [ -f FILE | --file FILE ]
782             [ -p | --print ] [ --request-id ]
783             [ -s SEVERITY | --severity SEVERITY ]
784             [ -V | --version ] [ -h | --help ]
785
786   Invoking `send-pr' with no options assumes that you want to submit
787to the local GNATS database named DEFAULT and calls the editor named in
788your environment variable `EDITOR' on a PR template for this database.
789
790`-b'
791`--batch'
792     Suppresses printing of most of the messages `send-pr' usually
793     prints while running.
794
795`-d DATABASE, --database DATABASE'
796     Specifies the database to which the PR is to be submitted; if no
797     database is specified, the local database named `default' is
798     assumed.  This option overrides the database specified in the
799     `GNATSDB' environment variable.  DATABASE can also be set to a
800     remote database by using the format for `GNATSDB' described in
801     *Note Environment variables and GNATS tools: Environment.
802
803`-f PROBLEM-REPORT'
804`--file PROBLEM-REPORT'
805     Specifies a file, PROBLEM-REPORT, where a completed Problem Report
806     or a PR template exists.  `send-pr' verifies that the contents of
807     the file constitute a valid PR and asks you if you want to edit it
808     or send it directly.  If the PR text is invalid you will be told
809     what is wrong and be given the option to edit it. If
810     PROBLEM-REPORT is `-', `send-pr' reads from standard input.
811
812`-p'
813`--print'
814     Displays the PR template for the specified database, or if the
815     `-d' or `--database' options aren't specified, print the template
816     for the local DEFAULT database.  No PR is submitted.
817
818`--request-id'
819     Sends a request for a `Submitter-Id' to the Support Site.
820
821`-s SEVERITY'
822`--severity SEVERITY'
823     Sets the initial value of the `Severity' field to SEVERITY.
824
825`-V'
826`--version'
827     Displays the `send-pr' version number and a usage summary.  No mail
828     is sent.
829
830`-h'
831`--help'
832     Displays a usage summary for `send-pr'.  No mail is sent.
833
834
835File: gnats.info,  Node: send-pr in Emacs,  Next: send-pr from the shell,  Prev: PR template,  Up: send-pr
836
8372.2.2 Using `send-pr' from within Emacs
838---------------------------------------
839
840You can use an interactive `send-pr' interface from within GNU Emacs to
841fill out your Problem Report.  We recommend that you familiarize
842yourself with Emacs before using this feature (*note Introduction:
843(emacs)Introduction.).
844
845   Call `send-pr' with `M-x send-pr'.(1)  `send-pr' responds with a
846preconfigured Problem Report template.  The Emacs interface is
847described in more detail in a separate section, *Note The Emacs
848interface to GNATS: Emacs.
849
850   ---------- Footnotes ----------
851
852   (1) If typing `M-x send-pr' doesn't work, see your system
853administrator for help loading `gnats.el' into Emacs.
854
855
856File: gnats.info,  Node: PR template,  Next: send-pr in Emacs,  Up: send-pr
857
8582.2.3 The Problem Report template
859---------------------------------
860
861Invoking `send-pr' presents a PR "template" with a number of fields
862already filled in with default values for the database you are
863submitting to.  Complete the template as thoroughly as possible to make
864a useful bug report.  Submit only one bug with each PR.
865
866   A template consists of three sections:
867
868   * Comments
869
870   * Mail Header
871
872   * GNATS fields
873
874   The *Comments section* at the top of the template contains basic
875instructions for completing the Problem Report, as well as a list of
876valid entries for the `Category' field.  One (and only one) of these
877values should be placed in the `Category' field further down in the
878Problem Report.
879
880     SEND-PR: -*- send-pr  -*-
881     SEND-PR: Lines starting with `SEND-PR' will be removed
882     SEND-PR: automatically as well as all comments (the text
883     SEND-PR: below enclosed in `<' and `>').
884     SEND-PR:
885     SEND-PR: Please consult the document `Reporting Problems
886     SEND-PR: Using send-pr' if you are not sure how to fill out
887     SEND-PR: a problem report.
888     SEND-PR:
889     SEND-PR: Choose from the following categories:
890
891   The comments lines are all preceded by the string `SEND-PR:' and are
892erased automatically when the PR is submitted.  The instructional
893comments within `<' and `>' are also removed.  (Only these comments are
894removed; lines you provide that happen to have those characters in
895them, such as examples of shell-level redirection, are not affected.)
896
897   The *Mail Header* section of the template contains a standard mail
898header constructed by `send-pr'.  `send-pr' can be set up to submit PRs
899by e-mail or by speaking directly to the GNATS server, but since this
900header is part of the standard format of Problem Reports, `send-pr'
901includes it even when it is set up to speak directly to the server.
902
903     To: PR SUBMISSION ADDRESS
904     Subject: _complete this field_
905     From: YOUR-LOGIN@YOUR-SITE
906     Reply-To: YOUR-LOGIN@YOUR-SITE
907     X-send-pr-version: send-pr 4.1.0
908
909`send-pr' automatically completes all the mail header fields except the
910`Subject' line with default values.  (*Note Problem Report format:
911Fields.)
912
913   The *GNATS fields* below the mail header form the bulk of a GNATS
914Problem Report.
915
916   Each field is either automatically completed with valid information
917(such as your `Submitter-Id') or contains a one-line instruction
918specifying the information that field requires in order to be correct.
919For example, the `Confidential' field expects a value of `yes' or `no',
920and the answer must fit on one line; similarly, the `Synopsis' field
921expects a short synopsis of the problem, which must also fit on one
922line.  Fill out the fields as completely as possible.  *Note Helpful
923hints: Helpful hints, for suggestions as to what kinds of information
924to include.
925
926   The mechanisms `send-pr' uses to fill in default values is as
927follows: Your preconfigured `Submitter-Id' is taken from the local
928`send-pr.conf' configuration file.  `send-pr' will set the `Originator'
929field to the value of the `NAME' environment variable if it has been
930set; similarly, `Organization' will be set to the value of
931`ORGANIZATION'.  If these variables aren't set in you environment,
932`send-pr' uses the values set in the local `send-pr.conf' configuration
933file, if that exists.  If not, these values are left blank in the
934template.  `send-pr' also attempts to find out some information about
935your system and architecture, and places this information in the
936`Environment' field if it finds any.
937
938   In this example, words in _italics_ are filled in with
939pre-configured information:
940
941     >Submitter-Id: _your submitter-id_
942     >Originator:   _your name here_
943     >Organization:
944         _your organization_
945     >Confidential:<[ yes | no ] (one line)>
946     >Synopsis:    <synopsis of the problem (one line)>
947     >Severity:    <[non-critical | serious | critical](one line)>
948     >Priority:    <[ low | medium | high ] (one line)>
949     >Category:    <name of the product (one line)>
950     >Class:       <[sw-bug | doc-bug | change-request | support]>
951     >Release:     <release number (one line)>
952     >Environment:
953              <machine, os, target, libraries (multiple lines)>
954
955     >Description:
956            <precise description of the problem (multiple lines)>
957     >How-To-Repeat:
958            <code/input/activities to reproduce (multiple lines)>
959     >Fix:
960            <how to correct or work around the problem, if known
961             (multiple lines)>
962
963   When you finish editing the Problem Report, `send-pr' validates the
964contents and if it looks OK either submits it directly to the GNATS
965server or submits it by mail to the address named in the `To' field in
966the mail header.
967
968   If your PR contains one or more invalid field values, `send-pr'
969places the PR in a temporary file named `/tmp/pbadNNNN' on your
970machine.  NNNN is the process identification number given to your
971current `send-pr' session.  If you are running `send-pr' from the
972shell, you are prompted as to whether or not you wish to try editing
973the same Problem Report again.  If you are running `send-pr' from
974Emacs, the Problem Report is placed in the buffer `*gnats-send*'; you
975can edit this file and then submit it with `C-c C-c'.
976
977
978File: gnats.info,  Node: Submitting via e-mail,  Next: Helpful hints,  Prev: send-pr from the shell,  Up: send-pr
979
9802.2.4 Submitting a Problem Report via direct e-mail
981---------------------------------------------------
982
983In addition to using `send-pr', there is another way to submit a
984problem report.  You can simply send an e-mail message to the PR
985submission e-mail address of the support site (This address should be
986published by the support site.)
987
988   When you send unformatted e-mail to this address, GNATS processes
989the message as a new problem report, filling in as many fields from
990defaults as it can:
991
992`Synopsis'
993     The `Synopsis' field is filled in by the `Subject' header of the
994     e-mail message.
995
996`Submitter ID'
997     GNATS will try to derive the `Submitter' field from the address in
998     the `From' header of the e-mail.
999
1000`Description'
1001     All of the text in the body of the e-mail message is put into the
1002     `Description' field.
1003
1004   Other fields, such as `Category', `Version', `Severity', etc. are
1005set to default values as defined by the GNATS administrator.
1006
1007
1008File: gnats.info,  Node: Helpful hints,  Prev: Submitting via e-mail,  Up: send-pr
1009
10102.2.5 Helpful hints
1011-------------------
1012
1013There is no orthodox standard for submitting effective bug reports,
1014though you might do well to consult the section on submitting bugs for
1015GNU `gcc' in *Note Reporting Bugs: (gcc)Bugs, by Richard Stallman.
1016This section contains instructions on what kinds of information to
1017include and what kinds of mistakes to avoid.
1018
1019   In general, common sense (assuming such an animal exists) dictates
1020the kind of information that would be most helpful in tracking down and
1021resolving problems in software.
1022   * Include anything _you_ would want to know if you were looking at
1023     the report from the other end.  There's no need to include every
1024     minute detail about your environment, although anything that might
1025     be different from someone else's environment should be included
1026     (your path, for instance).
1027
1028   * Narratives are often useful, given a certain degree of restraint.
1029     If a person responsible for a bug can see that A was executed, and
1030     then B and then C, knowing that sequence of events might trigger
1031     the realization of an intermediate step that was missing, or an
1032     extra step that might have changed the environment enough to cause
1033     a visible problem.  Again, restraint is always in order ("I set
1034     the build running, went to get a cup of coffee (Columbian, cream
1035     but no sugar), talked to Sheila on the phone, and then THIS
1036     happened...") but be sure to include anything relevant.
1037
1038   * Richard Stallman writes, "The fundamental principle of reporting
1039     bugs usefully is this: *report all the facts*.  If you are not sure
1040     whether to state a fact or leave it out, state it!"  This holds
1041     true across all problem reporting systems, for computer software
1042     or social injustice or motorcycle maintenance.  It is especially
1043     important in the software field due to the major differences
1044     seemingly insignificant changes can make (a changed variable, a
1045     missing semicolon, etc.).
1046
1047   * Submit only _one_ problem with each Problem Report.  If you have
1048     multiple problems, use multiple PRs.  This aids in tracking each
1049     problem and also in analyzing the problems associated with a given
1050     program.
1051
1052   * It never hurts to do a little research to find out if the bug
1053     you've found has already been reported.  Most software releases
1054     contain lists of known bugs in the Release Notes which come with
1055     the software; see your system administrator if you don't have a
1056     copy of these.
1057
1058   * The more closely a PR adheres to the standard format, the less
1059     interaction is required by a database administrator to route the
1060     information to the proper place.  Keep in mind that anything that
1061     requires human interaction also requires time that might be better
1062     spent in actually fixing the problem.  It is therefore in
1063     everyone's best interest that the information contained in a PR be
1064     as correct as possible (in both format and content) at the time of
1065     submission.
1066
1067
1068File: gnats.info,  Node: edit-pr,  Next: query-pr,  Prev: send-pr,  Up: GNATS user tools
1069
10702.3 Editing existing Problem Reports
1071====================================
1072
1073Use `edit-pr' to make changes to existing PRs in the database.  This
1074tool can be invoked both from a shell prompt or from within GNU Emacs
1075using `M-x edit-pr'.
1076
1077   `edit-pr' first examines the PR you wish to edit and locks it if it
1078is not already locked.  This is to prevent you from editing a PR at the
1079same time as another user.  If the PR you wish to edit is already in the
1080process of being edited, `edit-pr' tells you the name of the person who
1081owns the lock.
1082
1083   You may edit any non-readonly fields in the database.  We recommend
1084that you avoid deleting any information in the TEXT and MULTITEXT
1085fields (such as `Description' and `How-To-Repeat' (*note Problem Report
1086format: Fields.).  We also recommend that you record the final solution
1087to the problem in the `Fix' field for future reference.  Note that
1088heavily customized installations of GNATS may have differently named
1089fields, and sites using such installations should provide their own set
1090of routines and instructions regarding how PRs should be treated
1091throughout their life span.
1092
1093   After the PR has been edited, it is then resubmitted to the database,
1094and the index is updated (*note The `index' file: index file.).  For
1095information on `pr-edit', the main driver for `edit-pr', see *Note
1096Internal utilities: Internal utils.
1097
1098   If you change a field that requires a reason for the change, such as
1099the `Responsible' or `State' fields in the default configuration,
1100`edit-pr' prompts you to supply a reason for the change.  A message is
1101then appended to the `Audit-Trail' field of the PR with the changed
1102values and the change reason.
1103
1104   Depending on how the database is configured, editing various fields
1105in the PR may also cause mail to be sent concerning these changes.  In
1106the default configuration, any fields that generate `Audit-Trail'
1107entries will also cause a copy of the new `Audit-Trail' message to be
1108sent.
1109
1110   Mail received at the PR submission email address and recognized by
1111GNATS as relating to an existing PR is also appended to the
1112`Audit-Trail' field, see *Note follow-up via email::.
1113
1114* Menu:
1115
1116* edit-pr from the shell::  Invoking `edit-pr' from the shell
1117* follow-up via email:: Following up via direct email
1118
1119
1120File: gnats.info,  Node: edit-pr from the shell,  Next: follow-up via email,  Up: edit-pr
1121
11222.3.1 Invoking `edit-pr' from the shell
1123---------------------------------------
1124
1125The usage for `edit-pr' is:
1126
1127     edit-pr [ -V | --version ] [ -h | --help ]
1128             [-d DATABASE | --database DATABASE] PR NUMBER
1129
1130Network-mode-only options:
1131
1132              [--host HOST | -H HOST] [--port PORT]
1133              [--user USER | -v USER]
1134              [--passwd PASSWD | -w PASSWD]
1135
1136The options have the following meaning:
1137
1138`-h, --help'
1139     Prints a brief usage message for edit-pr.
1140
1141`-V, --version'
1142     Prints the version number for edit-pr.
1143
1144`-d DATABASE, --database DATABASE'
1145     Specifies the database containing the PR to be edited; if no
1146     database is specified, the database named `default' is assumed.
1147     This option overrides the database specified in the `GNATSDB'
1148     environment variable.
1149
1150`--host HOST, -H HOST'
1151     Specifies the hostname of the gnatsd server to communicate with.
1152     This overrides the value in the `GNATSDB' environment variable.
1153
1154`--port PORT'
1155     Specifies the port number of the gnatsd server to communicate with.
1156     This overrides the value in the `GNATSDB' environment variable.
1157
1158`--user USER, -v USER'
1159     Specifies the username to login with when connecting to the gnatsd
1160     server.  This overrides the value in the `GNATSDB' environment
1161     variable.
1162
1163`--passwd PASSWD, -w PASSWD'
1164     Specifies the password to login with when connecting to the gnatsd
1165     server.  This overrides the value in the `GNATSDB' environment
1166     variable.
1167
1168   `edit-pr' calls the editor specified in your environment variable
1169`EDITOR' on a temporary copy of that PR.  (If you don't have the
1170variable `EDITOR' defined in your environment, the default editor `vi'
1171is used.)
1172
1173   Edit the PR, changing any relevant fields or adding to existing
1174information.  When you exit the editor, `edit-pr' prompts you on
1175standard input for a reason if you have changed a field that requires
1176specifying a reason for the change.
1177
1178
1179File: gnats.info,  Node: follow-up via email,  Prev: edit-pr from the shell,  Up: edit-pr
1180
11812.3.2 Following up via direct email
1182-----------------------------------
1183
1184If you have some additional information for a PR and for some reason do
1185not want to (or cannot) edit the PR directly, you may append the
1186information to the Audit-Trail field by mailing it to the PR submission
1187address.
1188
1189   In order for GNATS to be able to recognize the mail as pertaining to
1190an existing PR (as opposed to a new PR, see *Note Submitting via
1191e-mail::), the Subject mail header field must contain a reference to
1192the PR.  GNATS matches the Subject header against the regular expression
1193
1194     \<(PR[ \t#/]?|[-[:alnum:]+.]+/)[0-9]+
1195
1196to determine whether such a reference is present. Any text may precede
1197or follow the reference in the Subject header. If more than one
1198reference is present, the first is used and the rest ignored.
1199
1200   A PR reference matching the regular expression above has two parts.
1201The second is the PR number (one or more digits). The first is either
1202the capital letters 'PR' optionally followed by a separator character
1203(blank, tab, hash mark or forward slash) or the category name followed
1204by a forward slash. Following are some examples which match the regular
1205expression:
1206
1207     PR 123 PR4567 PR#890 gnats/4711
1208
1209   The PR number and the category (if present) are checked for
1210existence, and if the outcome is positive, the mail is appended to the
1211Audit-Trail field of the PR. Note that the PR need not belong to the
1212category because PRs may move between categories.
1213
1214   Outgoing emails sent by GNATS itself may be configured to have a
1215Subject header field that refers to the PR in question:
1216
1217     Subject: Re: PR CATEGORY/GNATS-ID: ORIGINAL MESSAGE SUBJECT
1218
1219   This makes it extremely easy to follow up on a PR by replying to
1220such an email, see *Note The `dbconfig' file: dbconfig file. and the
1221sample, default `dbconfig' file installed by `mkdb'.
1222
1223
1224File: gnats.info,  Node: query-pr,  Next: Emacs,  Prev: edit-pr,  Up: GNATS user tools
1225
12262.4 Querying the database
1227=========================
1228
1229Obtain information from the database by using the program `query-pr'.
1230`query-pr' uses search parameters you provide to find matching Problem
1231Reports in the database.  You can invoke `query-pr' from the shell or
1232from within Emacs.  `query-pr' uses the same arguments whether it is
1233invoked from the shell or from Emacs.
1234
1235   PRs may be selected via the use of the `--expr' option, directly by
1236number, or by the use of the (now deprecated) field-specific query
1237operators.
1238
1239   By default, query options are connected with a logical AND.  For
1240example,
1241
1242     query-pr --category=foo --responsible=bar
1243
1244only prints PRs which have a Category field of `foo' and a Responsible
1245field of `bar'.
1246
1247   The `--or' option may be used to connect query options with a logical
1248OR. For example,
1249
1250     query-pr --category=baz --or --responsible=blee
1251
1252prints PRs which have either a Category field of `baz' or a Responsible
1253field of `blee'.
1254
1255   It should be emphasized, however, that the use of these
1256field-specific options is strongly discouraged, since they exist only
1257for compatibility with older versions of GNATS and are likely to be
1258deleted in the next release.  The expressions specified by the `--expr'
1259option are much more flexible (see below).
1260
1261* Menu:
1262
1263* Invoking query-pr::
1264* Formatting query-pr output::
1265* Query expressions::
1266* Example queries::
1267
1268
1269File: gnats.info,  Node: Invoking query-pr,  Next: Formatting query-pr output,  Up: query-pr
1270
12712.4.1 Invoking `query-pr'
1272-------------------------
1273
1274From the shell, simply type `query-pr', followed by any search
1275parameters you wish to exercise.  From Emacs, type `M-x query-pr'.
1276`query-pr' prompts you for search parameters in the minibuffer.
1277
1278   `query-pr' can also be accessed by electronic mail, if your version
1279of GNATS is configured for this.  To use this feature, simply send mail
1280to the address `query-pr@YOUR-SITE' with command line arguments or
1281options in the `Subject' line of the mail header.  GNATS replies to
1282your mail with the results of your query.  The default settings for the
1283`query-pr' mail server are
1284
1285     --restricted --state="open|analyzed|feedback|suspended"
1286
1287To override the `--state' parameter, specify `--state=STATE' in the
1288`Subject' line of the mail header.  You can not query on confidential
1289Problem Reports by mail.
1290
1291   The usage for `query-pr' is:
1292
1293     query-pr [--debug | -D] [--help | -h] [--version | -V]
1294              [--output FILE | -o FILE] [--list-databases]
1295              [--list-fields] [--list-input-fields]
1296              [--responsible-address NAME] [--field-type FIELD]
1297              [--field-description FIELD]
1298              [--field-flags FIELD]
1299              [--adm-field FIELD] [--adm-subfield SUBFIELD]
1300              [--adm-key KEY]
1301              [--valid-values FIELD]
1302              [--format FORMAT | -f FORMAT]
1303              [--full | -F] [--summary | -q]
1304              [--database DATABASE | -d DATABASE] [--and | -&]
1305              [--or | -|] [--expr EXPR] [PR Number]
1306
1307   Non-network-mode options:
1308
1309              [--print-sh-vars] [--print-directory-for-database]
1310
1311   Network-mode-only options:
1312
1313              [--host HOST | -H HOST] [--port PORT]
1314              [--user USER | -v USER] [--passwd PASSWD | -w PASSWD]
1315              [--print-server-addr]
1316
1317   Deprecated Options:
1318              [--list-categories | -j] [--list-states | -T]
1319              [--list-responsible | -k] [--list-submitters | -l]
1320              [--category CATEGORY | -c CATEGORY]
1321              [--synopsis SYNOPSIS | -y SYNOPSIS]
1322              [--confidential CONFIDENTIAL | -C CONFIDENTIAL]
1323              [--multitext MULTITEXT | -m MULTITEXT]
1324              [--originator ORIGINATOR | -O ORIGINATOR]
1325              [--release RELEASE | -A RELEASE]
1326              [--class CLASS | -L CLASS] [--cases CASES | -E CASES]
1327              [--quarter QUARTER | -Q QUARTER]
1328              [--keywords KEYWORDS | -K KEYWORDS]
1329              [--priority PRIORITY | -p PRIORITY]
1330              [--responsible RESPONSIBLE | -r RESPONSIBLE]
1331              [--restricted | -R] [--severity SEVERITY | -e SEVERITY]
1332              [--skip-closed | -x] [--sql | -i] [--sql2 | -I]
1333              [--state STATE | -s STATE]
1334              [--submitter SUBMITTER | -S SUBMITTER]
1335              [--text TEXT | -t TEXT]
1336              [--required-before DATE | -u DATE]
1337              [--required-after DATE | -U DATE]
1338              [--arrived-before DATE | -b DATE]
1339              [--arrived-after DATE | -a DATE]
1340              [--modified-before DATE | -B DATE]
1341              [--modified-after DATE | -M DATE]
1342              [--closed-before DATE | -z DATE]
1343              [--closed-after DATE | -Z DATE]
1344
1345   The options have the following meaning:
1346`--help, -h'
1347     Prints a help message.
1348
1349`--version, -V'
1350     Displays the program version to stdout.
1351
1352`--output FILE, -o FILE'
1353     The results of the query will be placed in this file.
1354
1355`--database DATABASE, -d DATABASE'
1356     Specifies the database to be used for the query.  If no database is
1357     specified, the database named default is assumed.  (This option
1358     overrides the database specified in the `GNATSDB' environment
1359     variable; see *Note Environment:: for more information.)
1360
1361`--list-categories, -j'
1362     Lists the available PR categories for the selected database.
1363
1364`--list-states, -T'
1365     Lists the valid PR states for PRs in this database.
1366
1367`--list-responsible, -k'
1368     Lists the users that appear in the database's responsible list.
1369
1370`--list-submitters, -l'
1371     Lists the valid submitters for this database.
1372
1373   The previous -list-* options are deprecated and may be removed in
1374future releases of GNATS; their functionality can be replaced with
1375
1376     query-pr --valid-values FIELD
1377
1378where FIELD is one of `Category', `Class', `Responsible',
1379`Submitter-Id', or `State'.
1380
1381`--list-databases'
1382     Lists the known databases.
1383
1384`--list-fields'
1385     Lists the entire set of field names for PRs in the selected
1386     database.
1387
1388`--list-input-fields'
1389     Lists the fields that should be provided when creating a new PR
1390     for the currently-specified database.  The fields are listed in an
1391     order that would make sense when used in a template or form.
1392
1393`--field-type FIELD'
1394     Returns the data type contained in PR field FIELD.  The current
1395     set of data types includes `text', `multitext', `enum',
1396     `multienum', `enumerated-in-file', `multi-enumerated-in-file',
1397     `date' and `integer'.
1398
1399`--field-description FIELD'
1400     Returns a human-readable description of the intended purpose of
1401     FIELD.
1402
1403`--field-flags FIELD'
1404     Returns the flags set for the field in the `dbconfig' file
1405     associated with the database, such as `textsearch' and `readonly'.
1406     *Note Individual field configuration::.
1407
1408`--adm-field FIELD'
1409     Used together with the `--adm-key' option, this returns a record
1410     from the administrative file (if any) associated with the field.
1411     For more material on administrative files, see *Note Enumerated
1412     field administrative files: administrative files.
1413
1414`--adm-subfield SUBFIELD'
1415     Used together with the `--adm-field' and `--adm-key' options, this
1416     returns the contents of a particular subfield from the record
1417     specified by `--adm-field' and `--adm-key'.  Subfields are treated
1418     in *Note Enumerated field administrative files: administrative
1419     files.
1420
1421`--adm-key KEY'
1422     Used together with `--adm-field' to select a record from the
1423     administrative file associated with the field specified by
1424     `--adm-field'.  *Note Enumerated field administrative files:
1425     administrative files.
1426
1427`--valid-values FIELD'
1428     For fields of type `enum', a list of valid values (one per line) is
1429     returned.  Otherwise, a regular expression is returned that
1430     describes the legal values in FIELD.
1431
1432`--responsible-address NAME'
1433     The mail address of NAME is returned; NAME is assumed to be a name
1434     either appearing in the database's responsible list, or is
1435     otherwise a user on the system.
1436
1437`--print-sh-vars'
1438     A set of `/bin/sh' variables is returned that describe the selected
1439     database.  They include:
1440
1441    `GNATSDB'
1442          The name of the currently-selected database.
1443
1444    `GNATSDB_VALID'
1445          Set to 1 if the selected database is valid.
1446
1447    `GNATSDBDIR'
1448          The directory  where  the  database  contents  are stored.
1449
1450    `DEBUG_MODE'
1451          Set to 1 if debug mode has been  enabled  for  the database.
1452
1453    `DEFAULTCATEGORY'
1454          The default category for PRs in the database.
1455
1456    `DEFAULTSTATE'
1457          The default state for PRs in the database.
1458
1459`--print-server-addr'
1460     Prints the information about a remote server database in the format
1461     suitable for the `GNATSDB' environment variable.  This option
1462     works only in the network mode.
1463
1464`--print-directory-for-database'
1465     Returns the directory where the selected database is located.
1466
1467`--format FORMAT, -f FORMAT'
1468     Used to specify the format of the output PRs, See *Note Formatting
1469     query-pr output:: for a complete description.
1470
1471`--full, -F'
1472     When printing PRs, the entre PR is displayed.  This is exactly
1473     equivalent to
1474
1475          query-pr --format full
1476
1477`--summary, -q'
1478     When printing PRs, a summary format is used.  This is exactly
1479     equivalent to
1480
1481          query-pr --format SUMMARY
1482
1483`--debug, -D'
1484     Enables debugging output for network queries.
1485
1486`--host HOST, -H HOST'
1487     Specifies the hostname of the gnatsd server to communicate with.
1488     This overrides the value in the `GNATSDB' environment variable.
1489
1490`--port PORT'
1491     Specifies the port number of the gnatsd server to communicate with.
1492     This overrides the value in the `GNATSDB' environment variable.
1493
1494`--user USER, -v USER'
1495     Specifies the username to login with when connecting to the gnatsd
1496     server.  This overrides the value in the `GNATSDB' environment
1497     variable.
1498
1499`--passwd PASSWD, -w PASSWD'
1500     Specifies the password to login with when connecting to the gnatsd
1501     server.  This overrides the value in the `GNATSDB' environment
1502     variable.
1503
1504`--and, -&, --or, -|'
1505     These options are used when connecting multiple query operators
1506     together.  They specify whether the previous and subsequent
1507     options are to be logically ANDed or logically ORed.
1508
1509`--expr EXPR'
1510     Specifies a query expression to use when searching for PRs.  *Note
1511     Query expressions::.
1512
1513   The remaining deprecated options are not described here, since their
1514use is fairly obvious and their functionality is completely replaced by
1515the use of the `--expr' option.
1516
1517
1518File: gnats.info,  Node: Formatting query-pr output,  Next: Query expressions,  Prev: Invoking query-pr,  Up: query-pr
1519
15202.4.2 Formatting `query-pr' output
1521----------------------------------
1522
1523Printing formats for PRs are in one of three forms:
1524
1525FORMATNAME
1526     This is a named format which is described by the database
1527     (specifically, these formats are described in the `dbconfig' file
1528     associated with the database).  The default configuration contains
1529     five such formats: `standard', `full', `summary', `sql', and
1530     `sql2'.
1531
1532     The first three are the ones most commonly used when performing
1533     queries.  standard is the format used by default if no other
1534     format is specified.
1535
1536     Use of the latter two are discouraged; they are merely kept for
1537     historical purposes.  Other named formats may have been added by
1538     the database administrator.
1539
1540FIELDNAME
1541     A single field name may appear here.  Only the contents of this
1542     field will be displayed.
1543
1544'"PRINTF STRING" FIELDNAME FIELDNAME ...'
1545     This provides a very flexible mechanism for formatting PR output.
1546     (The formatting is identical to that provided by the named formats
1547     described by the database configuration, *Note Named query
1548     definitions::.  The PRINTF STRING can contain the following %
1549     sequences:
1550
1551     `%[positionalspecifiers]s': Prints the field as a string.  The
1552     positional specifiers are similar to those of printf, as +, - and
1553     digit qualifiers can be used to force a particular alignment of
1554     the field contents.
1555
1556     `%[positionalspecifiers]S': Similar to `%s', except that the field
1557     contents are terminated at the first space character.
1558
1559     `%[positionalspecifiers]d': Similar to `%s', except that the field
1560     contents are written as a numeric value.  For integer fields, the
1561     value is written as a number.  For enumerated fields, the field is
1562     converted into a numeric equivalent (i.e. if the field can have two
1563     possible values, the result will be either 1 or 2).  For date
1564     fields, the value is written as seconds since Jan 1, 1970.
1565
1566     `%F': The field is written as it would appear within a PR, complete
1567     with field header.
1568
1569     `%D': For date fields, the date is written in a standard GNATS
1570     format.
1571
1572     `%Q': For date fields, the date is written in an arbitrary "SQL"
1573     format.
1574
1575   An example formatted query looks as follows (note that the whole
1576format specification should be quoted):
1577
1578     query-pr --format '"%s, %s" Synopsis State'
1579
1580
1581File: gnats.info,  Node: Query expressions,  Next: Example queries,  Prev: Formatting query-pr output,  Up: query-pr
1582
15832.4.3 Query expressions
1584-----------------------
1585
1586Query expressions are used to select specific PRs based on their field
1587contents.  The general form is
1588
1589     fieldname|"value" operator fieldname|"value" [booleanop ...]
1590
1591   VALUE is a literal string or regular expression; it must be
1592surrounded by double quotes, otherwise it is interpreted as a fieldname.
1593
1594   FIELDNAME is the name of a field in the PR.
1595
1596   OPERATOR is one of:
1597
1598`='
1599     The value of the left-hand side of the expression must exactly
1600     match the regular expression on the right-hand side of the
1601     expression.  *Note Querying using regular expressions: Regexps.
1602
1603`~'
1604     Some portion of the left-hand side of the expression must match the
1605     regular expression on the right-hand side.
1606
1607`=='
1608     The value of the left-hand side must be equal to the value on the
1609     right-hand side of the expression.
1610
1611     The equality of two values depends on what type of data is stored
1612     in the field(s) being queried.  For example, when querying a field
1613     containing integer values, literal strings are interpreted as
1614     integers.  The query expression
1615
1616          Number == "0123"
1617
1618     is identical to
1619
1620          Number == "123"
1621
1622     as the leading zero is ignored.  If the values were treated as
1623     strings instead of integers, then the two comparisons would return
1624     different results.
1625
1626`!='
1627     The not-equal operator. Produces the opposite result of the ==
1628     operator.
1629
1630`<,>'
1631     The left-hand side must have a value less than or greater than the
1632     right-hand side.  Comparisons are done depending on the type of
1633     data being queried; in particular, integer fields and dates use a
1634     numeric comparison, and enumerated fields are ordered depending on
1635     the numeric equivalent of their enumerated values.
1636
1637   BOOLEANOP is either `|' (logical or), or `&' (logical and).  The
1638query expression
1639
1640     Category="baz" | Responsible="blee"
1641
1642selects all PRs with a Category field of `baz' or a Responsible field
1643of `blee'.
1644
1645   The not operator `!' may be used to negate a test:
1646
1647     ! Category="foo"
1648
1649searches for PRs where the category is not equal to the regular
1650expression foo.
1651
1652   Parentheses may be used to force a particular interpretation of the
1653expression:
1654
1655     !(Category="foo" & Submitter-Id="blaz")
1656
1657skips PRs where the Category field is equal to `foo' and the
1658Submitter-Id field is equal to `blaz'.  Parentheses may be nested to
1659any arbitrary depth.
1660
1661   Fieldnames can be specified in several ways.  The simplest and most
1662obvious is just a name:
1663
1664     Category="foo"
1665
1666which checks the value of the category field for the value FOO.
1667
1668   A fieldname qualifier may be prepended to the name of the field; a
1669colon is used to separate the qualifier from the name.  To refer
1670directly to a builtin field name:
1671
1672     builtin:Number="123"
1673
1674   In this case, `Number' is interpreted as the builtin name of the
1675field to check.  (This is useful if the fields have been renamed.  For
1676further discussion of builtin field names, see *Note The `dbconfig'
1677file: dbconfig file.
1678
1679   To scan all fields of a particular type, the FIELDTYPE qualifier may
1680be used:
1681
1682     fieldtype:Text="bar"
1683
1684This searches all text fields for the regular expression `bar'.
1685
1686   Note that it is not required that the right-hand side of the
1687expression be a literal string.  To query all PRs where the PR has been
1688modified since it was closed, the expression
1689
1690     Last-Modified != Closed-Date
1691
1692will work; for each PR, it compares the value of its Last-Modified field
1693against its Closed-Date field, and returns those PRs where the values
1694differ.  However, this query will also return all PRs with empty
1695Last-Modified or Closed-Date fields.  To further narrow the search:
1696
1697     Last-Modified != Closed-Date & Last-Modified != "" & Closed-Date != ""
1698
1699In general, comparing fields of two different types (an integer field
1700against a date field, for example) will probably not do what you want.
1701
1702   Also, a field specifier may be followed by the name of a subfield in
1703braces:
1704
1705     State[type] != "closed"
1706
1707or even
1708
1709     builtin:State[type] != "closed"
1710
1711Subfields are further discussed in *Note The `dbconfig' file: dbconfig
1712file.
1713
1714
1715File: gnats.info,  Node: Example queries,  Prev: Query expressions,  Up: query-pr
1716
17172.4.4 Example queries
1718---------------------
1719
1720The following simple query:
1721
1722     query-pr --expr 'Category~"rats" & State~"analyzed"
1723                      & Responsible~"fred"'
1724
1725yields all PRs in the database which contain the field values:
1726
1727     >Category:     rats         _and_
1728     >Responsible:  fred         _and_
1729     >State:        analyzed
1730
1731   The following query:
1732
1733     query-pr --expr 'State~"open|analyzed"'
1734
1735yields all PRs in the database whose `State' values match either `open'
1736or `analyzed' (*note Querying using regular expressions: Regexps.  This
1737search is useful as a daily report that lists all Problem Reports which
1738require attention.
1739
1740   The following query:
1741
1742     query-pr --expr 'fieldtype:Text="The quick.*brown fox"'
1743
1744yields all PRs whose TEXT fields contain the text `The quick' followed
1745by `brown fox' within the same field.  *Note Querying using regular
1746expressions: Regexps, which also contains further useful examples of
1747query expressions.
1748
1749
1750File: gnats.info,  Node: Emacs,  Prev: query-pr,  Up: GNATS user tools
1751
17522.5 The Emacs interface to GNATS
1753================================
1754
1755Emacs interface to GNATS provides basic access to GNATS databases, i.e.
1756sending, editing, and querying Problem Reports.  It also defines a
1757simple major mode for editing `dbconfig' files.
1758
1759   This section provides an overview of using GNATS with Emacs.  It
1760does not describe the use of Emacs itself, for detailed instructions on
1761using Emacs, see *Note Top: (emacs)Top.  For installation instructions
1762of the GNATS Emacs mode, see *Note Installing utils::.
1763
1764   Please note the Emacs interface was completely rewritten between
1765GNATS 3 and GNATS 4.  It now uses `gnatsd', *Note gnatsd::, exclusively
1766for its operations and uses modern Emacs features like faces.  Its
1767features are not complete though, you can send your suggestions and
1768patches to the appropriate GNATS mailing list, *Note Support::.
1769
1770* Menu:
1771
1772* Emacs viewing::               Viewing PRs by their number.
1773* Emacs querying::              Querying the database.
1774* Emacs submitting::            Submitting new PRs.
1775* Emacs editing::               Editing PRs.
1776* Emacs editing buffer::        The editing buffer.
1777* Emacs and databases::         Changing the working database.
1778* dbconfig mode::               Major mode for dbconfig files.
1779* Other Emacs commands::        Miscellaneous commands.
1780* Emacs customization::         Customizing the Emacs interface.
1781
1782
1783File: gnats.info,  Node: Emacs viewing,  Next: Emacs querying,  Up: Emacs
1784
17852.5.1 Viewing Problem Reports
1786-----------------------------
1787
1788To view a particular Problem Report, use the command `M-x view-pr'.  It
1789asks for a Problem Report number and displays that Problem Report.
1790
1791   The displayed buffer is put in the view mode, *Note Misc File Ops:
1792(emacs)Misc File Ops.  If you decide to edit the displayed Problem
1793Report, use the command `e' (`gnats-view-edit-pr').
1794
1795`gnats-view-mode-hook'
1796     Hook run when `gnats-view-mode' is entered.
1797
1798
1799File: gnats.info,  Node: Emacs querying,  Next: Emacs submitting,  Prev: Emacs viewing,  Up: Emacs
1800
18012.5.2 Querying Problem Reports
1802------------------------------
1803
1804Querying the database is performed by the `M-x query-pr' command.  The
1805command prompts for the query expression, *Note Query expressions::,
1806and displays a buffer with the list of the matching Problem Reports.
1807
1808   The list of the Problem Reports is displayed in the `summary' query
1809format, *Note Formatting query-pr output::.  Currently, the display
1810format cannot be changed and it must output each Problem Report's
1811number in the first column.
1812
1813   The Problem Report list buffer is put in the view mode, *Note Misc
1814File Ops: (emacs)Misc File Ops.  You can use most of the standard view
1815mode commands in it.  Additionally, the following special commands are
1816available:
1817
1818`v'
1819`RET'
1820`mouse-2'
1821     View the current Problem Report (`gnats-query-view-pr'), *Note
1822     Emacs viewing::.
1823
1824`e'
1825     Edit the current Problem Report (`gnats-query-edit-pr'), *Note
1826     Emacs editing::.
1827
1828`g'
1829     Update the Problem Report list (`gnats-query-reread').  The last
1830     performed query is executed again and the buffer is filled with the
1831     new results.
1832
1833`G'
1834     Perform new query (`query-pr').
1835
1836`s'
1837     Send new Problem Report (`send-pr'), *Note Emacs submitting::.
1838
1839`D'
1840     Change the current database (`gnats-change-database'), *Note Emacs
1841     and databases::.
1842
1843`q'
1844     Bury buffer, the buffer is put at the end of the list of all
1845     buffers.  This is useful for quick escape of the buffer, without
1846     killing it.
1847
1848   If the value of the variable GNATS-QUERY-REVERSE-LISTING is
1849non-`nil', the listing appears in the reversed order, i.e. with the
1850Problem Reports of the highest number first, in the buffer.
1851
1852   Similarly to other GNATS Emacs modes, there is a hook available for
1853the Problem Report list.
1854
1855`gnats-query-mode-hook'
1856     Hook run when `gnats-query-mode' is entered.
1857
1858
1859File: gnats.info,  Node: Emacs submitting,  Next: Emacs editing,  Prev: Emacs querying,  Up: Emacs
1860
18612.5.3 Submitting new Problem Reports
1862------------------------------------
1863
1864You can submit new Problem Reports with the command `M-x send-pr'.  The
1865command puts you to the problem editing buffer, *Note Emacs editing::.
1866The buffer is prefilled with the initial report fields and their
1867default values, if defined.  You can use the usual Problem Report
1868editing commands, *Note Emacs editing::.  When you have filled in all
1869the fields, you can send the Problem Report by presing `C-c C-c'.
1870
1871   If you run `M-x send-pr' with a prefix argument, it runs the
1872`gnats-change-database' command before putting you to the editing
1873buffer, *Note Emacs and databases::.
1874
1875   You can set the following variables to get some fields pre-filled:
1876
1877GNATS-DEFAULT-ORGANIZATION
1878     Default value of the `Organization' field used in new Problem
1879     Reports.
1880
1881GNATS-DEFAULT-SUBMITTER
1882     Default value of the `Submitter-Id' field used in new Problem
1883     Reports.
1884
1885
1886File: gnats.info,  Node: Emacs editing,  Next: Emacs editing buffer,  Prev: Emacs submitting,  Up: Emacs
1887
18882.5.4 Editing Problem Reports
1889-----------------------------
1890
1891To edit a particular Problem Report, use the command `M-x edit-pr'.  It
1892asks for a Problem Report number and puts the given Problem Report in
1893the editing buffer.  *Note Emacs editing buffer::, for information how
1894to edit the Problem Report in the buffer and how to submit your changes.
1895
1896   Note you can also start editing of a selected Problem Report directly
1897from within the viewing buffer, *Note Emacs viewing::, or the query
1898result buffer, *Note Emacs querying::.
1899
1900
1901File: gnats.info,  Node: Emacs editing buffer,  Next: Emacs and databases,  Prev: Emacs editing,  Up: Emacs
1902
19032.5.5 The Problem Report editing buffer
1904---------------------------------------
1905
1906When you invoke a Problem Report editing command, the Problem Report is
1907put into a special editing buffer.  The Problem Report is formatted
1908similarly to the `query-pr -F' output, *Note Formatting query-pr
1909output::.  Field identifiers are formatted as
1910
1911     >Field:
1912
1913   with the text of the field following the identifier on the same line
1914for single-line fields or starting on the next line for multi-line
1915fields.
1916
1917   The Problem Report editing mode tries to prevent you from violating
1918the Problem Report format and the constraints put on the possible field
1919values.  Generally, you can use usual editing commands, some of them
1920have a slightly modified behavior though.  (If you encounter a very
1921strange behavior somewhere, please report it as a bug, *Note Support::.)
1922
1923   You can move between fields easily by pressing the `TAB'
1924(`gnats-next-field') or `M-TAB' (`gnats-previous-field') keys.
1925
1926   The field tags are read-only and you cannot edit them nor delete
1927them.  If you want to "remove" a field, just make its value empty.
1928
1929   Editing a field value depends on the type of the edited field, *Note
1930Field datatypes::.  For text fields, you can edit the value directly,
1931assuming you preserve the rule about single-line and multi-line values
1932mentioned above.
1933
1934   For enumerated fields, you cannot edit the value directly.  You can
1935choose it from the list of the allowed values, either from the menu
1936popped up by pressing the middle mouse button or from within minibuffer
1937by pressing any key on the field's value.  If the pressed key matches
1938any of the allowed field values, that value is put as the default value
1939after the minibuffer prompt.  You can also cycle through the allowed
1940field values directly in the editing buffer using the `SPACE' key.
1941Enumerated field values are marked by a special face to not confuse
1942you; you must have enabled font lock mode to benefit from this feature,
1943*Note Font Lock: (emacs)Font Lock.
1944
1945   Some field values can be read-only, you cannot edit them at all.
1946
1947   Once you have edited the Problem Report as needed, you can send it to
1948the server with the `C-c C-c' command (`gnats-apply-or-submit').
1949Successful submission is reported by a message and the buffer
1950modification flag in mode line is cleared.  Then you can either kill
1951the buffer or continue with further modifications.
1952
1953`gnats-edit-mode-hook'
1954     Hook run when `gnats-edit-mode' is entered.
1955
1956
1957File: gnats.info,  Node: Emacs and databases,  Next: dbconfig mode,  Prev: Emacs editing buffer,  Up: Emacs
1958
19592.5.6 Changing the database
1960---------------------------
1961
1962By default, the Emacs interface connects to the default database, *Note
1963databases file::.  If you want to connect to another database, use the
1964command `M-x gnats-change-database'.  It will ask you for the database
1965name to use, server and port it can be accessed on, and your login name.
1966
1967   If you want to use the `gnatsd' command, *Note gnatsd::, directly,
1968without connecting to a remote server or the localhost connection port,
1969provide your local file system full path to `gnatsd' as the server
1970name.  Port number does not matter in this case.
1971
1972   If the database requires a password to allow you the access to it,
1973you are prompted for the password the first time you connect to the
1974database.  If you provide an invalid password, you cannot connect to
1975the database anymore and you have to run the `M-x
1976gnats-change-database' command again.
1977
1978
1979File: gnats.info,  Node: dbconfig mode,  Next: Other Emacs commands,  Prev: Emacs and databases,  Up: Emacs
1980
19812.5.7 dbconfig mode
1982-------------------
1983
1984The Emacs interface defines a simple major mode `gnats-dbconfig-mode'
1985for editing `dbconfig' files, *Note dbconfig file::.  It defines basic
1986mode attributes like character syntax and font lock keywords, it does
1987not define any special commands now.
1988
1989`gnats-dbconfig-mode-hook'
1990     Hook run when `gnats-dbconfig-mode' is entered.
1991
1992
1993File: gnats.info,  Node: Other Emacs commands,  Next: Emacs customization,  Prev: dbconfig mode,  Up: Emacs
1994
19952.5.8 Other commands
1996--------------------
1997
1998`M-x unlock-pr'
1999     Ask for a Problem Report number and unlock that Problem Report.
2000     This function is useful if connection to a GNATS server was
2001     interrupted during an editing operation and further modifications
2002     of the Problem Report are blocked by a stealth lock.
2003
2004`M-x unlock-database'
2005     Unlock the whole GNATS database.  This function is useful in
2006     situations similar to when `unlock-pr' is used.
2007
2008`M-x gnats-show-connection'
2009     Show the connection buffer associated with the current buffer.  You
2010     can view the Emacs communication with GNATSD in it.  This is
2011     useful when something strange happens during the communication with
2012     the server, e.g. when sending a Problem Report with `C-c C-c' from
2013     a Problem Report editing buffer.
2014
2015
2016File: gnats.info,  Node: Emacs customization,  Prev: Other Emacs commands,  Up: Emacs
2017
20182.5.9 Customization
2019-------------------
2020
2021All the user variables can be customized in the customization group
2022`gnats', *Note Easy customization: (emacs)Easy customization.
2023
2024
2025File: gnats.info,  Node: Installation,  Next: Management,  Prev: GNATS user tools,  Up: Top
2026
20273 Installing GNATS
2028******************
2029
2030See also *Note Where the tools and utilities reside: Locations.
2031
2032   There are several steps you need to follow to fully configure and
2033install GNATS on your system.  You need `root' access in order to
2034create a new account for `gnats' and to install the GNATS utilities.
2035You may need `root' access on some systems in order to set up mail
2036aliases and to allow this new account access to `cron' and `at'.
2037
2038   If you are updating an older version of GNATS rather than installing
2039from scratch, see *Note Upgrading from older versions: Upgrading.
2040
2041   GNATS installation relies on two other freely available software
2042packages, which should be installed before you go on to configure and
2043build GNATS.  These are GNU `make' and `Texinfo' (version 4.2 or
2044higher).  Both are available from the GNU FTP site at
2045`ftp://ftp.gnu.org'.
2046
2047   To build and install GNATS, you must:
2048
2049   * Run `configure', with correct options if the defaults are
2050     unsuitable for your site.  *Note Configuring and compiling the
2051     software: Configure and make.  Default installation locations are
2052     in *Note Where GNATS lives: Locations.
2053
2054   * Compile the GNATS programs on your system.  *Note Configuring and
2055     compiling the software: Configure and make.
2056
2057   * Create an initial database by using the `mkdb' command.  *Note
2058     Setting up the default database::.
2059
2060   * Set up periodic jobs, using cron, to handle Problem Reports
2061     arriving by mail.  *Note Setting up periodic jobs::.
2062
2063   * Set up mail aliases for GNATS.  *Note Setting up mail aliases:
2064     Aliases.
2065
2066   * Install the GNATS tools and utilities locally, and install the user
2067     tools (`query-pr', `edit-pr', `send-pr') on every machine in your
2068     local network.  *Note Installing the user tools: Installing tools.
2069
2070   * Install the GNATS daemon `gnatsd'.  *Note Installing the daemon::.
2071
2072   * If there are people outside your organization who will be
2073     submitting PRs or who are supposed to be able to query and/or edit
2074     PRs, you may need to instruct them to obtain and build the GNATS
2075     tools `query-pr', `edit-pr' and `send-pr' for their systems.
2076     However, for many sites, setting up a remote access interface to
2077     GNATS, such as Gnatsweb is a better solution since this requires
2078     no configuration on the remote side.
2079
2080* Menu:
2081
2082* Configure and make::               Configuring and compiling the software
2083* Installing utils::                 Installing the utilities
2084* Setting up the default database::  Setting up the default database
2085* Setting up periodic jobs::         Setting up periodic jobs
2086* Aliases::                          Setting up mail aliases
2087* Installing the daemon::            Installing the daemon
2088* Installing tools::                 Installing the user tools
2089* Upgrading::                        Upgrading from older versions
2090
2091
2092File: gnats.info,  Node: Configure and make,  Next: Installing utils,  Up: Installation
2093
20943.1 Configuring and compiling the software
2095==========================================
2096
2097  1. First, unpack your distribution.  We provide source code in a `tar'
2098     file which was compressed using `gzip'.  The code can be extracted
2099     into a directory UNPACKDIR using
2100
2101          cd UNPACKDIR
2102          gunzip gnats-4.1.0.tar.gz
2103          tar xvf gnats-4.1.0.tar
2104
2105     The sources reside in a directory called `gnats-4.1.0' when
2106     unpacked.  We call this the "top level" of the source directory,
2107     or "srcdir".  The sources for the GNATS tools are in the
2108     subdirectory `gnats-4.1.0/gnats/*'.  Lists of files included in
2109     the distribution are in each directory in the file `MANIFEST'.
2110
2111  2. As of GNATS version 4, having Emacs installed on the GNATS server
2112     is no longer a requirement.  If you do not have Emacs installed,
2113     disregard this step altogether.
2114
2115     You may wish to alter the installation directory for the Emacs lisp
2116     files.  If your Emacs lisp library is not in
2117     `PREFIX/share/emacs/site-lisp', edit the file
2118     `SRCDIR/gnats/Makefile.in'.  Change the variable `lispdir' from
2119     `PREFIX/emacs/site-lisp' to the directory containing your Emacs
2120     lisp library.  For information on PREFIX, see *Note PREFIX: prefix.
2121
2122  3. Create an account for the `gnats' user.  You can actually name this
2123     user whatever you want to, as long as it is a valid username on
2124     your system, but we strongly recommend that you call the user
2125     `gnats'.  If you do decide to give it some other name, remember to
2126     use the option `--with-gnats-user' when running `configure' below.
2127     Below, we will anyway refer to this user by the name `gnats'.
2128
2129     This user must have an entry in the file `/etc/passwd'.  As for
2130     ordinary users, create a standard home directory for the `gnats'
2131     user.  The default `PATH' for this user should contain
2132     `EXEC-PREFIX/bin' and `EXEC-PREFIX/libexec/gnats'.  The
2133     EXEC-PREFIX value is configurable with the `--exec-prefix'
2134     configure option described below, but for standard installations,
2135     these two directories correspond to `/usr/local/bin' and
2136     `/usr/local/libexec/gnats'.
2137
2138  4. Run `configure'.  You can nearly always run `configure' with the
2139     simple command
2140
2141          ./configure
2142
2143     and the "Right Thing" happens:
2144
2145        * GNATS is configured in the same directory you unpacked it in;
2146
2147        * when built, GNATS runs on the machine you're building it on;
2148
2149        * when installed, files are installed under `/usr/local' (*note
2150          Where GNATS lives: Locations.).
2151
2152        * all GNATS utilities operate on the "default database", assumed
2153          to be named _default_ and to be located in
2154          `/usr/local/com/default', unless you invoke the utilities with
2155          `-d' DATABASENAME or `--directory='DATABASENAME, or set the
2156          GNATSDB environment variable to point to some other database.
2157
2158     The most common options to `configure' are listed below:
2159
2160          configure [ --prefix=PREFIX ]
2161                    [ --exec-prefix=EXEC-PREFIX ]
2162                    [ --with-gnats-service=SERVICE-NAME ]
2163                    [ --with-gnats-user=USERNAME ]
2164                    [ --with-gnatsd-user-access-file=PATH ]
2165                    [ --with-gnatsd-host-access-file=PATH ]
2166                    [ --with-gnats-dblist-file=PATH ]
2167                    [ --with-gnats-default-db=PATH ]
2168                    [ --with-kerberos ] [ --with-krb4 ]
2169                    [ --verbose ]
2170
2171    `--prefix=PREFIX'
2172          All host-independent programs and files are to be installed
2173          under PREFIX.  (Host-dependent programs and files are also
2174          installed in PREFIX by default.)  The default for PREFIX is
2175          `/usr/local'.  *Note Where GNATS lives: Locations.
2176
2177    `--exec-prefix=EXEC-PREFIX'
2178          All host-dependent programs and files are to be installed
2179          under EXEC-PREFIX.  The default for EXEC-PREFIX is PREFIX.
2180          *Note Where GNATS lives: Locations.
2181
2182    `--with-gnats-service=SERVICE-NAME'
2183          Set SERVICE-NAME to be the GNATS network service.  Default
2184          name is SUPPORT.
2185
2186    `--with-gnats-user=USERNAME'
2187          Set USERNAME to be the user name for GNATS.  Default username
2188          is GNATS.
2189
2190    `--with-gnatsd-user-access-file=PATH'
2191          Set global (across all databases) gnatsd user access file to
2192          PATH. Default is `/USR/LOCAL/ETC/GNATS/GNATSD.USER_ACCESS'.
2193          Per-database user access permissions are set in a
2194          `gnatsd.user_access' file in the `gnats-adm' subdirectory of
2195          each database.
2196
2197    `--with-gnatsd-host-access-file=PATH'
2198          Set global (across all databases) gnatsd host access file to
2199          PATH. Default is `/usr/local/etc/gnats/gnatsd_host.access'.
2200          There is currently no way to specify host access permissions
2201          on a per-database basis.
2202
2203    `--with-gnats-dblist-file=PATH'
2204          Specify the file containing the list of databases.
2205
2206          Default is `PREFIX/etc/gnats/databases'.
2207
2208    `--with-gnats-default-db=PATH'
2209          Specify the default database to use when GNATS tools are
2210          invoked without the `-d' or `--databasename' option, and when
2211          the GNATSDB envrionment variable hasn't been set. Default is
2212          `/PREFIX/com/gnatsdb'.
2213
2214    `--with-kerberos'
2215          Include code for Kerberos authentication.
2216
2217    `--with-krb4'
2218          Support Kerberos 4.
2219
2220    `--verbose'
2221          Give verbose output while `configure' runs.
2222
2223     `configure' supports several more options which allow you to
2224     specify in great detail where files are installed. For a complete
2225     list of options, run `./configure --help' in the source directory.
2226
2227     You can build GNATS in a different directory (OBJDIR) from the
2228     source code by calling the `configure' program from the new
2229     directory, as in
2230
2231          mkdir OBJDIR
2232          cd OBJDIR
2233          SRCDIR/configure ...
2234
2235     By default, `make' compiles the programs in the same directory as
2236     the sources (SRCDIR).
2237
2238  5. Make sure you have GNU `make', then run
2239
2240          make all info
2241
2242     from the directory where `configure' created a `Makefile' (this is
2243     OBJDIR if you used it, otherwise SRCDIR.)  These targets indicate:
2244
2245    `all'
2246          Compile all programs
2247
2248    `info'
2249          Create `info' files using `makeinfo'.
2250
2251
2252File: gnats.info,  Node: Installing utils,  Next: Setting up the default database,  Prev: Configure and make,  Up: Installation
2253
22543.2 Installing the utilities
2255============================
2256
2257The following steps are necessary for a complete installation.  You may
2258need `root' access for these.
2259
2260  1. Install the utilities by invoking
2261
2262          make install install-info
2263
2264     These targets indicate:
2265
2266    `install'
2267          Installs all programs into their configured locations (*note
2268          Where GNATS lives: Locations.).
2269
2270    `install-info'
2271          Installs `info' files into their configured locations (*note
2272          Where GNATS lives: Locations.).
2273
2274     After you have installed GNATS, you can remove the object files
2275     with
2276
2277          make clean
2278
2279  2. If you do not have Emacs installed on your GNATS server, this step
2280     should be skipped.
2281
2282     Place the following lines in the file `default.el' in your Emacs
2283     lisp library, or instruct your local responsible parties to place
2284     the lines in their `.emacs':
2285
2286          (autoload 'send-pr "gnats"
2287             "Command to create and send a problem report." t)
2288          (autoload 'edit-pr "gnats"
2289             "Command to edit a problem report." t)
2290          (autoload 'view-pr "gnats"
2291             "Command to view a problem report." t)
2292          (autoload 'query-pr "gnats"
2293             "Command to query information about problem reports." t)
2294          (autoload 'unlock-pr "gnats"
2295             "Unlock a problem report." t)
2296          (autoload 'gnats-dbconfig-mode "gnats"
2297            "Major mode for editing the `dbconfig' GNATS configuration file." t)
2298          (add-to-list 'auto-mode-alist '("\\<dbconfig$" . gnats-dbconfig-mode))
2299
2300  3. If you want people who are logged into the GNATS server itself to
2301     be able to use the `send-pr' tool to submit problem reports, you
2302     need to create a configuration file for `send-pr' on the server.
2303     *Note The send-pr.conf configuration file: send-pr.conf file.
2304
2305
2306
2307File: gnats.info,  Node: Setting up the default database,  Next: Setting up periodic jobs,  Prev: Installing utils,  Up: Installation
2308
23093.3 Installing the default database
2310===================================
2311
2312For the following steps, log in as the user `gnats'.
2313
2314   We are now going to initialize the default GNATS database.  Run the
2315following command:
2316
2317     mkdb default
2318
2319   This creates a database named `default', with all its data stored
2320below the directory `PREFIX/com/gnatsdb', in a default installation
2321this corresponds to `/usr/local/com/gnatsdb'.  If you specified the
2322`--with-gnats-default-db' option when running configure, the default
2323database will be created under the directory you specified instead.
2324`mkdb' creates the database directory itself, together with three
2325different subdirectories(1):
2326
2327   * A directory for the mandatory GNATS category PENDING.
2328
2329   * A `gnats-queue' directory for queueing new messages to GNATS
2330     before they are processed by `file-pr'.
2331
2332   * The administrative directory `gnats-adm'. This directory is
2333     populated with default configuration files from the
2334     `PREFIX/etc/gnats/defaults' directory.
2335
2336   The next configuration step is to edit the default files copied to
2337the database's `gnats-adm' directory by `mkdb'.
2338
2339   The default `dbconfig' file installed by `mkdb' provides a good
2340basis for many GNATS databases. The default file causes similar
2341behaviour to the 3.x versions of GNATS. However, even if this might be
2342precisely what you want, you should still go through the file and check
2343that the default settings suit your needs.  *Note The `dbconfig' file:
2344dbconfig file.
2345
2346   Then edit the files `categories', `responsible', and `submitters' in
2347the `gnats-adm' directory (*note Other database-specific config files:
2348Other config files.) to reflect your local needs.  For special
2349configurations, you may also have to edit the `states' and `classes'
2350files.
2351
2352   If you used the `--with-gnats-default-db' option in the pre-build
2353configure to change the location of the default database, you need to
2354edit the `databases' config file, see *Note The `databases file':
2355databases file.  This file is by default located in the
2356`PREFIX/etc/gnats' directory, but may have been changed by the option
2357`--with-gnats-dblist-file' option during configure.
2358
2359   ---------- Footnotes ----------
2360
2361   (1) Upgraders from older versions of GNATS should note that category
2362directories are now created "on-the-fly" as needed by default.
2363
2364
2365File: gnats.info,  Node: Setting up periodic jobs,  Next: Aliases,  Prev: Setting up the default database,  Up: Installation
2366
23673.4 Setting up periodic jobs
2368============================
2369
2370Allow the new user `gnats' access to `cron' and `at'.  To do this, add
2371the name `gnats' to the files `cron.allow' and `at.allow', which
2372normally reside in the directory `/var/spool/cron'.  If these files do
2373not exist, make sure `gnats' does not appear in either of the files
2374`cron.deny' and `at.deny' (in the same directory).  If you changed the
2375name of the GNATS user during configure, remember to substitute as
2376appropriate in the previous steps.
2377
2378   Create a `crontab' entry that periodically runs the program
2379`queue-pr' with the `--run' option (*note `queue-pr': queue-pr.).  For
2380example, to run `queue-pr --run' every ten minutes, create a file called
2381`.mycron' in the home directory of the user `gnats' which contains the
2382line:
2383
2384     0,10,20,30,40,50 * * * * EXEC-PREFIX/libexec/gnats/queue-pr --run
2385
2386(Specify the full path name for `queue-pr'.)  Then run
2387
2388     crontab .mycron
2389
2390See the `man' pages for `cron' and `crontab' for details on using
2391`cron'.
2392
2393
2394File: gnats.info,  Node: Aliases,  Next: Installing the daemon,  Prev: Setting up periodic jobs,  Up: Installation
2395
23963.5 Setting up mail aliases
2397===========================
2398
2399The following mail aliases must be added on the machine where the GNATS
2400server is installed.  The instructions below are for Sendmail or
2401Sendmail-like mail systems.  If these instructions don't fit your
2402system, particularly if you do not have an `aliases' file, ask your
2403mail administrator for advice.
2404
2405   The following aliases should be placed in the file `/etc/aliases'.
2406Yoy may need `root' access to add these aliases:
2407
2408   * Create an alias for the GNATS administrator.  This address should
2409     point to the address of the person in charge of administrating
2410     GNATS:
2411
2412          gnats-admin:  ADDRESS
2413
2414   * Create an alias to redirect incoming Problem Reports.  This alias
2415     should redirect incoming mail via a "pipe" to the program
2416     `queue-pr -q'.  For example, if Problem Reports coming to your
2417     site are to arrive at the address `bugs@your.company.com', create
2418     an alias to the effect of:
2419
2420          bugs:  "| EXEC-PREFIX/libexec/gnats/queue-pr -q"
2421
2422     This places incoming Problem Reports in the `GNATS-QUEUE'
2423     directory of your database.  Remember to fill in the full path of
2424     the `queue-pr' command as appropriate for your installation.
2425
2426   * You may also wish to forward a copy of each incoming Problem
2427     Report to a log.  This can be accomplished with something like:
2428
2429          bug-q: "| EXEC-PREFIX/libexec/gnats/queue-pr -q"
2430          bug-log:  /some/path/bugs.log
2431          bugs:      bug-q, bug-log
2432
2433     This configuration archives incoming Problem Reports in the file
2434     `bug.log', and also feeds them to the program `queue-pr'.
2435     (Remember, `bug.log' needs to be world-writable, and should be
2436     pruned regularly; *note GNATS Administration: Management.)  In
2437     order for the log file to protect fully against data loss in case
2438     a disk runs full, try to place it on a different disk volume than
2439     the GNATS database.
2440
2441   * If you want your users to be able to query the database by mail,
2442     use the following alias:
2443
2444          query-pr: "| EXEC-PREFIX/libexec/gnats/mail-query"
2445
2446     The `mail-query' program uses `--restricted' to search on the
2447     database, and by default only searches for PRs that aren't closed
2448     (*note Querying the database: query-pr.).
2449
2450
2451
2452File: gnats.info,  Node: Installing the daemon,  Next: Installing tools,  Prev: Aliases,  Up: Installation
2453
24543.6 Installing the daemon
2455=========================
2456
2457By default, the daemon and clients are set to use port 1529.  Add the
2458line
2459
2460     support		1529/tcp			# GNATS
2461
2462to your `/etc/services' file.  If you want a different service name,
2463configure GNATS with
2464
2465     --with-gnats-service=SERVICENAME
2466
2467   In your `inetd.conf' file, add the line
2468
2469     support	stream	tcp	nowait	gnats	/usr/local/libexec/gnats/gnatsd gnatsd
2470
2471adjusting the path accordingly if you used configure options to make
2472changes to the defaults.  To make `inetd' start spawning the GNATS
2473daemon when connected on that port, send it a hangup signal (`HUP').
2474
2475   Some operating systems have replaced `inetd' with the more modern
2476`xinetd'. Instead of editing `inetd.conf', you should create the file
2477`/etc/xinetd.d/support', containing something like the following:
2478
2479     service support
2480     {
2481        disable = no
2482        socket_type = stream
2483        protocol = tcp
2484        wait = no
2485        user = gnats
2486        server = /usr/local/libexec/gnats/gnatsd
2487     }
2488
2489   If you specified a different service name when running `configure',
2490you need to give the file the same name as the service name, and you
2491need to adjust the `service' line above.  If the `--prefix' or
2492`--exec-prefix' options were passed to `configure', adjust the `server'
2493line above, and if you used the `--with-gnats-user' option, adjust the
2494`user' line.
2495
2496   Then restart `xinetd' to make the new configuration current.
2497
2498   If you use an Internet superserver different from `inetd' or
2499`xinetd', please refer to its documentation for information how to
2500configure it.
2501
2502   At this point, you will probably want to set the access permissions
2503of the different hosts that are going to be accessing your databases.
2504The access permissions can currently only be set on a global scale
2505(that is, across all the databases on a GNATS server).  The location
2506and name of the global host access configuration file can be set during
2507the pre-build configure as shown above, but by default the file is
2508`/usr/local/etc/gnats/gnatsd_host.access'.  It lists the hosts allowed
2509to access your server, and what their default access levels are.  Each
2510line in the file denotes one server, or one part of a network domain.
2511There are three fields on each line, but only two are currently used.
2512To grant all hosts from the domain SITE.COM edit access, use this line:
2513
2514   SITE.COM:EDIT
2515
2516If you run a GNATS web interface or similar tool on the same machine as
2517the server is running on, you probably want to grant LOCALHOST edit
2518access:
2519
2520   LOCALHOST:EDIT
2521
2522   If you are using Kerberos, the `gnatsd_host.access' file shows the
2523sites that don't require Kerberos authentication.
2524
2525   The third field might in the future be used for things like
2526controlling what categories, submitter-id's PRs, etc., can be accessed
2527from that site.  Access attempts that are denied are logged to the
2528syslog messages file (`/var/adm/messages' on many systems).
2529
2530
2531File: gnats.info,  Node: Installing tools,  Next: Upgrading,  Prev: Installing the daemon,  Up: Installation
2532
25333.7 Installing the user tools
2534=============================
2535
2536When you install the GNATS utilities, the user tools `send-pr',
2537`query-pr' and `edit-pr' are installed on the server machine.  If your
2538machine is part of a network, however, you may wish to install the user
2539tools on each machine in the network so that responsible parties on
2540those machines can submit new Problem Reports, query the database, and
2541edit existing PRs.  In the following discussion, machines with the
2542GNATS user tools installed are referred to as "client" machines.  In
2543general, there are three distinct types of client that a GNATS server
2544may have to cater for:
2545
2546   - Machines that are on the same local network as the GNATS server,
2547     i.e. machines that are under the same administrative control.
2548
2549   - Machines on the general, open Internet.
2550
2551   - Machines behind firewalls etc. which deny direct access over the
2552     network to the GNATS server.
2553
2554   Each type of client requires a different approach when it comes to
2555providing access.
2556
25573.7.1 User tools on a local network
2558-----------------------------------
2559
2560If all the machines involved reside on the same local network as the
2561GNATS server, you can simply share out the directories on the server
2562that contain the user tools, by default `/usr/local/bin' and the
2563directory which contains the `send-pr.conf' configuration file (*note
2564The send-pr.conf configuration file: send-pr.conf file.), by default
2565`/usr/local/etc/gnats'.  If you have a heterogeneous environment, i.e.
2566hosts running different operating systems, you need to create several
2567shared GNATS installations, one for each platform.  The `send-pr.conf'
2568file is platform-independent, though.
2569
2570   In order to submit a new PR, `send-pr' would then be invoked as
2571follows on the client machines:
2572
2573     send-pr -d HOSTNAME:PORT:DATABASE:USERNAME:PASSWORD
2574
2575   Or by first setting the environment variable `GNATSDB' as follows
2576(the exact syntax will vary depending on what shell you use):
2577
2578     export GNATSDB=HOSTNAME:PORT:DATABASE:USERNAME:PASSWORD
2579
2580   Then, `send-pr' can simply be invoked without any options.
2581
2582   The other tools, `query-pr' and `edit-pr', work in similar ways,
2583honoring the `-d' option as well as the `GNATSDB' environment variable.
2584*Note GNATS user tools::.
2585
25863.7.2 User tools for remote users
2587---------------------------------
2588
2589When client machines reside on the general Internet, both security and
2590practical considerations may make it impossible to provide a shared
2591installation of the GNATS tools.  In this case, you may choose to only
2592provide access through a web interface such as Gnatsweb.  For clients
2593that need the GNATS tools, the following needs to be carried out on the
2594remote machines:
2595
2596  1. Configure and build GNATS on the client machine
2597
2598  2. Configure `send-pr' on the client machine
2599
2600   You should unpack the distribution and run `configure' on the client
2601machine in the same way as described in *Note Configuring and compiling
2602the software: Configure and make.  Note, however, that you do not need
2603to create a `gnats' user on the client and you should not use the `make
2604all info' command to build.  Instead, issue the following commands from
2605the top level directory of the source distribution:
2606
2607     cd gnats
2608     make install-tools
2609     cd ../send-pr
2610     make all install
2611
2612   This builds and installs the `send-pr', `query-pr' and `edit-pr'
2613tools on the client machine.  You should now configure `send-pr' by
2614editing the `send-pr.conf' file (*note The send-pr.conf configuration
2615file: send-pr.conf file.)
2616
2617   Users on the client machine can now either use the send-pr syntax or
2618the `GNATSDB'environment variable described in the previous section.
2619
2620   For sites that need to submit Problem Reports by having send-pr send
2621e-mail instead of speaking directly over the network to the GNATS
2622server, you need to create a problem report template on the GNATS
2623server and have that template copied to a suitable location on the
2624client machine (any filename and any location will do, as long as
2625`send-pr' on the client machine can read the file).  On the GNATS
2626server, use the command
2627
2628     send-pr -p > `filename'
2629
2630   The file `filename' now contains a PR template for your database.
2631Copy this file to the client.  Then edit the `send-pr.conf' file that
2632you created on the client, set the `TEMPLATE' variable to point to the
2633template file (*note The send-pr.conf configuration file: send-pr.conf
2634file.) and make sure that the `MAILPROG' and `MAILADDR' varables in
2635`send-pr.conf' are correctly set.  You should now have a working remote
2636tool installation.
2637
2638   For clients that have no direct network access to your GNATS server,
2639such as those that are located behind strict firewalls, you either need
2640to set up a web interface such as Gnatsweb (provided that the firewall
2641lets web traffic through) or use the procedure above which sets up
2642`send-pr' to submit Problem Reports by e-mail.  In order to query PRs,
2643users on the remote machines will then have to use the the e-mail
2644functionality of `query-pr' (*note Invoking query-pr::.  Editing PRs by
2645e-mail is not possible, so clients in this group who need edit access
2646have to get access through a web interface if possible.
2647
2648   Note that when `send-pr' is set up to work over e-mail, the
2649`GNATSDB' environment variable and the `-d' command line option have no
2650effect since `send-pr' is tied to a specific database by way of the
2651value of `MAILADDR' in the `send-pr.conf' file.
2652
2653
2654File: gnats.info,  Node: Upgrading,  Prev: Installing tools,  Up: Installation
2655
26563.8 Upgrading from older versions
2657=================================
2658
2659The following procedure covers an upgrade from all GNATS 3 versions
2660newer than 3.108.  If your installation is an older 3.10x version, or
2661even the ancient 3.2 version, you need to review the `UPGRADING.old'
2662file in the GNATS distribution before carrying out the steps detailed
2663here.
2664
26653.8.1 Overview
2666--------------
2667
2668Although almost all of the GNATS internals have been redesigned and
2669rewritten for GNATS 4, little has changed in the format and structure
2670of the database data.  The only change that needs to be taken into
2671account when upgrading is the fact that the database index format is
2672binary in a default installation of GNATS 4.  Thus, you will need to
2673regenerate your database index by using the `gen-index' tool.  In
2674addition, if your old GNATS installation was so-called "release-based",
2675you need to make some simple modifications to the database setup file
2676`dbconfig'.  See below for details.
2677
2678   Apart from building and installing new binaries, the major changes
2679which impinge on the upgrade procedure are all on the configuration
2680side.  The main database configuration file, `dbconfig', is far more
2681complex and powerful than the old `config' file, and while the
2682installation process creates a sensible set of default values which are
2683similar to GNATS 3.11x's defaults, you still need to migrate any
2684changes you may have made to your own local configuration.
2685
2686   Another aspect which needs consideration are remote submitter sites.
2687Such sites either need to be instructed to upgrade their locally
2688installed copies of the GNATS user tools (`send-pr', `edit-pr' and
2689`query-pr'), or they should be given access through interfaces such as
2690Gnatsweb.
2691
2692   Since the GNATS network daemon has been completely reworked, with an
2693entirely new command set, all network-based interfaces, such as
2694Gnatsweb and TkGnats need to be upgraded to versions that support GNATS
26954.  The `contrib' directory of this distribution contains some
2696third-party interfaces, and the `README' file contains pointers to
2697where you can obtain the newest versions of these tools.
2698
2699   This document only deals with upgrading GNATS itself.  Third-party
2700tools should have separate upgrading instructions in their
2701distributions.
2702
27033.8.2 Upgrading
2704---------------
2705
2706  1. Before you begin, make a backup of your entire GNATS database
2707     directory hierarchy, the GNATS executables directory and the GNATS
2708     user tools (`send-pr', `query-pr' etc.)  The locations of these
2709     may vary, but in a default GNATS 3 installation, the database(s)
2710     reside under `/usr/local/share/gnats', the executables are located
2711     in `/usr/local/libexec/gnats' and the user tools reside in
2712     `/usr/local/bin'.
2713
2714  2. (optional) In order to avoid confusing your users, you may want to
2715     remove the old GNATS 3 executables and tools, escpecially if you
2716     plan to install GNATS 4 in a different location than version 3.
2717
2718  3. Build and install GNATS 4.  *Note Installing GNATS: Installation.
2719     It is recommended that you use the `--with-gnats-default-db'
2720     option when running `configure', in order to set the default
2721     database to be one of your already existing GNATS 3 databases.
2722
2723  4. Edit the GNATS `databases' file and add entries for all your old
2724     GNATS 3 databases.  In a default GNATS 4 installation the file is
2725     in `/usr/local/etc/gnats'.  *Note The `databases' file: databases
2726     file.
2727
2728  5. In GNATS 3, the file `gnatsd.conf' specifies minimum access levels
2729     for the different hosts accessing the GNATS daemon, `gnatsd'.
2730     There is one `gnatsd.conf' for each database.  In GNATS 4, these
2731     files have been replaced by a single file named
2732     `gnatsd.host_access' which contains settings that apply across all
2733     the databases on the server.  This file is located in the same
2734     directory as the `databases' file.  You need to combine the host
2735     access settings from all your GNATS 3 databases and add them to the
2736     `gnatsd.host_access' file.  Note that you are no longer able to
2737     control host access on a per-database basis.  Optionally, you may
2738     delete the old `gnatsd.conf' files.  *Note Controlling access to
2739     GNATS databases: Access Control.
2740
2741  6. Next, you need to migrate the settings in the old `config' files of
2742     your databases to corresponding `dbconfig' files.  The database you
2743     specified with the `--with-gnats-default-db' configure option got
2744     a default `dbconfig' installed.  This default file contains field
2745     definitions etc. which makes this version of GNATS behave almost
2746     exactly like older versions.  Copy this default file to the
2747     `gnats-adm' directories of any other GNATS databases that you may
2748     have on your host before you proceed to migrate your old
2749     configuration settings.
2750
2751     The following is a list of the configuration directives that may be
2752     present in a `config' file and their counterparts (if any) in
2753     GNATS 4.
2754
2755    GNATS_ADDR
2756          This setting has no counterpart in GNATS 4, since GNATS no
2757          longer needs to know its own mail address.
2758
2759    GNATS_ADMIN
2760          This setting is now set in the `responsible' file in the
2761          `gnats-adm' directory of your database(s).
2762
2763    GNATS_SITE
2764          GNATS 4 has no concept of a named `site', so this directive is
2765          obsolete.
2766
2767    SUBMITTER
2768          Obsolete, since it relates to GNATS_SITE.
2769
2770    DEFAULT_RELEASE
2771    DEFAULT_ORGANIZATION
2772          The GNATS 4 `dbconfig' file has separate configuration
2773          sections for each defined field.  Field defaults are set with
2774          the `default' keyword in these sections.  *Note The
2775          `dbconfig' file: dbconfig file.
2776
2777    NOTIFY
2778          Controlled by the `notify-about-expired-prs' setting in the
2779          `dbconfig' file.
2780
2781    ACKNOWLEDGE
2782          Controlled by the `send-submitter-ack' setting in the
2783          `dbconfig' file.
2784
2785    DEFAULT_SUBMITTER
2786          The default submitter is now always the first entry in the
2787          `submitters' file of your database.
2788
2789    KEEP_RECEIVED_HEADERS
2790          Controlled by the `keep-all-received-headers' setting in the
2791          `dbconfig' file.
2792
2793    DEBUG_MODE
2794          Controlled by the `debug-mode' setting in the `dbconfig' file.
2795
2796    BDAY_START
2797    BDAY_END
2798    BWEEK_START
2799    BWEEK_END
2800          Controlled by the settings `business-day-hours' and
2801          `business-week-days' in the `dbconfig' file.
2802
2803    DEFINE_CATEGORY
2804          The default category for PRs that arrive without one is now
2805          the first category listed in the `categories' file of your
2806          database.
2807
2808     After your are done migrating the settings, you may optionally
2809     delete the old `config' files.  Since there are many more
2810     configuration settings available in the GNATS 4 `dbconfig' file,
2811     you should take some time to review them all before proceeding.
2812     *Note The `dbconfig' file: dbconfig file.
2813
2814     If your old GNATS installations was release-based, i.e. it included
2815     the fields Quarter, Keywords and Date-Required, you need to define
2816     those fields in the `dbconfig' file by following the instructions
2817     in *Note Supporting old GNATS "release-based" fields:
2818     release-based support.
2819
2820  7. The file `gnatsd.access' has been renamed to `gnatsd.user_access'.
2821     Furthermore, GNATS 4 uses a different password format in the
2822     `gnatsd.user_access' file than older versions, since it supports
2823     `crypt()' and MD5 passwords (*note Controlling access to GNATS
2824     databases: Access Control.).  You need to translate your old
2825     `gnatsd.user_access' files to the new format by using the
2826     `gnats-pwconv' tool which was installed in the
2827     `EXEC-PREFIX/libexec/gnats' directory, typically
2828     `/usr/local/libexec/gnats'.  *Note Managing user passwords:
2829     gnats-pwconv.
2830
2831  8. The final step involves regenerating the indexes of your
2832     databases.  For this, log in as the user `gnats'.  Then run the
2833     `gen-index' command for each of your databases.  See *Note
2834     Administrative Utilities: Admin utils. for details on how to use
2835     `gen-index'.
2836
2837  9. Sit back and enjoy your new GNATS 4 setup...
2838
2839
2840File: gnats.info,  Node: Management,  Next: Locations,  Prev: Installation,  Up: Top
2841
28424 GNATS Administration
2843**********************
2844
2845In daily usage, GNATS is self-maintaining.  However, there are various
2846administrative duties which need to be performed periodically.  Also,
2847requirements may change with time, so it may be necessary to make
2848changes to the GNATS configuration at some point:
2849
2850_emptying the `pending' directory_
2851     If a Problem Report arrives with a `Category' value that is
2852     unrecognized by the `categories' file, or if that field is missing,
2853     GNATS places the PR in the `pending' directory (*note Where GNATS
2854     lives: Locations.).  PRs submitted in free-form by email will
2855     always be filed in the `pending' directory.  If so configured,
2856     GNATS sends a notice to the `gnats-admin' and to the party
2857     responsible for that submitter (as listed in the `submitters'
2858     file) when this occurs.
2859
2860     To have these "categoryless" PRs filed correctly, you can then use
2861     a GNATS tool such as `edit-pr' to set the correct category of each
2862     PR in the `pending' directory.
2863
2864     In order to protect yourself from problems caused by full disks,
2865     you should arrange to have all mail that is sent to the GNATS
2866     database copied to a log file (*Note Setting up mail aliases:
2867     Aliases.).  Then, should you run out of disk space, and an empty
2868     file ends up in the database's `pending' directory, you need only
2869     look in the log file, which should still contain the full message
2870     that was submitted.
2871
2872_adding another database_
2873     GNATS supports multiple databases.  If you find at some point that
2874     you need to add another database to your server, the `mkdb' tool
2875     does most of the work for you.  *Note Adding another database:
2876     mkdb.
2877
2878_adding new categories_
2879     Most installations of GNATS will only require you to add a new line
2880     to the `categories' file.  The category directory will then be
2881     created automatically as needed.  However, if automatic directory
2882     creation has been switched off in the `dbconfig' file (*note The
2883     `dbconfig' file: dbconfig file.), you need to use the `mkcat'
2884     program.
2885
2886_removing categories_
2887     To remove a category, you need to make sure the relevant
2888     subdirectory is empty (in other words, make sure no PRs exist for
2889     the category you wish to remove).  You can then remove the
2890     category listing from the `categories' file, and invoke
2891
2892          rmcat CATEGORY...
2893
2894     to remove CATEGORY (any number of categories may be specified on
2895     the command line to `rmcat', so long as they abide by the above
2896     constraints).
2897
2898_adding and removing maintainers_
2899     Edit the `responsible' file to add a new maintainer or to remove an
2900     existing maintainer.  *Note The `responsible' file: responsible
2901     file.
2902
2903_building a new index_
2904     If your index becomes corrupted, or if you wish to generate a new
2905     one for some reason, use the program `gen-index' (*note
2906     Regenerating the index: gen-index.).
2907
2908_pruning log files_
2909     Log files often grow to unfathomable proportions.  As with
2910     gardening, it is best to prune these as they grow, lest they take
2911     over your disk and leave you with no room to gather more Problem
2912     Reports.  If you keep log files, be sure to keep an eye on them.
2913     (*Note Setting up mail aliases: Aliases.)
2914
2915_BACKING UP YOUR DATA_
2916     Any database is only useful if its data remains uncorrupted and
2917     safe.  Performing periodic backups ensures that problems like disk
2918     crashes and data corruption are reversible.
2919
2920
2921   *Note Where GNATS lives: Locations.
2922
2923* Menu:
2924
2925* GNATS configuration::   Overview of GNATS configuration
2926* databases file::        The databases file
2927* dbconfig file::         The dbconfig file
2928* Other config files::    Configuration files
2929* send-pr.conf file::     The send-pr.conf file
2930* Admin files::           Administrative data files
2931* Admin utils::           Administrative utilities
2932* Internal utils::        Internal utilities
2933
2934
2935File: gnats.info,  Node: GNATS configuration,  Next: databases file,  Up: Management
2936
29374.1 Overview of GNATS configuration
2938===================================
2939
2940*Note Where GNATS lives: Locations.
2941
2942   GNATS has two, well, actually three, different kinds of
2943configuration file.  The "site-wide" configuration files determine
2944overall behaviour across all the databases on your machine, while the
2945"database-specific" configuration files determine how GNATS behaves
2946when dealing with a specific database.  In addition, there is a single
2947file that needs to be set up for the `send-pr' tool to work properly.
2948These files can be edited at any time -- the next time a GNATS tool is
2949invoked, the new parameters will take effect.
2950
2951   These are the site-wide configuration files used by GNATS:
2952
2953`databases'
2954     Specifies database names and their associated parameters, such as
2955     in which directory they are located.  This file is used by the
2956     GNATS clients to determine the location of a database referred to
2957     by name.  *Note The `databases' file: databases file.
2958
2959`defaults'
2960     This directory contains the set of default per-database
2961     configuration files used when a new database is created with
2962     `mkdb'.
2963
2964`gnatsd.host_access'
2965     Controls access levels for the different machines that will do
2966     lookups in the databases on this machine.  *Note GNATS access
2967     control: Access Control.
2968
2969`gnatsd.user_access'
2970     Controls user access levels for the databases on this server. The
2971     settings apply to all databases (there is also a database-specific
2972     user access level file).  *Note GNATS access control: Access
2973     Control.
2974
2975The database-specific configuration is determined by the following
2976files in the `gnats-adm' subdirectory of the database directory.
2977
2978`dbconfig'
2979     Controls most aspects of how GNATS behaves when dealing with your
2980     database.  *Note The `dbconfig' file: dbconfig file.
2981
2982`categories'
2983     The list of categories that GNATS accepts as valid for the
2984     `Category' field, and the maintainers responsible for each
2985     category.  Update this file whenever you have a new category, or
2986     whenever a category is no longer valid.  You must also update this
2987     file whenever responsibility for a category changes, or if a
2988     maintainer is no longer valid.  *Note The `categories' file:
2989     categories file.
2990
2991`responsible'
2992     An alias list mapping names to their associated mailing addresses.
2993     The names in this list can have multiple email addresses
2994     associated with them.  If a responsible user does not show up in
2995     this list, they are assumed to be a user local to the system.
2996     This list is not associated with just the responsible user field;
2997     all email addresses are mapped through this file whenever mail is
2998     sent from GNATS.  *Note The `responsible' file: responsible file.
2999
3000`submitters'
3001     Lists sites from whom GNATS accepts Problem Reports.  The existence
3002     of this file is mandatory, although the feature it provides is
3003     not; see *Note The `submitters' file: submitters file.
3004
3005`addresses'
3006     Mappings between submitter IDs and submitters' e-mail addresses.
3007     Use of this file is optional.  If you get Problem reports where the
3008     `Submitter' field is not filled in, GNATS will use entries in this
3009     file to try to derive the submitter ID from the e-mail headers.
3010     *Note The `addresses' file: addresses file.
3011
3012`states'
3013     Lists the possible states for Problem Reports, typically ranging
3014     from "open" to "closed".  *Note The `states' file: addresses file.
3015
3016`classes'
3017     Lists the possible classes of Problem Report.  This provides an
3018     easy way to have "subcategories", for example by setting up
3019     classes such as `sw-bug', `doc-bug', `change-request' etc.  *Note
3020     The `classes' file: classes file.
3021
3022`gnatsd.user_access'
3023     Specify the access levels for different users to your database.
3024     *Note GNATS access control: Access Control.
3025
3026
3027   The last file in this menagerie is the `send-pr' configuration file
3028`send-pr.conf'.  This file contains some defaults that need to be known
3029in order for `send-pr' to work.  The file needs to be present on all
3030hosts where `send-pr' is to be used.  *Note the `send-pr.conf' file:
3031send-pr.conf file.
3032
3033
3034File: gnats.info,  Node: databases file,  Next: dbconfig file,  Prev: GNATS configuration,  Up: Management
3035
30364.2 The `databases' file
3037========================
3038
3039The `databases' configuration file is a site-wide configuration file
3040containing the list of GNATS databases that are available either on the
3041host itself or remotely over the network, together with some parameters
3042associated with each database.
3043
3044   The file contains one line for each database. For databases located
3045on the host itself, each line consists of three fields separated by
3046colons:
3047
3048   DATABASE NAME:SHORT DESCRIPTION OF DATABASE:PATH/TO/DATABASE
3049
3050   The first field is the database name.  This is the name used to
3051identify the database when invoking programs such as `query-pr' or
3052`send-pr', either by using the `--database' option of the program or by
3053setting the GNATSDB environment variable to the name of the database.
3054The second field is a short human-readable description of the database
3055contents, and the final field is the directory where the database
3056contents are kept.
3057
3058   For a database that is located across a network, but which should be
3059accessible from this host, the entry for the database should look like
3060this:
3061
3062   DATABASE NAME:SHORT DESCRIPTION OF DATABASE::HOSTNAME:PORT
3063
3064   The first two fields are the same as for local databases, the third
3065field is empty (notice the two adjacent `:' symbols, indicating an
3066empty field), the fourth field is the hostname of the remote GNATS
3067server, and the fifth field is the port number that the remote GNATS is
3068running on.
3069
3070   If GNATS was built with default options, the `databases' file will
3071be located in the `/usr/local/etc/gnats' directory.  However, if the
3072option `--with-gnats-dblist-file' was used during building of GNATS,
3073the `databases' file has the name and location given to this option.  A
3074sample `databases' file is installed together with GNATS.
3075
3076   Note that if you add a new local database, you must create its data
3077directory, including appropriate subdirectories and administrative
3078files.  This is best done using the `mkdb' tool, *Note mkdb::.
3079
3080
3081File: gnats.info,  Node: dbconfig file,  Next: Other config files,  Prev: databases file,  Up: Management
3082
30834.3 The `dbconfig' file
3084=======================
3085
3086The `dbconfig' configuration file controls the configuration of a GNATS
3087database.  Each database has its own individual copy of this file,
3088which is located in the `gnats-adm' subdirectory of the database.
3089
3090   The file consists of standard plain text.  Whitespace is completely
3091optional and is ignored. Sets of braces `@' are used to delimit the
3092different sections, and all non-keyword values must be surrounded with
3093double quotes.  The values in `dbconfig' can be changed at any time;
3094the new values take effect for all subsequent iterations of GNATS tools.
3095
3096   The `dbconfig' file contains 6 major sections, which must appear in
3097the following order:
3098
3099   * Overall database configuration
3100
3101   * Individual field configuration
3102
3103   * Named query definitions
3104
3105   * Audit-trail and outgoing email formats
3106
3107   * Index file description
3108
3109   * Initial Problem Report input fields
3110
3111   The different sections are described below.  While reading the
3112following sections, it will be useful to refer to the sample `dbconfig'
3113file which is installed when a new database is initialized with the
3114`mkdb' tool.  In fact, the sample file provides a configuration that
3115should be usable for a great range of sites, since it reproduces the
3116behaviour of the older, less customizable 3.x versions of GNATS.
3117
3118* Menu:
3119
3120* Overall database configuration:: Overall database configuration.
3121* Individual field configuration:: Individual field configuration.
3122* Field datatypes::                Field datatypes.
3123* Edit controls::                  Trigger on certain edit actions.
3124* Named query definitions::        Define and name standard queries.
3125* Audit-trail formats::            Specify formatting of the audit-trail.
3126* Outgoing email formats::         Specify contents and formatting of
3127                                   messages sent out by GNATS.
3128* Index file description::         Specify the general format and
3129                                   contents of the database index.
3130* Initial PR input fields::        Which fields should be present on
3131                                   initial PR entry.
3132
3133
3134File: gnats.info,  Node: Overall database configuration,  Next: Individual field configuration,  Up: dbconfig file
3135
31364.3.1 Overall database configuration
3137------------------------------------
3138
3139The overall database options are controlled by settings in the
3140`database-info' section of the `dbconfig' file.  The following is the
3141general format of this section:
3142
3143     database-info {
3144       [options]
3145     }
3146
3147   The following options and values may be used in the `database-info'
3148section:
3149
3150`debug-mode  TRUE | FALSE'
3151     If set to `true', the database is placed into debug mode.  This
3152     causes all outgoing email to be sent to the "gnats-admin" user
3153     listed in the `responsible' file of the database.  The default
3154     value is `false'.
3155
3156`keep-all-received-headers  TRUE | FALSE'
3157     If set to `true', all of the Received: headers for PRs submitted
3158     via email are kept in the PR.  Otherwise, only the first one is
3159     kept.  The default value is `false'.
3160
3161`notify-about-expired-prs  TRUE | FALSE'
3162     If set to `true', notification email about expired PRs is sent via
3163     the `at-pr' command.  Otherwise, required times for PR fixes are
3164     not used.  The default value is `false'.
3165
3166`send-submitter-ack  TRUE | FALSE'
3167     When new PRs are submitted to the database, an acknowledgment
3168     email will be sent to the submitter of send-submitter-ack is set
3169     to `true'.  This is in addition to the normal notification mail to
3170     the person(s) responsible for the new PR.  The default value is
3171     `false'.
3172
3173`libexecdir  "DIRECTORY"'
3174     Specifies the directory where the GNATS administrative executables
3175     are located.  In particular, `at-pr' and `mail-pr' are invoked
3176     from this directory.  The default value is the empty string, which
3177     is unlikely to be useful.
3178
3179`business-day-hours  DAY-START - DAY-END'
3180     Used to specify the hours that define a business day.  The values
3181     are inclusive and should be given in 24-hour format, with a dash
3182     separating them.  GNATS uses these values to determine whether the
3183     required completion time for a PR has passed.  The default values
3184     are 8 for `day-start' and 17 for `day-end'.
3185
3186`business-week-days  WEEK-START - WEEK-END'
3187     Specifies the start and ending days of the business week, where 0
3188     is Sunday, 1 is Monday, etc.  The days are inclusive, and the
3189     values should be given with a dash separating them.  GNATS uses
3190     these values to determine whether the required completion time for
3191     a PR has passed.  The default values are 1 for `week-start' and 5
3192     for `week-end'.
3193
3194`create-category-dirs  TRUE | FALSE'
3195     If set to `true', database directories for categories are
3196     automatically created as needed.  Otherwise, they must be created
3197     manually (usually with the `mkcat' script).  It is recommended that
3198     the default value of `true' be kept.
3199
3200`category-dir-perms  MODE'
3201     Standard octal mode-specification specifying the permissions to be
3202     set on auto-created category directories. Default is `0750',
3203     yielding user read, write and execute, and group read and execute.
3204     Note that if you have local users on the GNATS server itself,
3205     running for instance `query-pr', you may need to change the
3206     permissions to `0755'.
3207
3208
3209File: gnats.info,  Node: Individual field configuration,  Next: Field datatypes,  Prev: Overall database configuration,  Up: dbconfig file
3210
32114.3.2 Individual field configuration
3212------------------------------------
3213
3214Each type of field in a PR must be described with a `field' section in
3215the `dbconfig' file.  These sections have the following general
3216structure:
3217
3218     field "fieldname" {
3219       description "string"
3220       [ field-options ... ]
3221       datatype [ datatype-options ... ]
3222       [ on-change { edit-options ... } ]
3223     }
3224
3225   `fieldname' is used as the field header in the PR.  The characters
3226`>' and `:' are used internally as field markers by GNATS, so they must
3227not be used in fieldnames.
3228
3229   The order in which the `field' sections appear in the `dbconfig'
3230file determines the order in which they appear in the PR text.  There
3231is no required order, unlike previous versions of GNATS -- the
3232Unformatted field and multitext fields may appear anywhere in the PR.
3233
3234   The following `field-options' may be present within a `field'
3235section:
3236
3237`builtin-name  "NAME"'
3238     Indicates that this field corresponds to one of the GNATS built-in
3239     fields.
3240
3241     GNATS has several fields which are required to be present in a PR,
3242     and this option is used to map their external descriptions to their
3243     internal usage.  The external field names are:
3244
3245    `arrival-date'
3246          The arrival date of the PR
3247
3248    `audit-trail'
3249          The audit-trail recording changes to the PR
3250
3251    `category'
3252          The category that the PR falls into
3253
3254    `closed-date'
3255          The date that the PR was closed
3256
3257    `confidential'
3258          If set to `yes', the PR is confidential
3259
3260    `description'
3261          A description of the problem
3262
3263    `last-modified'
3264          The date the PR was last modified
3265
3266    `number'
3267          The PR's unique numeric identifier
3268
3269    `originator'
3270          The originator of the PR
3271
3272    `priority'
3273          Priority of the PR
3274
3275    `responsible'
3276          The person responsible for handling the PR
3277
3278    `severity'
3279          Severity of the problem described by the PR
3280
3281    `state'
3282          The current state of the PR
3283
3284    `submitter-id'
3285          The user that submitted the PR
3286
3287    `synopsis'
3288          The one-line description of the PR
3289
3290    `unformatted'
3291          PR text which cannot be parsed and associated with other
3292          fields.
3293
3294     For these built-in fields, a matching field description _must_
3295     appear in the `dbconfig' file. Otherwise, the configuration will
3296     be considered invalid, and errors will be generated from the GNATS
3297     clients and `gnatsd'.  We also recommend that you leave the actual
3298     fieldnames of these fields at their default values (i.e.
3299     capitalized versions of their built-in names), since some clients
3300     may depend on these names.
3301
3302`description  "DESCRIPTION TEXT"'
3303     A one-line human-readable description of the field.  Clients can
3304     use this string to describe the field in a help dialog.  The
3305     string is returned from the FDSC command in gnatsd and is also
3306     available via the `--field-description' option in `query-pr'.
3307
3308     This entry must be present in the field description, and there is
3309     no default value.
3310
3311`query-default  EXACT-REGEXP | INEXACT-REGEXP'
3312     Used to specify the default type of searches performed on this
3313     field.  This is used when the `^' search operator appears in a
3314     query, and is also used for queries in `query-pr' that use the old
3315     `--field' query options.
3316
3317     If the option is not given, the default search is `exact-regexp'.
3318
3319`textsearch'
3320     If this option is present, the field will be searched when the user
3321     performs a `--text' search from `query-pr'.  The field is also
3322     flagged as a `textsearch' field in the set of field flags returned
3323     by the `FIELDFLAGS' command in gnatsd.
3324
3325     By default, fields are not marked as `textsearch' fields.
3326
3327`read-only'
3328     When this option is present, the field contents may not be edited
3329     -- they must be set when the PR is initially created.  In general,
3330     this should only be used for fields that are given as internal
3331     values rather than fields supplied by the user.
3332
3333     By default, editing is allowed.
3334
3335
3336File: gnats.info,  Node: Field datatypes,  Next: Edit controls,  Prev: Individual field configuration,  Up: dbconfig file
3337
33384.3.3 Field datatypes
3339---------------------
3340
3341Each field description has to contain a datatype declaration which
3342describes what data are to be store in the field.  The general format
3343for such a declaration is
3344
3345`datatype  [ options ... ]'
3346
3347   The available datatypes are:
3348
3349`text  [ matching { "regexp" [ "regexp" ... ] } ]'
3350     The `text' datatype is the most commonly used type; it is a
3351     one-line text string.
3352
3353     If the `matching' qualifier is present, the data in the field must
3354     match at least one of the specified regexps.  This provides an
3355     easy and flexible way to limit what text is allowed in a field.
3356     If no `matching' qualifier is present, no restriction is placed on
3357     what values may appear in the field.
3358
3359`multitext  [ { default "string" } ]'
3360     The field can contain multiple lines of text.
3361
3362     If the `default' option is present, the field will default to the
3363     specified `string' if the field is not given a value when the PR is
3364     initially created.  Otherwise, the field will be left empty.
3365
3366`enum  {'
3367`  values {'
3368`    "string" [ "string" ... ]'
3369`  }'
3370`  [ default "string" ]'
3371`}'
3372     Defines an enumerated field, where the values in the PR field must
3373     match an entry from a list of specified values.  The list of
3374     allowed values is given with the `values' option. The `values'
3375     option is required for an enumerated field.
3376
3377     If a `default' option is present, it is used to determine the
3378     initial value of the field if no entry for the field appears in an
3379     initial OR (or if the value in the initial PR is not one of the
3380     acceptable values).  However, the value in the `default' statement
3381     is not required to be one of the accepted values; this can be used
3382     to allow the field to be initially empty, for example.
3383
3384     If no `default' option is specified, the default value for the
3385     field is the first value in the `values' section.
3386
3387`multienum  {'
3388`  values {'
3389`    "string" [ "string" ... ]'
3390`  }'
3391`  [ separators "string" ]'
3392`  [ default "string" ]'
3393`}'
3394     The `multienum' datatype is similar to the `enum' datatype, except
3395     that the field can contain multiple values, separated by one or
3396     more characters from the `separators' list.  If no `separators'
3397     option is present, the default separators are space (` ') and colon
3398     (`:').
3399
3400     The values in the `default' string for this field type should be
3401     separated by one of the defined separators.  An example clarifies
3402     this.  If we have a field named `ingredients' where the default
3403     values should be `sugar', `flour' and `baking powder' and the
3404     separator is a colon `:', the following sets these defaults:
3405
3406          default "sugar:flour:baking powder"
3407
3408`enumerated-in-file {'
3409`  path "filename"'
3410`  fields {'
3411`    "name" [ "name" ... ]'
3412`  } key "name"'
3413`  [ allow-any-value ]'
3414`}'
3415     The `enumerated-in-file' type is used to describe an enumerated
3416     field with an associated "administrative file" which lists the
3417     legal values for the field, and may optionally contain additional
3418     fields that can be examined by query clients or used for other
3419     internal purposes.  It is similar to the `enum' datatype, except
3420     that the list of legal values is stored in a separate file.  An
3421     example of this kind of field is the built-in Category field with
3422     its associeted `categories' administrative file.
3423
3424     `filename' is the name of a file in the `gnats-adm' administrative
3425     directory for the database.
3426
3427     The format of the administrative file should be simple ASCII.
3428     "Subfields" within the file are separated with colons (`:').
3429     Lines beginning with a hash sign (`#') are ignored as comments.
3430     Records within the file are separated with newlines.
3431
3432     The `field' option is used to name the subfields in the
3433     administrative file.  There must be at least one subfield, which
3434     is used to list the legal values for the field.  If the
3435     administrative file is empty (or does not contain any non-empty
3436     non-comment lines), the PR field must be empty.
3437
3438     The `key' option is used to designate which field in the
3439     administrative file should be used to list the legal values for
3440     the PR field.  The value must match one of the field names in the
3441     `field' option.
3442
3443     If the `allow-any-value' option is present, the value of the PR
3444     field is not required to appear in the administrative file -- any
3445     value will be accepted.
3446
3447     Note that there is no `default' keyword for `enumerated-in-file'.
3448     These fields get their default value from the _first_ entry in the
3449     associated administrative file.
3450
3451`multi-enumerated-in-file {'
3452`  path "filename"'
3453`  fields {'
3454`    "name" [ "name" ... ]'
3455`  } key "name"'
3456`  [ default "string" ]'
3457`  [ allow-any-value ]'
3458`  [ separators "string" ]'
3459`}'
3460     `multi-enumerated-in-file' is to `multienum' what
3461     `enumerated-in-file' is to `enum'.  Its options have the same
3462     meaning as their counterparts in the `multienum' and
3463     `enumerated-in-file' fields.
3464
3465     _NOTE_: Keywords may appear in any sequence, with one exception -
3466     the `separators' keyword, if present, has to come last.  This rule
3467     only applies to fields of type `multi-enumerated-in-file'.
3468
3469`date'
3470     The `date' datatype is used to hold dates.  Date fields must
3471     either be empty or contain a correctly formatted date.
3472
3473     No defaults or other options are available.  The field is left
3474     empty if no value for the field is given in the initial PR.
3475
3476`integer  [ { default "integer" } ]'
3477     Integer fields are used to hold numbers.  They must either be
3478     empty or contain a value composed entirely of digits, with an
3479     optional leading sign.
3480
3481     If the `default' option is present, the field will have the value
3482     of `integer' if the field is not given a value when the PR is
3483     initially created.  Otherwise, the field will be left empty.
3484
3485
3486File: gnats.info,  Node: Edit controls,  Next: Named query definitions,  Prev: Field datatypes,  Up: dbconfig file
3487
34884.3.4 Edit controls
3489-------------------
3490
3491The `on-change' subsection of a `fields' section specifies one or more
3492actions to be performed when the field value is edited by the user.  It
3493has the general form
3494
3495     on-change [ "query-expression" ] {
3496       [ add-audit-trail ]
3497       [ audit-trail-format {
3498         format "formatstring"
3499         [ fields { "fieldname" ... } ]
3500       } ]
3501       [ require-change-reason ]
3502       [ set-field | append-to-field "fieldname" {
3503         "format-string" [ fieldlist ]
3504       } ]
3505       [ require { "fieldname" ... } ]
3506     }
3507
3508   The optional `query-expression' controls whether or not the actions
3509in the `on-change' section are taken.  If the expression fails to
3510match, the actions are skipped.
3511
3512   The `add-audit-trail' option indicates that an entry should be
3513appended to the PR's audit-trail when this field is changed.  The format
3514of the entry is controlled by the optional `audit-trail-format' section
3515within the field, or by the global `audit-trail-format' section. See
3516*Note Audit-trail formats:: and *Note Outgoing email formats::.
3517
3518   The `require-change-reason' option specifies that a change reason
3519must be present in the PR when this field is edited.  This option only
3520makes sense if an audit-trail entry is required, as the change reason is
3521otherwise unused.
3522
3523   The `set-field' and `append-to-field' options are used to change the
3524value of the field `fieldname' in the PR.  The supplied format is used
3525to format the value that will be placed in the field.
3526
3527   `append-to-field' appends the resulting formatted string to the
3528existing, while `set-field' completely replaces the contents.
3529
3530   Any field may be edited by the `set-field' or `append-to-field'
3531option (the `read-only' option on a field is ignored).  However, the
3532changes are subject to the usual field content checks.
3533
3534   The `require' option specifies that one or more fields must have a
3535(non-blank) value when this field is changed.
3536
3537   A field may be enforced to have a (non-blank) value at all times by
3538including it in the set of fields required for the initial PR, see
3539*Note Initial PR input fields::, as well as in the set of fields
3540required on change of the field itself.
3541
3542   There is also a global `on-change' section that is executed once for
3543each PR edit.  A typical use for such a section is to set the
3544last-modified date of the PR.
3545
3546
3547File: gnats.info,  Node: Named query definitions,  Next: Audit-trail formats,  Prev: Edit controls,  Up: dbconfig file
3548
35494.3.5 Named query definitions
3550-----------------------------
3551
3552When queries are performed via `query-pr', they can refer to a query
3553format described by a `query' section in the `dbconfig' file:
3554
3555     query "queryname" {
3556       format "formatstring"
3557       [fields { "fieldname" [ "fieldname" ... ] } ]
3558     }
3559
3560   `formatstring' is as described in *Note Formatting query-pr output::.
3561It basically contains a string with printf-like % escapes.  The output
3562of the query is formatted as specified by this format string.
3563
3564   The `fields' option lists the fields to be used with the format
3565string.  If the `fields' option is present without a `format' option,
3566the contents of the listed fields are printed out, separated by
3567newlines.
3568
3569   The named query formats _full_, _standard_ amd _summary_ must be
3570present in the `dbconfig' file.  _full_ and _summary_ correspond to the
3571`query-pr' options `--full' and `--summary', while _standard_ is used
3572when no format option is given to `query-pr'.
3573
3574
3575File: gnats.info,  Node: Audit-trail formats,  Next: Outgoing email formats,  Prev: Named query definitions,  Up: dbconfig file
3576
35774.3.6 Audit-trail formats
3578-------------------------
3579
3580These formats are similar to the named query formats, but they include
3581more options.  They are used for formatting audit-trail entries and for
3582outgoing email messages.
3583
3584   There is currently only one audit-trail format, defined by the
3585`audit-trail-format' option:
3586
3587     audit-trail-format {
3588       format "formatstring"
3589       [ fields { "fieldname" [ "fieldname" ... ] } ]
3590     }
3591
3592   For those fields that require an audit-trail entry, the audit-trail
3593text to be appended is formatted as described by this format.  The
3594per-field `audit-trail-format' is used in preference to this one, if it
3595exists.
3596
3597   `formatstring' and `fieldname' are similar to those used by the
3598named query format.  `fieldname' may also be a "format parameter",
3599which is a context-specific value.  (Format parameters are
3600distinguished from fieldnames by a leading dollar sign (`$')).
3601
3602   The following format parameters are defined for `audit-trail-format'
3603entries:
3604
3605`$Fieldname'
3606     The name of the field for which an audit-trail entry is being
3607     created.
3608
3609`$OldValue'
3610     The old value of the field.
3611
3612`$NewValue'
3613     The new field value.
3614
3615`$EditUserEmailAddr'
3616     The email address of the user editing the field.  Set by the
3617     `EDITADDR' `gnatsd' command or from the `responsible' file; if not
3618     available, user's local address is used.
3619
3620`$CurrentDate'
3621     The current date.
3622
3623`$ChangeReason'
3624     The reason for the change; may be blank if no reason was supplied.
3625
3626   These parameters may be used anywhere a `fieldname' can appear.
3627
3628
3629File: gnats.info,  Node: Outgoing email formats,  Next: Index file description,  Prev: Audit-trail formats,  Up: dbconfig file
3630
36314.3.7 Outgoing email formats
3632----------------------------
3633
3634During the life of a PR, GNATS can be configured to send out a range of
3635email messages.  When a PR first arrives, an acknowledgment message is
3636sent out if the `send-submitter-ack' parameter above is set to `true'.
3637Certain edits to the PR may also cause email to be sent out to the
3638various parties, and if a PR is deleted, GNATS may send notification
3639email.
3640
3641   The formats of the email messages are controlled by `mail-format'
3642sections in the `dbconfig' file.  The general structure of a
3643`mail-format' section is as follows:
3644
3645     mail-format "format-name" {
3646       from-address {
3647         [ fixed-address "address" ]
3648         [ email-header-name | [ mail-header-name | ... ] ]
3649       }
3650       to-address {
3651         [ fixed-address "address" ]
3652         [ "email-header-name" | [ "mail-header-name" | ... ] ]
3653       }
3654       reply-to {
3655         [ fixed-address "address" ]
3656         [ "email-header-name" | ... ] | [ "gnats-field-name" | ... ]
3657       }
3658       header {
3659         format "formatstring"
3660         [ fields { "fieldname" [ "fieldname" ... ] } ]
3661       }
3662       body {
3663         format "formatstring"
3664         [ fields { "fieldname" [ "fieldname" ... ] } ]
3665       }
3666     }
3667
3668   `gnats' recognizes and uses 6 different `format-name' values:
3669
3670`initial-response-to-submitter'
3671     Format of the message used when mailing an initial response back
3672     to the PR submitter.  This message will only be sent if
3673     `send-submitter-ack' in the overall database configuration is set
3674     to `true'.
3675
3676`initial-pr-notification'
3677     Format of the message sent to the responsible parties when a new
3678     PR with category different from "pending" arrives.
3679
3680`initial-pr-notification-pending'
3681     Format of the message sent to the responsible parties when a new
3682     PR that ends up with category "pending" arrives.
3683
3684`appended-email-response'
3685     Format of the notification message sent out when a response to a
3686     PR is received via email.
3687
3688`audit-mail'
3689     Format of the message sent out when a PR edit generates an
3690     Audit-Trail entry.
3691
3692`deleted-pr-mail'
3693     Format of the message sent out when a PR is deleted.
3694
3695   The `from-address', `to-address' and `reply-to' subsections of a
3696mail-format section specify the contents of the `To:', `From:' and
3697`Reply-To:' headers in outgoing email.  There are two ways to specify
3698the contents: by using a `fixed-address' specification, or by
3699specifying `email-header-name's or `gnats-field-name's.
3700
3701   When an `email-header-name' or `gnats-field-name' value is given,
3702GNATS will attempt to extract an email address from the specified
3703location.  If several values are given on the same line, separated by
3704`|' characters, GNATS will try to extract an address from each location
3705in turn until it finds a header or field which is nonempty.  The
3706following example should clarify this:
3707
3708     mail-format "initial-response-to-submitter" {
3709       from-address {
3710         fixed-address "gnats-admin"
3711       }
3712       to-addresses {
3713         "Reply-To:" | "From:" | "Submitter-Id"
3714       } ...
3715
3716   This partial `mail-format' section specifies the format of the
3717address headers in the email message that is sent out as an
3718acknowledgment of a received PR.  The `From:' field of the message will
3719contain the email address of the GNATS administrator, as specified by
3720the `gnats-admin' line in the `responsible' file.  To fill in the `To:'
3721header, GNATS will first look for the mail header `Reply-To:' in the PR
3722and use the contents of that, if any.  If that header doesn't exist or
3723is empty, it will look for the contents of the `From:' email header,
3724and if that yields nothing, it will look for the GNATS `Submitter-Id'
3725field and use the contents of that.
3726
3727   Other email headers to be included in messages sent out by GNATS can
3728be specified by `header' subsections of the `mail-header' section.
3729`formatstring' and `fieldname' are similar to those used by the named
3730query format. Each header line must have a newline character (`\n') at
3731the end.
3732
3733   The email message body is specified in the `body' subsection of the
3734`mail-format' section. Just as for a `header' section, the `body'
3735section must contain a `formatstring' and `fieldname' values.
3736
3737   For some of the formats that GNATS recognizes, special variables are
3738available for use. The following table lists the formats that provide
3739special variables. See the example below for an illustration of how
3740they are used.
3741
3742`appended-email-response'
3743
3744    `$MailFrom'
3745          The From: line of the original message.
3746
3747    `$MailTo'
3748          The To: line of the original message.
3749
3750    `$MailSubject'
3751          The Subject: line of the original message.
3752
3753    `$MailCC'
3754          The CC: line of the original message.
3755
3756    `$NewAuditTrail'
3757          The text of the new audit trail entry (corresponds to the
3758          body of the message).
3759
3760`audit-mail'
3761
3762    `$EditUserEmailAddr'
3763          The email address of the user editing the PR.  Set by the
3764          `EDITADDR' `gnatsd' command or from the `responsible' file;
3765          if not available, user's local address is used.
3766
3767    `$OldResponsible'
3768          The previous Responsible field entry, if it was changed.
3769
3770    `$NewAuditTrail'
3771          The Audit-Trail: entries that have been appended by the edits.
3772
3773`deleted-pr-mail'
3774
3775    `$EditUserEmailAddr'
3776          The email address of the user deleting the PR.  Set by the
3777          `EDITADDR' `gnatsd' command or from the `responsible' file;
3778          if not available, user's local address is used.
3779
3780    `$PRNum'
3781          The number of the PR that was deleted.
3782
3783   The following example illustrates the use of these special variables:
3784
3785     mail-format "deleted-pr-mail" {
3786       from-address {
3787         "$EditUserEmailAddr"
3788       }
3789       to-addresses {
3790         fixed-address "gnats-admin"
3791       }
3792       header {
3793         format "Subject: Deleted PR %s\n"
3794         fields { "$PRNum" }
3795       }
3796       body {
3797         format "PR %s was deleted by user %s.\n"
3798         fields { "$PRNum" "$EditUserEmailAddr" }
3799       }
3800     }
3801
3802   This `mail-format' section specifies the format of the email message
3803that is sent out when a PR is deleted. The `From:' field is set to the
3804email address field of the user who deleted the PR, the subject of the
3805message contains the number of the deleted PR, and the message body
3806contains both the PR number and the user's email address.
3807
3808
3809File: gnats.info,  Node: Index file description,  Next: Initial PR input fields,  Prev: Outgoing email formats,  Up: dbconfig file
3810
38114.3.8 Index file description
3812----------------------------
3813
3814The `index' section of the `dbconfig' file lists the fields that appear
3815in the database index.  The index is always keyed by PR number.  The
3816general format for the `index' section is
3817
3818     index {
3819       path "file"
3820       fields { "fieldname" [ "fieldname" ... ] }
3821       binary-index true | false
3822       [ separator "symbol" ]
3823     }
3824
3825   The `path' parameter gives the name of the index file in the
3826`gnats-adm' directory of the database.  Only one index is allowed per
3827database, so only one `path' entry is allowed.
3828
3829   The `fields' parameter controls what fields will appear, and in what
3830order, in the index.  Fields are listed by their names, separated by
3831spaces (` ').  Fields will appear in the order they are listed.
3832
3833   The `binary-index' parameter controls whether the index is supposed
3834to be in plaintext or binary format.  Binary format is recommended, as
3835it avoids potential problems when field separators appear as bona-fide
3836field contents.
3837
3838   When plaintext format is used, by setting `binary-index false', the
3839symbol (`|') is used as a field separator in the index, unless the
3840optional `separator' parameter is used to redefine the separator
3841character.
3842
3843
3844File: gnats.info,  Node: Initial PR input fields,  Prev: Index file description,  Up: dbconfig file
3845
38464.3.9 Initial PR input fields
3847-----------------------------
3848
3849An `initial-entry' section in the `dbconfig' file is used to describe
3850which fields should be present on initial PR entry; this is used by
3851tools such as send-pr to determine which fields to include in a "blank"
3852PR template. An optional `require' parameter can be defined to specify
3853a subset of the `intial-entry' fields which must be assigned a value
3854upon initial creation of the PR.
3855
3856   The general format for the `initial-entry' section is
3857
3858     initial-entry {
3859       fields { "fieldname" [ "fieldname" ... ] }
3860       [ require { "fieldname" [ "fieldname" ... ] } ]
3861     }
3862
3863
3864File: gnats.info,  Node: Other config files,  Next: send-pr.conf file,  Prev: dbconfig file,  Up: Management
3865
38664.4 Other database-specific config files
3867========================================
3868
3869* Menu:
3870
3871* categories file::
3872* responsible file::
3873* submitters file::
3874* states file::
3875* addresses file::
3876* classes file::
3877
3878
3879File: gnats.info,  Node: categories file,  Next: responsible file,  Up: Other config files
3880
38814.4.1 The `categories' file
3882---------------------------
3883
3884The `categories' file contains a list of problem categories, specific
3885to the database, which GNATS tracks.  This file also matches
3886responsible people with these categories.  You must edit this file
3887initially, creating valid categories.  In most installations, GNATS is
3888configured to create directories on disk for valid categories
3889automatically as needed (*note Overall database configuration: Overall
3890database configuration.). If GNATS isn't set up to do this, you need to
3891run `mkcat' to create the corresponding subdirectories of the database
3892directory. For instructions on running `mkcat', see *Note Adding a
3893problem category: mkcat.
3894
3895   To create a new category, log in as GNATS, add a line to this file,
3896and run `mkcat' if applicable.  Lines beginning with `#' are ignored.
3897
3898   A line in the `categories' file consists of four fields delimited by
3899colons, as follows:
3900
3901     CATEGORY:DESCRIPTION:RESPONSIBLE:NOTIFY
3902
3903
3904CATEGORY
3905     A unique category name, made up of text characters.  This name
3906     cannot contain spaces or any of the following characters:
3907
3908          ! $ & * ( ) { } [ ] ` ' " ; : < > ~
3909
3910     Ideally, category names should not contain commas or begin with
3911     periods.  Each line has a corresponding subdirectory in the
3912     database directory.
3913
3914DESCRIPTION
3915     A terse textual description of the category.
3916
3917RESPONSIBLE
3918     The name tag of the party responsible for this category of
3919     problems, as listed in the `responsible' file (*note The
3920     `responsible' file: responsible file.).
3921
3922NOTIFY
3923     One or more other parties which should be notified when a Problem
3924     Report with this category arrives, such as a project manager,
3925     other members of the same project, other interested parties, or
3926     even log files.  These should be separated with commas.
3927
3928   A good strategy for configuring this file is to have a different
3929category for each product your organization supports or wishes to track
3930information for.
3931
3932     rock:ROCK program:me:myboss,fred
3933     stone:STONE utils:barney:fred
3934     iron:IRON firewall:me:firewall-log
3935
3936   In the above example, the nametags `myboss', `me', `fred', and
3937`barney' must be defined in the `responsible' file (*note The
3938`responsible' file: responsible file.).
3939
3940   Problem Reports with a category of `rock' are sent to the local mail
3941address (or alias) `me', and also sent to the addresses `myboss' and
3942`fred'.  PRs with a category of `stone' are sent to the local addresses
3943`barney' and `fred' only, while PRs with the category `iron' are sent
3944only to `me', and are also filed in `firewall-log' (in this case, a
3945mail alias should be set up, *note Setting up mail aliases: Aliases.
3946
3947   If you want to separate PRs in each problem category into specific
3948subsets, say _documentation_ and _software bugs_, using the `classes'
3949file is recommended.  *Note The `classes' file: classes file.
3950
3951   Only one category _must_ be present for GNATS to function:
3952
3953     pending:Non-categorized PRs:gnats-admin:
3954
3955   The `pending' directory is created automatically when you run `mkdb'
3956to initialize a new database.  (*note Configuring and compiling the
3957software: Configure and make.).
3958
3959
3960File: gnats.info,  Node: responsible file,  Next: submitters file,  Prev: categories file,  Up: Other config files
3961
39624.4.2 The `responsible' file
3963----------------------------
3964
3965This file contains a list of the responsible parties.  Lines beginning
3966with `#' are ignored.  Each entry contains three fields, separated by
3967colons:
3968
3969     RESPONSIBLE:FULL-NAME:MAIL-ADDRESS
3970
3971
3972RESPONSIBLE
3973     A name-tag description of the party in question, such as her or
3974     his user name, or the name of the group.  This name is listed in
3975     the PR in the `Responsible' field.
3976
3977FULL-NAME
3978     The full name of the party ("Charlotte Bronte"; "Compiler Group").
3979
3980MAIL-ADDRESS
3981     The full, valid mail address of the party.  This field is only
3982     necessary if the responsible party has no local mail address or
3983     alias.
3984
3985A sample `responsible' listing might be:
3986
3987     ren:Ren Hoek:
3988     stimpy:Stimpson J. Cat:stimpy@lederhosen.org
3989
3990Here, `ren' is a local user.  `stimpy' is remote, so his full address
3991must be specified.
3992
3993The following entry _must_ be present for GNATS to function:
3994
3995     gnats-admin:GNATS administrator:
3996
3997`gnats-admin' is usually defined as a mail alias when GNATS is
3998installed, so for this purpose `gnats-admin' is a local address.
3999However, this line can alos be used to redefine the email address of the
4000GNATS administrator, by adding the desired address at the end of the
4001line.
4002
4003
4004File: gnats.info,  Node: submitters file,  Next: states file,  Prev: responsible file,  Up: Other config files
4005
40064.4.3 The `submitters' file
4007---------------------------
4008
4009This is a database of sites which submit bugs to your support site.  It
4010contains six fields delineated by colons.  Lines beginning with `#'
4011will be ignored.
4012
4013   Entries are of the format:
4014
4015     SUBMITTER-ID:NAME:TYPE:RESP-TIME:CONTACT:NOTIFY
4016
4017
4018SUBMITTER-ID
4019     A unique identifier for a specific site or other entity who submits
4020     Problem Reports. The first `submitter-id' listed in the file will
4021     be the default for PRs that arrive with invalid or empty submitter
4022     fields.
4023
4024NAME
4025     The full name or a description of this entity.
4026
4027TYPE
4028     Optional description for the type of relationship of this
4029     submitter to your support site.  This could indicate a contract
4030     type, a level of expertise, etc., or it can remain blank.
4031
4032RESP-TIME
4033     Optional quoted response time in "business hours".  If the
4034     database `dbconfig' file has the `notify-about-expired-prs' entry
4035     set to TRUE (*note Overall database configuration: Overall
4036     database configuration, GNATS will use this field to schedule when
4037     it should notify the gnats-admin, responsible person and submitter
4038     contact that the PR wasn't analyzed within the agreed response
4039     time.  Business hours and business-week days are set in the
4040     `dbconfig' file.  For information on `at-pr', the program which
4041     sends out this reminder, see *Note Timely Reminders: at-pr.
4042
4043CONTACT
4044     The name tag of the main "contact" at the Support Site for this
4045     submitter.  This contact should be in the `responsible' file
4046     (*note The `responsible' file: responsible file.).  Incoming bugs
4047     from SUBMITTER are sent to this contact.  Optionally, this field
4048     can be left blank.
4049
4050NOTIFY
4051     Any other parties who should receive copies of Problem Reports
4052     sent in by SUBMITTER.  They need not be listed in the
4053     `responsible' file.
4054
4055   A few example entries in the `submitters' file:
4056
4057     univ-hell:University of Hades:eternal:3:beelzebub:lucifer
4058     tta:Telephones and Telegraphs of America:support:720:dave:
4059
4060In this example, when a PR comes in from the University of Hades (who
4061has an eternal contract), it should have `univ-hell' in its
4062`Submitter-Id' field.  This Problem Report goes to `beelzebub' (who
4063should be in the `responsible' file), and if it is not analyzed within
4064three business hours a reminder message is sent.  `lucifer' also
4065receives a copy of the bug, and a copy of the reminder message as well
4066(if it is sent).  When Telephones and Telegraphs of America utilizes
4067their support contract and submits a bug, a copy is sent only to
4068`dave', who has 720 business hours to return an analysis before a
4069reminder is sent.
4070
4071   To disable the feature of GNATS which tracks the `Submitter-Id',
4072simply alter the `submitters' file to only contain one SUBMITTER-ID
4073value, and instruct your submitters to ignore the field.
4074
4075
4076File: gnats.info,  Node: states file,  Next: addresses file,  Prev: submitters file,  Up: Other config files
4077
40784.4.4 The `states' file
4079-----------------------
4080
4081This file lists the possible states for Problem Reports.  Each entry
4082has up to three fields, separated by colons.  Lines beginning with `#'
4083will be ignored.
4084
4085     STATE:TYPE:DESCRIPTION
4086
4087
4088STATE
4089     The name of the state.  It may contain alphanumerics as well as
4090     `-' (hyphen), `_' (underscore), or `.' (period), but no other
4091     characters.
4092
4093TYPE
4094     This is the type of the state.  This field is optional and it may
4095     contain alphanumerics as well as `-' (hyphen), `_' (underscore),
4096     or `.' (period), but no other characters.
4097
4098     The concept of the type of a state recognizes that there may for
4099     instance be several possible states for a Problem Report which
4100     effectively means that the PR is closed and that there may be
4101     certain actions that need to be taken when a PR reaches a "closed
4102     state".  The problem may have been resolved, it might have been
4103     decided that the problem is unsolvable or simply that it won't be
4104     solved.  Some organizations may for instance wish to consider the
4105     "suspended" state as a state of type "closed".
4106
4107     Currently, the only defined state types are "open" and "closed",
4108     the "open" type isn't currently used for anything while the
4109     "closed" type is only used to control the Closed-Date field of PRs.
4110     Changing the state of a PR to any state of type "closed" will set
4111     the Closed-Date field with a time stamp and changing the state of
4112     a PR from one "closed" state to another will leave the Closed-Date
4113     field as it was.  Changing the state of a PR from any state of type
4114     "closed" to a non-closed state will clear the Closed-Date field.
4115
4116     The `--skip-closed' option of `query-pr' refers to all states of
4117     type "closed", not to a specific state name of "closed".
4118
4119DESCRIPTION
4120     This is is an optional one-line description of what the state
4121     means.  Any character is okay in the description; a newline ends
4122     it.  GNATS itself does not currently use the description for
4123     anything, but certain external tools (such as TkGnats and
4124     Gnatsweb) look for it, so it's a good idea to include one for
4125     every state.
4126
4127   The first state listed will be the state automatically assigned to
4128Problem Reports when they arrive; by default this is named "open".  The
4129last state listed is the end state for Problem Reports -- one should
4130usually assume that a PR in this state is not being actively worked on;
4131by default this state is named "closed".  Even if a different name has
4132been chosen for this state, GNATS will force this state to be of type
4133"closed".
4134
4135   It is recommended that you keep the default names of "open" and
4136"closed" for the first and last states respectively, since there may be
4137external tools that depend on these names.
4138
4139
4140File: gnats.info,  Node: addresses file,  Next: classes file,  Prev: states file,  Up: Other config files
4141
41424.4.5 The `addresses' file
4143--------------------------
4144
4145This file contains mappings between submitter IDs and corresponding
4146e-mail addresses.
4147
4148   When a PR comes in without a submitter ID (if someone sends
4149unformatted e-mail to the PR submission email address), GNATS will try
4150to derive the submitter ID from the address in the "From:" header.  The
4151entries in this file consist of two fields, separated by a colon:
4152
4153     SUBMITTER-ID:ADDRESS-FRAGMENT
4154
4155
4156SUBMITTER-ID
4157     A valid submitter ID
4158
4159ADDRESS-FRAGMENT
4160     Part of, or all of the e-mail address to be matched
4161
4162   Here is an example of an `addresses' file:
4163
4164     # Addresses for Yoyodine Inc
4165     yoyodine:yoyodine.com
4166     yoyodine:yoyodine.co.uk
4167     # Addresses for Foobar Inc.
4168     foobar1:sales.foobar.com
4169     foobar2:admin.foobar.com
4170     foobar3:clark@research.foobar.com
4171
4172   GNATS checks each line in the `addresses' file, comparing
4173ADDRESS-FRAGMENT to the end of the "From:" header, until it finds a
4174match.  If no match is found, GNATS uses the default submitter ID.
4175
4176   You can only have one address fragment per line, but you can have
4177more than one line for a given submitter ID.  An address fragment can
4178be a domain (i.e. yoyodine.com), a machine location (admin.foobar.com),
4179or a full e-mail address (clark@research.foobar.com).
4180
4181   GNATS can match addresses in three e-mail formats:
4182
4183`From: name@address.com'
4184     The address by itself without a full name, not enclosed in brackets
4185
4186`From: Real Person <name@address.com>'
4187     A full name (optional, with or without quotation marks), followed
4188     by the address enclosed in angle brackets
4189
4190`From: name@address.com (Real Person)'
4191     An address, followed by a name or comment in parentheses
4192
4193   If GNATS sees other e-mail address formats, it uses the default
4194submitter ID.
4195
4196
4197File: gnats.info,  Node: classes file,  Prev: addresses file,  Up: Other config files
4198
41994.4.6 The `classes' file
4200------------------------
4201
4202This file lists the possible classes of Problem Reports.  Each line
4203consists of a class name, followed by a colon and an optional class type
4204name (the class type name is not used for anything in the current
4205implementation of GNATS, so it may be left blank.  The `class' and
4206`class-type-name' fields may only contain alphanumerics, `-', `_', and
4207`.', but no other characters.
4208
4209   Then comes another colon, followed by an optional one-line
4210description of the class.  GNATS itself does not use the class
4211description, but external tools such as Gnatsweb and TkGnats may use it.
4212Therefore, a line in this file should at least contain the following:
4213
4214     class::class description
4215
4216   Lines beginning with `#' will be ignored, and the first listed class
4217is the default class for an incoming Problem Report.
4218
4219
4220File: gnats.info,  Node: send-pr.conf file,  Next: Admin files,  Prev: Other config files,  Up: Management
4221
42224.5 The `send-pr.conf' file
4223===========================
4224
4225This file contains some default values that need to be known in order
4226for `send-pr' to work properly.  This file needs to be copied to all
4227hosts where `send-pr' will be used.
4228
4229   If GNATS was built with default options, the `send-pr.conf' file
4230should be placed in the `/usr/local/etc/gnats' directory.  However, if
4231the option `--sysconfdir' was used during building of GNATS, the
4232`send-pr.conf' file resides at the location given to this option.
4233
4234   Entries in this file are on the format
4235
4236     variable=VALUE
4237
4238   The valid variables are:
4239
4240`SUBMITTER'
4241     The default value to be used for the Submitter-Id field when
4242     `send-pr' is invoked.
4243
4244`DEFAULT_RELEASE'
4245     The default value to be used for the Release field (only
4246     applicable if the Release field is defined in the `dbconfig' file.
4247
4248`DEFAULT_ORGANIZATION'
4249     The default value to be used for the Organization field.  (only
4250     applicable if the Organization field is defined in the `dbconfig'
4251     file.
4252
4253`MAILPROG'
4254     If the GNATS server can't be reached directly over the network,
4255     i.e. it is behind a firewall or suchlike, `send-pr' can be set up
4256     to submit Problem Reports by e-mail.  This is done by setting the
4257     `MAILPROG' variable to point to a mailer such as Sendmail.  If
4258     `MAILPROG' needs to have the address that the mail is being sent
4259     to specified on the command line, it should be specified here as
4260     well (for example, `MAILPROG=''mail bugs@foo.bar.com''' should
4261     work).  If Sendmail is used, use `MAILPROG=''/usr/lib/sendmail -oi
4262     -t'''.  See also `MAILADDR' and `TEMPLATE' below.
4263
4264`MAILADDR'
4265     If using e-mail to submit PRs, this is the address that PRs should
4266     be sent to.
4267
4268`TEMPLATE'
4269     When invoked, `send-pr' communicates directly over the network
4270     with the GNATS server to determine what fields to include in a
4271     correctly formatted Problem Report so that it can present the user
4272     with a template.  If the GNATS server can't be reached directly
4273     over the network, a template must be provided.  Set the `TEMPLATE'
4274     variable to point to a template file created on the GNATS server
4275     by using the command `send-pr -p'.  *Note Installing the user
4276     tools: Installing tools.
4277
4278
4279File: gnats.info,  Node: Admin files,  Next: Admin utils,  Prev: send-pr.conf file,  Up: Management
4280
42814.6 Administrative data files
4282=============================
4283
4284The following files are database-specific and are located in the
4285`gnats-adm' subdirectory of the database directory.  These files are
4286maintained by GNATS; you should never need to touch them.
4287
4288* Menu:
4289
4290* index file::      The `index' file
4291* current file::    The `current' file
4292
4293
4294File: gnats.info,  Node: index file,  Next: current file,  Up: Admin files
4295
42964.6.1 The `index' file
4297----------------------
4298
4299The index is used to accelerate searches on the database by `query-pr'
4300and `edit-pr'.  This file is not created until the first PR comes in.
4301It is then kept up to date by GNATS; you should never touch this file.
4302
4303   Searches on subjects contained in the index are much faster than
4304searches which depend on data not in the index.  Inexes come in two
4305different formats: "binary" and "plain-text".  Binary indexes are
4306safer, in that they avoid certain problems that may crop up if the
4307field separators used by plain-text indexes appear in field data.
4308
4309   A plain-text index contains single-line entries for all PR fields
4310except for the multitext fields such as Description, How-To-Repeat,
4311etc. Fields are separated by bars (`|') except for `Category' and
4312`Number', which are separated by a slash (`/').
4313
4314   Binary indexes are not meant to be human-readable, but they are safer
4315than the plain-text variety, in that they avoid certain problems that
4316may crop up if the field separators used by plain-text indexes appear in
4317field data.
4318
4319   The format of the index for a database is set in the `dbconfig'
4320file. *Note Index file description: Index file description.
4321
4322   Should the `index' file become corrupted, the `gen-index' utility
4323can be used to regenerate it. *Note Regenerating the index: gen-index.
4324
4325
4326File: gnats.info,  Node: current file,  Prev: index file,  Up: Admin files
4327
43284.6.2 The `current' file
4329------------------------
4330
4331This file contains the last serial number assigned to an incoming PR.
4332It is used internally by GNATS; you need never touch this file.
4333
4334
4335File: gnats.info,  Node: Admin utils,  Next: Internal utils,  Prev: Admin files,  Up: Management
4336
43374.7 Administrative utilities
4338============================
4339
4340These tools are used by the GNATS administrator as part of the periodic
4341maintenance and configuration of GNATS.  *Note GNATS Administration:
4342Management.
4343
4344* Menu:
4345
4346* mkdb::          Adding another database
4347* mkcat::         Adding a problem category
4348* rmcat::         Removing a problem category
4349* gen-index::     Regenerating the index
4350* check-db::      Checking database health
4351* gnats-pwconv::  Managing user passwords
4352
4353
4354File: gnats.info,  Node: mkdb,  Next: mkcat,  Up: Admin utils
4355
43564.7.1 Adding another database
4357-----------------------------
4358
4359To initialize a new GNATS database:
4360
4361  1. Add a line for the new database in the `databases' file (*note
4362     Where GNATS lives: Locations.
4363
4364  2. Run `mkdb', using
4365
4366          mkdb DATABASE
4367
4368     where DATABASE is the database you specified in the `databases'
4369     file.  `mkdb' creates the database directory and populates it with
4370     the directories `pending', `gnats-queue' and `gnats-adm'.  A full
4371     set of sample configuration files is copied to the `gnats-adm'
4372     directory.
4373
4374
4375File: gnats.info,  Node: mkcat,  Next: rmcat,  Prev: mkdb,  Up: Admin utils
4376
43774.7.2 Adding a problem category
4378-------------------------------
4379
4380To add new categories to the database:
4381
4382  1. Add a line to for each new category to the `categories' file in the
4383     gnats-adm directory of the database. *Note The `categories' file:
4384     categories file.
4385
4386  2. Run `mkcat' If applicable.  If `create-category-dirs' is set to
4387     `false' in the database `dbconfig' file, you need to create
4388     category directories with `mkcat'.  `mkcat' creates a subdirectory
4389     under the database directory for any new categories which appear
4390     in the `categories' file.
4391
4392
4393File: gnats.info,  Node: rmcat,  Next: gen-index,  Prev: mkcat,  Up: Admin utils
4394
43954.7.3 Removing a problem category
4396---------------------------------
4397
4398To remove a category from the database:
4399
4400  1. Remove the Problem Reports from the subdirectories corresponding
4401     to the categories you wish to remove, or assign the PRs to new
4402     categories.  All PRs for a given category reside in a subdirectory
4403     of the database directory, with the same name as the category.
4404
4405  2. Run `rmcat' using
4406
4407          rmcat CATEGORY [ CATEGORY... ]
4408
4409     where CATEGORY is the category you wish to remove.  You can
4410     specify as many categories as you wish as long as each category
4411     has no PRs associated with it.  `rmcat' removes the directory
4412     where the Problem Reports for that category had been stored.
4413
4414
4415File: gnats.info,  Node: gen-index,  Next: check-db,  Prev: rmcat,  Up: Admin utils
4416
44174.7.4 Regenerating the index
4418----------------------------
4419
4420If your `index' file becomes corrupted, or if you need a copy of the
4421current index for some reason, use
4422
4423     gen-index [ -n | --numeric ]
4424               [ -d DATABASENAME | --database=DATABASENAME ]
4425               [ -o FILENAME | --outfile=FILENAME ]
4426               [ -i | --import ] [ -e | --export ]
4427               [ -h | --help] [ -V | --version ]
4428
4429With no options, `gen-index' generates an index that is sorted by the
4430order that the categories appear in the `categories' file. The index is
4431generated in plaintext or binary format according to the value of
4432`binary-index' in the `dbconfig' file (*note Index file description:
4433Index file description.).  The results are printed to standard output.
4434The options are:
4435
4436`-n'
4437`--numeric'
4438     Sorts index entries numerically.
4439
4440`-d DATABASENAME'
4441`--database=DATABASENAME'
4442     Specifies the database to index.  If this option is left out,
4443     `gen-index' attempts to index the database with name taken from the
4444     the GNATSDB environment variable, and if that is undefined, the
4445     default database, as set when GNATS was built (usually `default').
4446
4447`-o FILENAME'
4448`--outfile=FILENAME'
4449     Places output in FILENAME rather than sending it to standard
4450     output.
4451
4452`-i'
4453`--import'
4454     Import the existing index file instead of re-indexing the database.
4455
4456`-e'
4457`--export'
4458     Force plaintext output.
4459
4460`-h'
4461`--help'
4462     Prints the usage for `gen-index'.
4463
4464`-V'
4465`--version'
4466     Prints the version number for `gen-index'.
4467
4468
4469File: gnats.info,  Node: check-db,  Next: gnats-pwconv,  Prev: gen-index,  Up: Admin utils
4470
44714.7.5 Checking database health
4472------------------------------
4473
4474The `check-db' script is useful for performing periodic checks on
4475database health.  It accepts the following options:
4476
4477`-d DATABASENAME'
4478`--database=DATABASENAME'
4479     Determines the database which to operate on.
4480
4481`--all-databases'
4482     Check all GNATS databases on the system.  This option takes
4483     precedence over the `--database' option.
4484
4485   If no option is given, the default database is checked.
4486
4487   During its operation, `check-db' first attempts to lock DATABASE.
4488If this is not possible, it repeats the locking attempts for five
4489minutes; if it fails, it sends a mail message notifying the
4490administrator of the failure and exits.
4491
4492   Once the database is locked, the script searches the database for
4493lock files that are more than 24 hours old.  Any old lock files are
4494reported to the administrator in a mail message.
4495
4496   After checking for old lock files, it calls `gen-index' (*note
4497Regenerating the index: gen-index.) and compares the results with the
4498current `index' file of the database; any inconsistencies are reported
4499to the administrators in a mail message.
4500
4501   After checking the index file for inconsistencies, the script unlocks
4502the database and exits.
4503
4504
4505File: gnats.info,  Node: gnats-pwconv,  Prev: check-db,  Up: Admin utils
4506
45074.7.6 Managing user passwords
4508-----------------------------
4509
4510Older versions of GNATS, up to and including version 3.x, stored user
4511passwords in plaintext in the `gnatsd.user_access' files. Version 4 has
4512the options of storing the password as MD5 or standard DES `crypt()'
4513hashes (as most UNIX versions do in the system password files) as well
4514as in plaintext. Since the password strings require a prefix to
4515indicate how they are encrypted, one is forced to convert the old
4516password files to a new format when upgrading to GNATS version 4. *Note
4517Upgrading from older versions: Upgrading.
4518
4519   The `gnats-pwconv' tool takes care of converting the old password
4520files to the new format:
4521
4522     gnats-pwconv [ -c | --crypt ] [ -m | --md5 ] [ -p | --plaintext ]
4523              [ -h | --help] [ -V | --version ] INFILE [OUTFILE]
4524
4525   Unless the `--version' or `--help' options are given, exactly one
4526encryption method must be specified, as well as an input file. The
4527output file parameter is optional. If one is not specified, results will
4528be printed on standard output.
4529
4530
4531File: gnats.info,  Node: Internal utils,  Prev: Admin utils,  Up: Management
4532
45334.8 Internal utilities
4534======================
4535
4536These tools are used internally by GNATS.  You should never need to run
4537these by hand; however, a complete understanding may help you locate
4538problems with the GNATS tools or with your local implementation.
4539
4540* Menu:
4541
4542* queue-pr::    Handling incoming traffic
4543* file-pr::     Processing incoming traffic
4544* at-pr::       Timely reminders
4545* pr-edit::     The edit-pr driver
4546* diff-prs::    The `diff-prs' tool
4547* pr-age::      The `pr-age' tool
4548
4549
4550File: gnats.info,  Node: queue-pr,  Next: file-pr,  Up: Internal utils
4551
45524.8.1 Handling incoming traffic
4553-------------------------------
4554
4555The program `queue-pr' handles traffic coming into GNATS.  `queue-pr'
4556queues incoming Problem Reports in the `gnats-queue' directory of the
4557database, and then periodically (via `cron') passes them on to
4558`file-pr' to be filed in the GNATS database.  *Note Installing GNATS:
4559Installation.
4560
4561   The usage for `queue-pr' is as follows:
4562
4563     queue-pr [ -q | --queue ] [ -r | --run ]
4564              [ -f FILENAME | --file=FILENAME ]
4565              [ -m KBYTES | --max-size=KBYTES ]
4566              [ -d DATABASENAME | --database=DATABASENAME ]
4567              [ -h | --help] [ -V | --version ]
4568
4569   One of `-q' or `-r' (or their longer-named counterparts) must be
4570present upon each call to `queue-pr'.  These options provide different
4571functions, as described below.
4572
4573`-q'
4574`--queue'
4575     Accepts standard input as an incoming mail message, placing this
4576     message in an incrementally numbered file in the `gnats-queue'
4577     directory under the database directory (*note Where GNATS lives:
4578     Locations.).
4579
4580`-r'
4581`--run'
4582     Redirects files in the `gnats-queue' directory into the program
4583     `file-pr' one by one.
4584
4585`-f FILENAME'
4586`--file=FILENAME'
4587     Used with `-q' (or `--queue'), accepts the file denoted by
4588     FILENAME as input rather than reading from standard input.
4589
4590`-m KBYTES'
4591`--max-size=KBYTES'
4592     Do not process messages larger then KBYTES kilobytes.  Files
4593     larger than the limit are left for human intervention.
4594
4595`-d DATABASENAME'
4596`--directory=DATABASENAME'
4597     Specifies database to operate on.  If this option is left out, the
4598     value of the GNATSDB environment variable is used, and if that is
4599     undefined, the default database name set when GNATS was built is
4600     used (usually `default').
4601
4602`-h'
4603`--help'
4604     Prints the usage for `gen-index'.
4605
4606`-V'
4607`--version'
4608     Prints the version number for `gen-index'.
4609
4610
4611File: gnats.info,  Node: file-pr,  Next: at-pr,  Prev: queue-pr,  Up: Internal utils
4612
46134.8.2 Processing incoming traffic
4614---------------------------------
4615
4616`queue-pr' hands off queued Problem Reports to `file-pr' one at a time.
4617`file-pr' checks each Problem Report for correct information in its
4618fields (particularly a correct `Category'), assigns it an
4619identification number, and files it in the database under the
4620appropriate category.
4621
4622   If the `Category' field does not contain a valid category value
4623(i.e., matching a line in the `categories' file; *note The `categories'
4624file: categories file.), the PR is assigned to the default category, as
4625set in the `dbconfig' file.  If there is no default category defined,
4626the PR is given a `Category' value of `pending' and is placed in the
4627`pending' directory.  The GNATS administrator is notified of the
4628unplaceable PR.
4629
4630   `file-pr' assigns the Problem Report an identification number, files
4631it in the GNATS database (under the default, if the `Category' field
4632contains an invalid category), and sends acknowledgments to appropriate
4633parties.  For the default GNATS configuration, the person responsible
4634for that category of problem (*note The `categories' file: categories
4635file.) and the person responsible for the submitter site where the PR
4636originated (*note The `submitters' file: submitters file.) receive a
4637copy of the PR in its entirety.  Optionally, the originator of the PR
4638receives an acknowledgment that the PR arrived and was filed (*note
4639Changing your GNATS configuration: GNATS configuration.).
4640
4641   The usage for `file-pr' is as follows:
4642
4643     file-pr [ -f FILENAME | --file=FILENAME ]
4644             [ -d DATABASENAME | --database=DATABASENAME ]
4645     	    [ -h | --help ] [ -V | --version ]
4646
4647            network options:
4648             [ -H HOST | --host=HOST ]
4649             [ -P PORT | --port=PORT ]
4650             [ -v USERNAME | --user=USERNAME ]
4651             [ -w PASSWORD | --passwd=PASSWORD ]
4652
4653   `file-pr' requires no options in order to operate, and takes input
4654from standard input (normally, the output of `queue-pr -r') unless
4655otherwise specified.  The options include:
4656
4657`-f FILENAME'
4658`--filename=FILENAME'
4659     Uses FILENAME as input rather than standard input.
4660
4661`-d DATABASENAME'
4662`--database=DATABASENAME'
4663     Performs refiling operations on DATABASE.  If this option is left
4664     out, the value of the GNATSDB environment variable is used, and if
4665     that is undefined, the default database name set when GNATS was
4666     built is used (usually `default').
4667
4668`-h'
4669`--help'
4670     Prints the usage for `file-pr'.
4671
4672`-V'
4673`--version'
4674     Prints the version number for `file-pr'.
4675
4676`file-pr' can file PRs across a network, talking to a remote gnatsd.
4677The following options relate to network access:
4678
4679`-H HOST'
4680`--host=HOST'
4681     Hostname of the GNATS server.
4682
4683`-P PORT'
4684`--port=PORT'
4685     The port that the GNATS server runs on.
4686
4687`-v USERNAME'
4688`--username=USERNAME'
4689     Username used to log into the GNATS server.
4690
4691`-w PASSWORD'
4692`--passwd=PASSWORD'
4693     Password used to log into the GNATS server.
4694
4695
4696File: gnats.info,  Node: at-pr,  Next: pr-edit,  Prev: file-pr,  Up: Internal utils
4697
46984.8.3 Timely reminders
4699----------------------
4700
4701`at-pr' creates a queued job using `at' which, after an allotted
4702"response time" is past, checks the PR to see if its state has changed
4703from `open'. When the PR is originally filed, `file-pr' checks the
4704`notify-about-expired-prs' parameter in the `dbconfig' file. If this
4705parameter is set to `true', `file-pr' calls `at-pr', which sets up the
4706expiry check.
4707
4708   The `submitters' file contains the response time for each
4709`>Submitter-Id:' (*note The `submitters' file: submitters file.).  The
4710time is determined in "business hours", which are defined in the
4711database's `dbconfig' file (*note Overall database configuration:
4712Overall database configuration.).
4713
4714   If the PR is urgent and is still open after the requisite time period
4715has passed, `at-pr' sends a reminder to the GNATS administrator, to the
4716maintainer responsible for that submitter, and to the maintainer
4717responsible for the PR with the following message:
4718
4719     To: SUBMITTER-CONTACT RESPONSIBLE GNATS-ADMIN
4720     Subject: PR GNATS-ID not analyzed in #HOURS hours
4721
4722     PR GNATS-ID was not analyzed within the acknowledgment period
4723     of #HOURS business hours.  The pertinent information is:
4724
4725      Submitter-Id: SUBMITTER
4726      Originator: FULL NAME OF THE SUBMITTER
4727      Synopsis: SYNOPSIS
4728      Person responsible for the PR: RESPONSIBLE
4729
4730     --
4731     The GNU Problem Report Management System (GNATS)
4732
4733   The PR is "urgent" if its priority is `critical' or if its priority
4734is `serious' and the severity is `high'.
4735
4736
4737File: gnats.info,  Node: pr-edit,  Next: diff-prs,  Prev: at-pr,  Up: Internal utils
4738
47394.8.4 The `edit-pr' driver
4740--------------------------
4741
4742`pr-edit' does the background work for `edit-pr', including
4743error-checking and refiling newly edited Problem Reports, handling file
4744and database locks and deletion of PRs.  It can be called interactively,
4745though it has no usable editing interface.
4746
4747   The usage for `pr-edit' is:
4748
4749     pr-edit   [ -l USERNAME | --lock=USERNAME ] [ -u | --unlockdb ]
4750               [ -L | --lockdb ] [ -U | --unlockdb ] [ -c | --check ]
4751               [ -C | --check-initial ] [ -s | --submit [ --show-prnum ] ]
4752               [ -a FIELD | --append field=FIELD ]
4753               [ -r FIELD | --replace=FIELD ] [ --delete-pr ]
4754               [ -R REASON | --reason=REASON ]
4755               [ -p PROCESS-ID | --process=PROCESS-ID ]
4756               [ -d DATABASENAME | --database=DATABASENAME ]
4757               [ -f FILENAME | --filename=FILENAME ]
4758               [ -V | --version ]
4759               [ -h | --help ] [ -v USERNAME | --user=USERNAME ]
4760               [ -w PASSWD | --passwd=PASSWD ]
4761               [ -H HOST | --host=HOST ]
4762               [ -P PORT | --port=PORT ]
4763               [ -D | --debug ] [ PR NUMBER ]
4764
4765   A "lock" is placed on a Problem Report while the PR is being edited.
4766The lock is simply a file in the `locks' subdirectory of the
4767`gnats-adm' directory of the database, with the name `GNATS-ID.lock',
4768which contains the name of the user who created the lock.  USER then
4769"owns" the lock, and must remove it before the PR can be locked again,
4770even by the same USER(1).  If a PR is already locked when you attempt
4771to edit it, `pr-edit' prints an error message giving the name of the
4772user who is currently editing the PR.
4773
4774   If you do not specify PR NUMBER, `pr-edit' reads from standard
4775input.  You must specify PR NUMBER for the functions which affect PR
4776locks, `--lock=USERNAME' and `--unlock'.
4777
4778`-L'
4779`--lockdb'
4780     Locks the database specified with the `--database' or `-d' option.
4781     No PRs may be edited, created or deleted while the database is
4782     locked.  This option is generally used when editing the index file.
4783
4784`-U'
4785`--unlockdb'
4786     Unlocks the specified database.  No check is made that the
4787     invoking user actually had locked the database in the first place;
4788     hence, it is possible for anyone to steal a database lock.
4789
4790`-c'
4791`--check'
4792`-C'
4793`--check-initial'
4794     The `--check' options are used to verify that a proposed PR's field
4795     contents are valid.  The PR is read in (either from stdin or a file
4796     specified with `--filename'), and its fields are compared against
4797     the rules specified by the database configuration of the selected
4798     database.  Warnings are given for enumerated fields whose contents
4799     do not contain one of the required values or fields that do not
4800     match required regexps. `--check-initial' is used to verify
4801     initial PRs, rather than proposed edits of existing PRs.
4802
4803`-s'
4804`--submit'
4805     Used to submit a new PR to the database.  The PR is read in and
4806     verified for content; if the PR is valid as an initial PR, it is
4807     then added to the database.  If the submission is successful a
4808     zero exit code is returned.  Otherwise, the reason(s) for the PR
4809     being rejected are printed, and a non-zero exit code is returned.
4810
4811`--show-prnum'
4812     This option is used with the `--submit' option to display the PR
4813     number associated with the submitted PR.
4814
4815The following options require a PR number to be given.
4816
4817`--delete-pr'
4818     Deletes the specified PR from the database.  The PR must be in a
4819     closed state, and not locked.  Only the user _gnats_ (or the user
4820     name specified instead of _gnats_ during the building of GNATS) is
4821     permitted to delete PRs.
4822
4823`-l USERNAME'
4824`--lock=USERNAME'
4825     Locks the PR.  USERNAME is associated with the lock, so the system
4826     administrator can determine who actually placed the lock on the PR.
4827     However, anyone is permitted to remove locks on a PR.  If the
4828     optional `--process' or `-p' option is also given, that process-id
4829     is associated with the lock.
4830
4831`-u'
4832`--unlock'
4833     Unlocks the specified PR.
4834
4835`-a FIELD'
4836`--append=FIELD'
4837
4838`-r FIELD'
4839`--replace=FIELD'
4840     `--append' and `--replace' are used to append or replace content
4841     of a specific field within a PR.  The new field content is read in
4842     from stdin (or from the file specified with the `--filename'
4843     option), and either appended or replaced to the specified field.
4844     The field contents are verified for correctness before the PR is
4845     rewritten.  If the edit is successful, a zero exit status is
4846     returned.  If the edit failed, a non-zero exit status is returned,
4847     and the reasons for the failure are printed to stdout.
4848
4849`-R REASON'
4850`--reason=REASON'
4851     Certain PR fields are configured in the database configuration to
4852     require a short text describing the reason of every change that
4853     happens to them, *Note dbconfig file::.  If you edit a problem and
4854     change any of such fields, you must issue a short text, the REASON
4855     of the change, through this option.  If the option is used and no
4856     change-reason requiring field is actually changed, the option has
4857     no effect.
4858
4859`PR number'
4860     If only a `PR number' is specified with no other options, a
4861     replacement PR is read in (either from stdin or the file specified
4862     with `--filename').  If the PR contents are valid and correct, the
4863     existing PR is replaced with the new PR contents.  If the edit is
4864     successful, a zero exit status is re turned.  If the edit failed, a
4865     non-zero exit status is returned, and the reasons for the failure
4866     are printed to stdout.
4867
4868`-d DATABASE'
4869`--database=DATABASE'
4870     Specifies the database which is to be manipulated.  If no database
4871     is specified, the default database name set when GNATS was built is
4872     used (usually `default').  This option overrides the database
4873     specified in the GNATSDB environment variable.
4874
4875`-f FILENAME'
4876`--filename=FILENAME'
4877     For actions that require reading in a PR or field content, this
4878     specifies the name of a file to read.  If `--filename' is not
4879     specified, the PR or field content is read in from stdin.
4880
4881`-h'
4882`--help'
4883     Prints the usage for `pr-edit'.
4884
4885`-V'
4886`--version'
4887     Prints the version number for `pr-edit'.
4888
4889`pr-edit' can edit PRs across a network, talking to a remote gnatsd.
4890The following options relate to network access:
4891
4892`-H HOST'
4893`--host=HOST'
4894     Hostname of the GNATS server.
4895
4896`-P PORT'
4897`--port=PORT'
4898     The port that the GNATS server runs on.
4899
4900`-v USERNAME'
4901`--username=USERNAME'
4902     Username used to log into the GNATS server.
4903
4904`-w PASSWORD'
4905`--passwd=PASSWORD'
4906     Password used to log into the GNATS server.
4907
4908`-D'
4909`--debug'
4910     Used to debug network connections.
4911
4912   ---------- Footnotes ----------
4913
4914   (1) This approach may seem heavy-handed, but it ensures that changes
4915are not overwritten.
4916
4917
4918File: gnats.info,  Node: diff-prs,  Next: pr-age,  Prev: pr-edit,  Up: Internal utils
4919
49204.8.5 The `diff-prs' tool
4921-------------------------
4922
4923The `diff-prs' tool is invoked as follows:
4924
4925     diff-prs PRFILE1 PRFILE2
4926
4927   `diff-prs' simply reads the PRs contained in PRFILE1 and PRFILE2 and
4928returns a list of the fields that are different between the two.  No
4929output is produced if the PRs are identical.
4930
4931
4932File: gnats.info,  Node: pr-age,  Prev: diff-prs,  Up: Internal utils
4933
49344.8.6 The `pr-age' tool
4935-----------------------
4936
4937The `pr-age' tool reports the time, in days and hours, since the PR
4938arrived.  Usage is
4939
4940     pr-age  [ -d DATABASENAME | --database=DATABASENAME ]
4941             [ -H HOST | --host=HOST ]
4942             [ -P PORT | --port=PORT ]
4943             [ -v USERNAME | --user=USERNAME ]
4944             [ -w PASSWORD | --passwd=PASSWORD ]
4945             [ -h | --help ] [ -V | --version ]
4946
4947   For an explanation of the arguments listed above, please refer to the
4948usage description for `file-pr' (*Note `file-pr': file-pr.).
4949
4950
4951File: gnats.info,  Node: Locations,  Next: gnatsd,  Prev: Management,  Up: Top
4952
4953Appendix A Where GNATS lives
4954****************************
4955
4956We use a few conventions when referring to the installation structure
4957GNATS uses.  These values are adjustable when you build and install
4958GNATS (*note Installing GNATS: Installation.).
4959
4960* Menu:
4961
4962* prefix::
4963* exec-prefix::
4964* gnats-adm::
4965* defaults::                    Default installation locations
4966
4967
4968File: gnats.info,  Node: prefix,  Next: exec-prefix,  Up: Locations
4969
4970A.1 PREFIX
4971==========
4972
4973PREFIX corresponds to the variable `prefix' for `configure', which
4974passes it on to the `Makefile' it creates.  PREFIX sets the root
4975installation directory for "host-independent" files as follows:
4976
4977the directory path of the default database
4978     `PREFIX/com'
4979site-wide configuration files
4980     `PREFIX/etc/gnats'
4981`man' pages
4982     `PREFIX/man'
4983
4984`info' documents
4985     `PREFIX/info'
4986
4987`include' files
4988     `PREFIX/include'
4989
4990_etc..._
4991
4992   The default value for PREFIX is `/usr/local', which can be changed
4993on the command line to `configure' using
4994
4995     configure --prefix=PREFIX ...
4996
4997*Note Configuring and compiling the software: Configure and make.
4998
4999
5000File: gnats.info,  Node: exec-prefix,  Next: gnats-adm,  Prev: prefix,  Up: Locations
5001
5002A.2 EXEC-PREFIX
5003===============
5004
5005EXEC-PREFIX corresponds to the variable `exec-prefix' for `configure',
5006which passes it on to the `Makefile' it creates.  EXEC-PREFIX sets the
5007root installation for "host-dependent" files as follows:
5008
5009GNATS user tools
5010     `EXEC-PREFIX/bin'
5011
5012administrative and support utilities
5013     `EXEC-PREFIX/libexec/gnats'
5014
5015compiled libraries
5016     `EXEC-PREFIX/lib'
5017_etc..._
5018
5019   `configure' supports several more options which allow you to specify
5020in great detail where different files are installed.  The locations
5021given in this appendix do not take into account highly customized
5022installations, but fairly ordinary GNATS installations should be
5023covered by the material here.  For a complete list of options accepted
5024by `configure', run `./configure --help' in the `gnats' subdirectory of
5025the distribution.
5026
5027   Since most installations are not intended to be distributed around a
5028network, the default value for EXEC-PREFIX is the value of `prefix',
5029i.e., `/usr/local'.  However, using EXEC-PREFIX saves space when you
5030are installing a package on several different platforms for which many
5031files are identical; rather than duplicate them for each host, these
5032files can be shared in a common repository, and you can use symbolic
5033links on each host to find the host-dependent files.
5034
5035   Use EXEC-PREFIX in conjunction with PREFIX to share host-independent
5036files, like libraries and `info' documents.  For example:
5037
5038        _for each host:_
5039     configure --prefix=/usr/gnu --exec-prefix=/usr/gnu/H-HOST
5040     make all install ...
5041
5042Using this paradigm, all host-dependent binary files are installed into
5043`/usr/gnu/H-HOST/bin', while files which do not depend on the host type
5044for which they were configured are installed into `/usr/gnu'.
5045
5046   You can then use a different symbolic link for `/usr/gnu' on each
5047host (`/usr' is usually specific to a particular machine; it is always
5048specific to a particular architecture).
5049
5050       _on host-1:_
5051     ln -s /usr/gnu/H-HOST-1 /usr/gnu
5052       _on host-2:_
5053     ln -s /usr/gnu/H-HOST-2 /usr/gnu
5054
5055To the end user, then, placing `/usr/gnu/bin' in her or his `PATH'
5056simply works transparently for each HOST type.
5057
5058   You can change EXEC-PREFIX on the command line to `configure' using
5059
5060     configure --exec-prefix=EXEC-PREFIX ...
5061
5062   We recommend that you consult *Note Using `configure':
5063(configure)Using configure, before attempting this.
5064
5065
5066File: gnats.info,  Node: gnats-adm,  Next: defaults,  Prev: exec-prefix,  Up: Locations
5067
5068A.3 The `gnats-adm' directory
5069=============================
5070
5071Each GNATS database located on a server has its own directory, as
5072listed in the `databases' (*note The `databases' file: databases file.
5073and given when the `mkdb' utility is invoked to initialize the database
5074(*note Initializing a new database: mkdb.).  This directory has several
5075subdirectories, one of which is named `gnats-adm'.  This directory
5076contains all configuration files related to this specific database,
5077including the `categories', `submitters', `responsible', `states',
5078`classes', `dbconfig', `addresses', `states' and `gnatsd.user_access',
5079as well as two files generated and maintained by GNATS, `index' and
5080`current'.
5081
5082
5083File: gnats.info,  Node: defaults,  Prev: gnats-adm,  Up: Locations
5084
5085A.4 Default installation locations
5086==================================
5087
5088PREFIX
5089     defaults to `/usr/local'; change using `configure' (*note
5090     Configuring and compiling the software: Configure and make.).
5091
5092EXEC-PREFIX
5093     defaults to PREFIX; change using `configure' (*note Configuring
5094     and compiling the software: Configure and make.).
5095
5096GNATS installs tools, utilities, and files into the following locations.
5097
5098`EXEC-PREFIX/bin'
5099
5100    `send-pr'
5101          *Note Submitting Problem Reports: send-pr.
5102
5103    `edit-pr'
5104          *Note Editing existing Problem Reports: edit-pr.
5105
5106    `query-pr'
5107          *Note Querying the database: query-pr.
5108
5109`EXEC-PREFIX/libexec/gnats'
5110
5111    `at-pr'
5112          *Note Timely reminders: at-pr.
5113
5114    `check-db'
5115          *Note Checking database health: check-db.
5116
5117    `delete-pr'
5118          Tool for deleting PRs.  Deprecated.  Use the -delete-pr
5119          option of `pr-edit' instead (*note The edit-pr driver:
5120          pr-edit.).
5121
5122    `diff-prs'
5123          *Note The `diff-prs' tool: diff-prs.
5124
5125    `file-pr'
5126          *Note Interface to pr-edit for filing new PRs: file-pr.
5127
5128    `gen-index'
5129          *Note Regenerating the index: gen-index.
5130
5131    `gnatsd'
5132          The GNATS daemon.
5133
5134    `gnats-pwconv'
5135          *Note Converting old password files: gnats-pwconv.
5136
5137    `mail-query'
5138          *Note Setting up mail aliases: Aliases.
5139
5140    `mkcat'
5141          *Note Adding a problem category: mkcat.
5142
5143    `mkdb'
5144          *Note Script for creating new databases: mkdb.
5145
5146    `pr-age'
5147          *Note The `pr-age' tool: pr-age.
5148
5149    `pr-edit'
5150          *Note The main PR processor: pr-edit.
5151
5152    `queue-pr'
5153          *Note Handling incoming traffic: queue-pr.
5154
5155    `rmcat'
5156          *Note Removing categories: rmcat.
5157
5158`EXEC-PREFIX/lib/libiberty.a'
5159     The GNU `libiberty' library.
5160
5161`PREFIX/etc/gnats'
5162
5163    `databases'
5164          *Note The `databases' file: databases file.
5165
5166    `defaults'
5167          *Note Overview of GNATS configuration: GNATS configuration.
5168
5169    `gnatsd.host_access'
5170          *Note The `gnatsd.host_access' file: gnatsd.host_access.
5171
5172    `gnatsd.user_access'
5173          *Note The `gnatsd.user_access' file: gnatsd.user_access.
5174
5175`PREFIX/share/emacs/site-lisp'
5176
5177    `gnats.el'
5178    `gnats.elc'
5179          The Emacs versions of the programs `send-pr', `query-pr',
5180          `edit-pr', and `view-pr'.  *Note The GNATS user tools: GNATS
5181          user tools.  To change this directory you must change the
5182          `lispdir' variable in `Makefile.in'; see *Note Configuring
5183          and compiling the software: Configure and make.
5184
5185`PREFIX/info'
5186
5187    `gnats.info'
5188    `send-pr.info'
5189          The GNATS manuals, in a form readable by `info' (the GNU
5190          hypertext browser).  *Note Reading GNU Online Documentation:
5191          (infoman)Info.
5192
5193`PREFIX/man/man1'
5194`PREFIX/man/man8'
5195
5196    `man' pages for all the GNATS tools and utilities.
5197          *Note The GNATS user tools: GNATS user tools.
5198
5199`Per-database directory'
5200
5201    `gnats-adm'
5202          Administration and configuration data files that define
5203          behaviour of the particular database.  The files
5204
5205         `categories'
5206
5207         `submitters'
5208
5209         `responsible'
5210
5211         `states'
5212
5213         `classes'
5214
5215         `dbconfig'
5216
5217         `addresses'
5218
5219         `states'
5220
5221         `gnatsd.user_access'
5222
5223         `index'
5224               (_This file is created by GNATS._)
5225
5226         `current'
5227               (_This file is created by GNATS._)
5228
5229          exist here.  *Note Other database-specific config files:
5230          Other config files, *Note Administrative data files: Admin
5231          files. and *Note Controlling access to databases: Access
5232          Control.
5233
5234    `gnats-queue'
5235          Incoming Problem Reports are queued here until the next
5236          iteration of `queue-pr -r' (*note Handling incoming traffic:
5237          queue-pr.).
5238
5239    `pending'
5240          If no default category is set, problem reports without a
5241          category are reassigned to the category `pending' and placed
5242          here pending intervention by GNATS administrators.  *Note
5243          GNATS administration: Management.
5244
5245    `CATEGORY'
5246          Each valid category has a corresponding subdirectory in the
5247          database.  All Problem Reports associated with that category
5248          are kept in that subdirectory.
5249
5250
5251
5252File: gnats.info,  Node: gnatsd,  Next: Access Control,  Prev: Locations,  Up: Top
5253
5254Appendix B The GNATS network server - `gnatsd'
5255**********************************************
5256
5257This section describes in details how the GNATS network daemon works.
5258This information is mainly assumed to be useful for developers of GNATS
5259client software.
5260
5261* Menu:
5262
5263* Description of gnatsd::
5264* gnatsd options::
5265* gnatsd command protocol::
5266* gnatsd commands::
5267* gnatsd environment variables::
5268
5269
5270File: gnats.info,  Node: Description of gnatsd,  Next: gnatsd options,  Up: gnatsd
5271
5272B.1 Description of `gnatsd'
5273===========================
5274
5275The `gnatsd' network daemon is used to service remote GNATS requests
5276such as querying PRs, PR creation, deletion, and editing, and
5277miscellaneous database queries.  It uses a simple ASCII-based command
5278protocol (similar to SMTP or POP3) for communicating with remote
5279clients.
5280
5281   It also provides a security model based either on IP-based
5282authentication (generally considered very weak) or username/passwords,
5283where passwords may be in cleartext, UNIX crypt or MD5 hash format.
5284Access through `gnatsd' is granted according to certain predefined
5285"access levels".  Access levels are further discussed in *Note
5286Controlling access to databases: Access Control.  It should be
5287emphasized that security has not been a focus of development until now,
5288but future versions are expected to address this more thoroughly.
5289
5290   All of the GNATS clients are capable of communicating via the GNATS
5291remote protocol to perform their functions.
5292
5293   `gnatsd' is usually started from the inetd facility and should run as
5294the `gnats' user (the actual username of this user is configurable
5295during installation, *note Configuring and compiling the software:
5296Configure and make. for details.)
5297
5298
5299File: gnats.info,  Node: gnatsd options,  Next: gnatsd command protocol,  Prev: Description of gnatsd,  Up: gnatsd
5300
5301B.2 `gnatsd' options
5302====================
5303
5304The daemon supports the following command-line options:
5305
5306     gnatsd [--database database | -d database]
5307            [--not-inetd | -n] [--max-access-level LEVEL | -m LEVEL]
5308            [--version | -V] [--help | -h]
5309
5310`-V, --version'
5311     Prints the program version to stdout and exits.
5312
5313`-h, --help'
5314     Prints a short help text to stdout and exits.
5315
5316`-d, --database'
5317     Specifies the default database which is to be serviced by this
5318     invocation of `gnatsd'. (The selected database may be changed via
5319     the `CHDB' command; the name set with this option is simply the
5320     default if no `CHDB' command is issued.)  If no database is
5321     specified, the database named default is assumed. This option
5322     overrides the database specified in the `GNATSDB' environment
5323     variable.
5324
5325`-n, --not-inetd'
5326     As its name suggests, indicates that `gnatsd' is not being invoked
5327     from inetd. This can be used when testing `gnatsd', or if it is
5328     being run via ssh or some other mechanism.
5329
5330     This has the effect of using the local hostname where `gnatsd' is
5331     being invoked for authentication purposes, rather than the remote
5332     address of the connecting client.
5333
5334`--max-access-level, -m'
5335     Specifies the maximum access level that the connecting client can
5336     authenticate to.  Authentication is as normal but if the user or
5337     host authenticates at a higher level, access level is still forced
5338     to this level.  See *Note Controlling access to databases: Access
5339     Control. for details on access levels.
5340
5341
5342File: gnats.info,  Node: gnatsd command protocol,  Next: gnatsd commands,  Prev: gnatsd options,  Up: gnatsd
5343
5344B.3 `gnatsd' command protocol
5345=============================
5346
5347Commands are issued to `gnatsd' as one or more words followed by a
5348carriage-return/linefeed pair.  For example, the `CHDB' (change
5349database) command is sent as `CHDB database<CR><LF>' (the `CRLF' will
5350not be explicitly written for future examples.)
5351
5352   Replies from `gnatsd' are returned as one or more response lines
5353containing a 3-digit numeric code followed by a human-readable string;
5354the line is terminated with a `<CR><LF>' pair.  For example, one
5355possible response to the `CHDB' command above would be:
5356
5357     210 Now accessing GNATS database 'database'.
5358
5359   The three-digit code is normally followed by a single ASCII space
5360(character 0x20).  However, if additional response lines are to be
5361returned from the server, there will be a single dash `-' instead of
5362the space character after the three-digit code.
5363
5364   Response code values are divided into ranges.  The first digit
5365reflects the general type of response (such as "successful" or
5366"error"), and the subsequent digits identify the specific type of
5367response.
5368
5369CODES 200-299
5370     Positive response indicating that the command was successful.  No
5371     subsequent data will be transmitted with the response.  In
5372     particular, code 210 (`CODE_OK') is used as the positive result
5373     code for most simple commands.
5374
5375     Commands that expect additional data from the client (such as
5376     `SUBM' or `VFLD') use a two-step mechanism for sending the data.
5377     The server will respond to the initial command with either a 211
5378     (`CODE_SEND_PR') or 212 (`CODE_SEND_TEXT') response line, or an
5379     error code if an error occurred with the initial command.  The
5380     client is then expected to send the remaining data using the same
5381     quoting mechanism as described for server responses in the 300-349
5382     range.  The server will then send a final response line to the
5383     command.
5384
5385CODES 300-399
5386     Positive response indicating that the query request was
5387     successful, and that a PR or other data will follow.  Codes
5388     300-349 are used when transmitting PRs, and 350-399 are used for
5389     other responses.
5390
5391     Codes in the 300-349 range are followed by a series of
5392     `CRLF'-terminated lines containing the command response, usually a
5393     PR.  The final line of the result is a single period `.'.  Result
5394     lines that begin with a period have an extra period prepended to
5395     them.
5396
5397     Codes in the 350-399 range use a different scheme for sending their
5398     responses. The three-digit numeric code will be followed by either
5399     a dash `-' or a single space.  If the code is followed by a dash,
5400     that indicates that another response line will follow.  The final
5401     line of the response has a single space after the three-digit code.
5402
5403     In previous versions of the protocol the first line of a
5404     `CODE_INFORMATION' (310) response was to be ignored.  This is no
5405     longer the case.  Instead, any lines marked with code
5406     `CODE_INFORMATION_FILLER' (351) are to be ignored.  This allows the
5407     server to transmit additional headers or other human-readable text
5408     that can be safely ignored by the clients.
5409
5410CODES 400-599
5411     An error occurred, usually because of invalid command parameters or
5412     invalid input from the client, missing arguments to the command,
5413     or a command was issued out of sequence.  The human-readable
5414     message associated with the response line describes the general
5415     problem encountered with the command.
5416
5417     Multiple error messages may be returned from a command; in this
5418     case the `-' continuation character is used on all but the last
5419     response line.
5420
5421CODES 600-799
5422     An internal error occurred on the server, a timeout occurred
5423     reading data from the client, or a network failure occurred.
5424     These errors are of the "this should not occur" nature, and
5425     retrying the operation may resolve the problem.  Fortunately, most
5426     GNATS transactions are idempotent; unfortunately, locking the
5427     database or a PR are not repeatable actions (we cannot determine
5428     if an existing lock is the one we originally requested, or someone
5429     else's).
5430
5431
5432File: gnats.info,  Node: gnatsd commands,  Next: gnatsd environment variables,  Prev: gnatsd command protocol,  Up: gnatsd
5433
5434B.4 `gnatsd' commands
5435=====================
5436
5437Note that the set of GNATS commands and their responses is somewhat
5438inconsistent and is very much in flux.  At present the GNATS clients
5439are rather simple-minded and not very strict about processing
5440responses.  For example, if the server were to issue a code 300
5441(`CODE_PR_READY') response to a `CHDB' command, the client would
5442happily expect to see a PR appear (and would print it out if one was
5443sent).
5444
5445   It is thus suggested that any clients that use the GNATS protocol be
5446equally flexible about the way received responses are handled; in
5447particular, only the first digit of the response code should be assumed
5448to be meaningful, although subsequent digits are needed in some cases
5449(codes 300-399).  No attempt should be made to parse the message strings
5450on error response lines; they are only intended to be read by humans,
5451and will be changed on a regular basis.
5452
5453   Almost every command may result in the response 440
5454(`CODE_CMD_ERROR').  This indicates that there was a problem with the
5455command arguments, usually because of insufficient or too many
5456arguments being specified.
5457
5458   Access to most `gnatsd' commands requires a certain "access level".
5459For details of this, see *Note Privileged `gnatsd' commands: Privileged
5460gnatsd commands.
5461
5462`USER [USERID PASSWORD]'
5463     Specifies the userid and password for database access.  Either
5464     both a username and password must be specified, or they both may
5465     be omitted; in the latter case, the current access level is
5466     returned.
5467
5468     The possible server responses are:
5469
5470     `350 (CODE_INFORMATION)'
5471     The current access level is specified.
5472
5473     `422 (CODE_NO_ACCESS)'
5474     A matching username and password could not be found.
5475
5476     `200 (CODE_OK)'
5477     A matching username and password was found, and the login was
5478     successful.
5479
5480`QUIT'
5481     Requests that the connection be closed. Possible responses:
5482
5483     `201 (CODE_CLOSING)'
5484     Normal exit.
5485
5486     The `QUIT' command has the dubious distinction of being the only
5487     command that cannot fail.
5488
5489`LIST LIST TYPE'
5490     Describes various aspects of the database.  The lists are returned
5491     as a list of records, one per line.  Each line may contain a
5492     number of colon-separated fields.
5493
5494     Possible values for LIST TYPE include
5495
5496     `Categories'
5497     Describes the legal categories for the database.
5498
5499     `Submitters'
5500     Describes the set of submitters for the database.
5501
5502     `Responsible'
5503     Lists the names in the responsible administrative file, including
5504     their full names and email addresses.
5505
5506     `States'
5507     Lists the states listed in the state administrative file, including
5508     the state type (usually blank for most states; the closed state
5509     has a special type).
5510
5511     `FieldNames'
5512     Lists the entire set of PR fields.
5513
5514     `InitialInputFields'
5515     Lists the fields that _should_ be present when a PR is initially
5516     entered.
5517
5518     `InitialRequiredFields'
5519     Lists fields that _have_ to be present and nonempty when a PR is
5520     initially entered (fields containing only blank characters such as
5521     spaces or newlines are considered empty.)
5522
5523     `Databases'
5524     Lists the set of databases.
5525
5526     The possible responses are:
5527
5528     `301 (CODE_TEXT_READY)'
5529     Normal response, followed by the records making up the list as
5530     described above.
5531
5532     `416 (CODE_INVALID_LIST)'
5533     The requested list does not exist.
5534
5535`FTYP FIELD [FIELD ...]'
5536     Describes the type of data held in the field(s) specified with the
5537     command.  The currently defined data types are:
5538
5539     `Text'
5540     A plain text field, containing exactly one line.
5541
5542     `MultiText'
5543     A text field possibly containing multiple lines of text.
5544
5545     `Enum'
5546     An enumerated data field; the value is restricted to one entry out
5547     of a list of values associated with the field.
5548
5549     `MultiEnum'
5550     The field contains one or more enumerated values.  Values are
5551     separated with spaces or colons `:'.
5552
5553     `Integer'
5554     The field contains an integer value, possibly signed.
5555
5556     `Date'
5557     The field contains a date.
5558
5559     `TextWithRegex'
5560     The value in the field must match one or more regular expressions
5561     associated with the field.
5562
5563     The possible responses are:
5564
5565     `350 (CODE_INFORMATION)'
5566     The normal response; the supplied text is the data type.
5567
5568     `410 (CODE_INVALID_FIELD_NAME)'
5569     The specified field does not exist.
5570
5571     If multiple field names were given, multiple response lines will be
5572     sent, one for each field, using the standard continuation
5573     protocol; each response except the last will have a dash `-'
5574     immedately after the response code.
5575
5576`FTYPINFO FIELD PROPERTY'
5577     Provides field-type-related information.  Currently, only the
5578     property `separators' for MultiEnum fields is supported.  When
5579     `separators' is specified, the possible return codes are:
5580
5581     `350 (CODE_INFORMATION)' A proper MultiEnum FIELD was specified
5582     and the returned text is the string of separators specified for
5583     the field in the dbconfig file (*note Field datatypes::) quoted in
5584     `'''s.
5585
5586     `435 (CODE_INVALID_FTYPE_PROPERTY)' The `separators' property is
5587     not defined for this field, i.e.  the specified FIELD is not of
5588     type MultiEnum.
5589
5590     Currently, specifying a different property than `separators'
5591     results in return code 435 as above.
5592
5593`FDSC FIELD [FIELD ... ]'
5594     Returns a human-readable description of the listed field(s).  The
5595     possible responses are:
5596
5597     `350 (CODE_INFORMATION)' The normal response; the supplied text is
5598     the field description.
5599
5600     `410 (CODE_INVALID_FIELD_NAME)' The specified field does not exist.
5601
5602     Like the `FVLD' command, the standard continuation protocol will be
5603     used if multiple fields were specified with the command.
5604
5605`FIELDFLAGS FIELD [FIELD ... ]'
5606     Returns a set of flags describing the specified field(s).  The
5607     possible responses are either
5608
5609     `410 (CODE_INVALID_FIELD_NAME)'
5610     meaning that the specified field is invalid or nonexistent, or
5611
5612     `350 (CODE_INFORMATION)'
5613     which contains the set of flags for the field.  The flags may be
5614     blank, which indicate that no special flags have been set for this
5615     field.
5616
5617     Like the `FDSC' and `FTYP' commands, multiple field names may be
5618     listed with the command, and a response line will be returned for
5619     each one in the order that the fields appear on the command line.
5620
5621     The flags include:
5622
5623     `textsearch'
5624     The field will be searched when a text field search is requested.
5625
5626     `allowAnyValue'
5627     For fields that contain enumerated values, any legal value may be
5628     used in the field, not just ones that appear in the enumerated
5629     list.
5630
5631     `requireChangeReason'
5632     If the field is edited, a reason for the change must be supplied in
5633     the new PR text describing the reason for the change. The reason
5634     must be supplied as a multitext PR field in the new PR whose name
5635     is `field-Changed-Why' (where `field' is the name of the field
5636     being edited).
5637
5638     `readonly'
5639     The field is read-only, and cannot be edited.
5640
5641`FVLD FIELD'
5642     Returns one or more regular expressions or strings that describe
5643     the valid types of data that can be placed in field.  Exactly what
5644     is returned is dependent on the type of data that can be stored in
5645     the field.  For most fields a regular expression is returned; for
5646     enumerated fields, the returned values are the list of legal
5647     strings that can be held in the field.
5648
5649     The possible responses are:
5650
5651     `301 (CODE_TEXT_READY)'
5652     The normal response, which is followed by the list of regexps or
5653     strings.
5654
5655     `410 (CODE_INVALID_FIELD_NAME)' The specified field does not exist.
5656
5657`VFLD FIELD'
5658     `VFLD' can be used to validate a given value for a field in the
5659     database.  The client issues the `VFLD' command with the name of
5660     the field to validate as an argument.  The server will either
5661     respond with `212 (CODE_SEND_TEXT)', or `410
5662     (CODE_INVALID_FIELD_NAME)' if the specified field does not exist.
5663
5664     Once the `212' response is received from the server, the client
5665     should then send the line(s) of text to be validated, using the
5666     normal quoting mechanism described for PRs.  The final line of
5667     text is followed by a line containing a single period, again as
5668     when sending PR text.
5669
5670     The server will then either respond with `210 (CODE_OK)',
5671     indicating that the text is acceptable, or one or more error codes
5672     describing the problems with the field contents.
5673
5674`INPUTDEFAULT FIELD [FIELD ... ]'
5675     Returns the suggested default value for a field when a PR is
5676     initially created.  The possible responses are either `410
5677     (CODE_INVALID_FIELD_NAME)', meaning that the specified field is
5678     invalid or nonexistent, or `350 (CODE_INFORMATION)' which contains
5679     the default value for the field.
5680
5681     Like the `FDSC' and `FTYP' commands, multiple field names may be
5682     listed with the command, and a response line will be returned for
5683     each one in the order that the fields appear on the command line.
5684
5685`RSET'
5686     Used to reset the internal server state.  The current query
5687     expression is cleared, and the index of PRs may be reread if it
5688     has been updated since the start of the session.  The possible
5689     responses are:
5690
5691     `200 (CODE_OK)'
5692     The state has been reset.
5693
5694     `440 (CODE_CMD_ERROR)'
5695     One or more arguments were supplied to the command.
5696
5697     `6xx (internal error)'
5698     There were problems resetting the state (usually because the index
5699     could not be reread).  The session will be immediately terminated.
5700
5701`LKDB'
5702     Locks the main GNATS database.  No subsequent database locks will
5703     succeed until the lock is removed.  Sessions that attempt to write
5704     to the database will fail.  The possible responses are:
5705
5706     `200 (CODE_OK)' The lock has been established.
5707
5708     `440 (CODE_CMD_ERROR)' One or more arguments were supplied to the
5709     command.
5710
5711     `431 (CODE_GNATS_LOCKED)' The database is already locked, and the
5712     lock could not be obtained after 10 seconds.
5713
5714     `6xx (internal error)' An internal error occurred, usually because
5715     of permission or other filesystem-related problems. The lock may
5716     or may not have been established.
5717
5718`UNDB'
5719     Unlocks the database.  Any session may steal a database lock; no
5720     checking of any sort is done.  The possible responses are:
5721
5722     `200 (CODE_OK)'
5723     The lock has been removed.
5724
5725     `432 (CODE_GNATS_NOT_LOCKED)'
5726     The database was not locked.
5727
5728     `440 (CODE_CMD_ERROR)'
5729     One or more arguments were supplied to the command.
5730
5731     `6xx (internal error)'
5732     The database lock could not be removed, usually because of
5733     permissions or other filesystem-related issues.
5734
5735`LOCK PR USER [PID]'
5736     Locks the specified PR, marking the lock with the USER name and
5737     the optional PID. (No checking is done that the USER or PID
5738     arguments are valid or meaningful; they are simply treated as
5739     strings.)
5740
5741     The `EDIT' command requires that the PR be locked before it may be
5742     successfully executed.  However, it does not require that the lock
5743     is owned by the editing session, so the usefulness of the lock is
5744     simply as an advisory measure.
5745
5746     The `APPN' and `REPL' commands lock the PR as part of the editing
5747     process, and they do not require that the PR be locked before they
5748     are invoked.
5749
5750     The possible responses are:
5751
5752     `440 (CODE_CMD_ERROR)'
5753     Insufficient or too many arguments were specified to the command.
5754
5755     `300 (CODE_PR_READY)'
5756     The lock was successfully obtained; the text of the PR (using the
5757     standard quoting mechanism for PRs) follows.
5758
5759     `400 (CODE_NONEXISTENT_PR)'
5760     The PR specified does not exist.
5761
5762     `430 (CODE_LOCKED_PR)'
5763     The PR is already locked by another session.
5764
5765     `6xx (internal error)'
5766     The PR lock could not be created, usually because of permissions or
5767     other filesystem-related issues.
5768
5769`UNLK PR'
5770     Unlocks PR.  Any user may unlock a PR, as no checking is done to
5771     determine if the requesting session owns the lock.
5772
5773     The possible responses are:
5774
5775     `440 (CODE_CMD_ERROR)'
5776     Insufficient or too many arguments were specified to the command.
5777
5778     `200 (CODE_OK)'
5779     The PR was successfully unlocked.
5780
5781     `433 (CODE_PR_NOT_LOCKED)'
5782     The PR was not locked.
5783
5784     `6xx (internal error)'
5785     The PR could not be unlocked, usually because of permission or
5786     other filesystem-related problems.
5787
5788`DELETE PR'
5789     Deletes the specified PR. The user making the request must have
5790     admin privileges (*note Controlling access to databases: Access
5791     Control.).  If successful, the PR is removed from the filesystem
5792     and the index file; a gap will be left in the numbering sequence
5793     for PRs.  No checks are made that the PR is closed.
5794
5795     The possible responses are:
5796
5797     `200 (CODE_OK)'
5798     The PR was successfully deleted.
5799
5800     `422 (CODE_NO_ACCESS)'
5801     The user requesting the delete does not have admin privileges.
5802
5803     `430 (CODE_LOCKED_PR)'
5804     The PR is locked by another session.
5805
5806     `431 (CODE_GNATS_LOCKED)'
5807     The database has been locked, and no PRs may be updated until the
5808     lock is cleared.
5809
5810     `6xx (internal error)'
5811     The PR could not be successfully deleted, usually because of
5812     permission or other filesystem-related problems.
5813
5814`CHEK [initial]'
5815     Used to check the text of an entire PR for errors.  Unlike the
5816     `VFLD' command, it accepts an entire PR at once instead of the
5817     contents of an individual field.
5818
5819     The `initial' argument indicates that the PR text to be checked is
5820     for a PR that will be newly created, rather than an edit or
5821     replacement of an existing PR.
5822
5823     After the `CHEK' command is issued, the server will respond with
5824     either a `440 (CODE_CMD_ERROR)' response indicating that the
5825     command arguments were incorrect, or a `211 (CODE_SEND_PR)'
5826     response code will be sent.
5827
5828     Once the `211' response is received from the server, the client
5829     should send the PR using the normal PR quoting mechanism; the
5830     final line of the PR is then followed by a line containing a
5831     single period, as usual.
5832
5833     The server will then respond with either a `200 (CODE_OK)'
5834     response, indicating there were no problems with the supplied
5835     text, or one or more error codes listing the problems with the PR.
5836
5837`EDIT PR'
5838     Verifies the replacement text for PR.  If the command is
5839     successful, the contents of PR are completely replaced with the
5840     supplied text.  The PR must previously have been locked with the
5841     `LOCK' command.
5842
5843     The possible responses are:
5844
5845     `431 (CODE_GNATS_LOCKED)'
5846     The database has been locked, and no PRs may be updated until the
5847     lock is cleared.
5848
5849     `433 (CODE_PR_NOT_LOCKED)'
5850     The PR was not previously locked with the `LOCK' command.
5851
5852     `400 (CODE_NONEXISTENT_PR)'
5853     The specified PR does not currently exist.  The `SUBM' command
5854     should be used to create new PRs.
5855
5856     `211 (CODE_SEND_PR)'
5857     The client should now transmit the replacement PR text using the
5858     normal PR quoting mechanism.  After the PR has been sent, the
5859     server will respond with either `200 (CODE_OK)' indicating that
5860     the edit was successful, or one or more error codes listing
5861     problems either with the replacement PR text or errors encountered
5862     while updating the PR file or index.
5863
5864`EDITADDR ADDRESS'
5865     Sets the e-mail address of the person communicating with `gnatsd'.
5866     The command requires at least the `edit' access level.
5867
5868     The possible responses are:
5869
5870     `200 (CODE_OK)'
5871     The address was successfully set.
5872
5873     `440 (CODE_CMD_ERROR)'
5874     Invalid number of arguments were supplied.
5875
5876`APPN PR FIELD'
5877`REPL PR FIELD'
5878     Appends to or replaces the contents of FIELD in PR with the
5879     supplied text.  The command returns a `201 (CODE_SEND_TEXT)'
5880     response; the client should then transmit the new field contents
5881     using the standard PR quoting mechanism.  After the server has
5882     read the new contents, it then attempts to make the requested
5883     change to the PR.
5884
5885     The possible responses are:
5886
5887     `200 (CODE_OK)'
5888     The PR field was successfully changed.
5889
5890     `400 (CODE_NONEXISTENT_PR)'
5891     The PR specified does not exist.
5892
5893     `410 (CODE_INVALID_FIELD_NAME)'
5894     The specified field does not exist.
5895
5896     `402 (CODE_UNREADABLE_PR)'
5897     The PR could not be read.
5898
5899     `431 (CODE_GNATS_LOCKED)'
5900     The database has been locked, and no PRs may be updated until the
5901     lock is cleared.
5902
5903     `430 (CODE_LOCKED_PR)'
5904     The PR is locked, and may not be altered until the lock is cleared.
5905
5906     `413 (CODE_INVALID_FIELD_CONTENTS)'
5907     The supplied (or resulting) field contents are not valid for the
5908     field.
5909
5910     `6xx (internal error)'
5911     An internal error occurred, usually because of permission or other
5912     filesystem-related problems.  The PR may or may not have been
5913     altered.
5914
5915`SUBM'
5916     Submits a new PR into the database.  The supplied text is verified
5917     for correctness, and if no problems are found a new PR is created.
5918
5919     The possible responses are:
5920
5921     `431 (CODE_GNATS_LOCKED)'
5922     The database has been locked, and no PRs may be submitted until the
5923     lock is cleared.
5924
5925     `211 (CODE_SEND_PR)'
5926     The client should now transmit the new PR text using the normal
5927     quoting mechanism.  After the PR has been sent, the server will
5928     respond with either `351 (CODE_INFORMATION_FILLER)' and `350
5929     (CODE_INFORMATION)' responses indicating that the new PR has been
5930     created and supplying the number assigned to it, or one or more
5931     error codes listing problems with the new PR text.
5932
5933`CHDB DATABASE'
5934     Switches the current database to the name specified in the command.
5935
5936     The possible responses are:
5937
5938     `422 (CODE_NO_ACCESS)'
5939     The user does not have permission to access the requested database.
5940
5941     `417 (CODE_INVALID_DATABASE)'
5942     The database specified does not exist, or one or more configuration
5943     errors in the database were encountered.
5944
5945     `220 (CODE_OK)'
5946     The current database is now DATABASE.  Any operations performed
5947     will now be applied to DATABASE.
5948
5949`DBLS'
5950     Lists the known set of databases.
5951
5952     The possible responses are:
5953
5954     `6xx (internal error)'
5955     An internal error was encountered while trying to obtain the list
5956     of available databases, usually due to lack of permissions or other
5957     filesystem-related problems, or the list of databases is empty.
5958
5959     `301 (CODE_TEXT_READY)'
5960     The list of databases follows, one per line, using the standard
5961     quoting mechanism.  Only the database names are sent.
5962
5963     The `gnatsd' access level `listdb' denies access until the user
5964     has authenticated with the USER command.  The only other command
5965     available at this access level is `DBLS'.  This access level
5966     provides a way for a site to secure its GNATS databases while still
5967     providing a way for client tools to obtain a list of the databases
5968     for use on login screens etc.  *Note Controlling access to
5969     databases: Access Control.
5970
5971`DBDESC DATABASE'
5972     Returns a human-readable description of the specified DATABASE.
5973
5974     Responses include:
5975
5976     `6xx (internal error)'
5977     An internal error was encountered while trying to read the list of
5978     available databases, usually due to lack of permissions or other
5979     filesystem-related problems, or the list of databases is empty.
5980
5981     `350 (CODE_INFORMATION)'
5982     The normal response; the supplied text is the database description.
5983
5984     `417 (CODE_INVALID_DATABASE)'
5985     The specified database name does not have an entry.
5986
5987`EXPR QUERY EXPRESSION'
5988     Specifies a QUERY EXPRESSION used to limit which PRs are returned
5989     from the `QUER' command.  The expression uses the normal query
5990     expression syntax, (*note Query expressions::).
5991
5992     Multiple `EXPR' commands may be issued; the expressions are boolean
5993     ANDed together.
5994
5995     Expressions are cleared by the `RSET' command.
5996
5997     Possible responses include:
5998
5999     `415 (CODE_INVALID_EXPR)'
6000     The specified expression is invalid, and could not be parsed.
6001
6002     `200 (CODE_OK)'
6003     The expression has been accepted and will be used to limit the
6004     results returned from `QUER'.
6005
6006`QFMT QUERY FORMAT'
6007     Use the specified QUERY FORMAT to format the output of the `QUER'
6008     command.  The query format may be either the name of a query
6009     format known to the server (*note Named query definitions::), or an
6010     actual query format (*note Formatting query-pr output::).  The
6011     possible responses are:
6012
6013     `200 (CODE_OK)'
6014     The normal response, which indicates that the query format is
6015     acceptable.
6016
6017     `440 (CODE_CMD_ERROR)'
6018     No query format was supplied.
6019
6020     `418 (CODE_INVALID_QUERY_FORMAT)'
6021     The specified query format does not exist, or could not be parsed.
6022
6023`QUER [PR] [PR] [...]'
6024     Searches the contents of the database for PRs that match the
6025     (optional) specified expressions with the `EXPR' command. If no
6026     expressions were specified with `EXPR', the entire set of PRs is
6027     returned.
6028
6029     If one or more PRs are specified on the command line, only those
6030     PRs will be searched and/or output.
6031
6032     The format of the output from the command is determined by the
6033     query format selected with the `QFMT' command.
6034
6035     The possible responses are:
6036
6037     `418 (CODE_INVALID_QUERY_FORMAT)'
6038     A valid format was not specified with the `QFMT' command prior to
6039     invoking `QUER'.
6040
6041     `300 (CODE_PR_READY)'
6042     One or more PRs will be output using the requested query format.
6043     The PR text is quoted using the normal quoting mechanisms for PRs.
6044
6045     `220 (CODE_NO_PRS_MATCHED)'
6046     No PRs met the specified criteria.
6047
6048`ADMV FIELD KEY [SUBFIELD]'
6049     Returns an entry from an administrative data file associated with
6050     FIELD. KEY is used to look up the entry in the data file. If
6051     SUBFIELD is specified, only the value of that subfield is
6052     returned; otherwise, all of the fields in the adm data file are
6053     returned, separated by colons `:'.
6054
6055     The responses are:
6056
6057     `410 (CODE_INVALID_FIELD_NAME)' The specified field does not exist.
6058
6059     `221 (CODE_NO_ADM_ENTRY)' An adm entry matching the key was not
6060     found, or the field does not have an adm file associated with it.
6061
6062     `350 (CODE_INFORMATION)' The normal response; the supplied text is
6063     the requested field(s).
6064
6065
6066File: gnats.info,  Node: gnatsd environment variables,  Prev: gnatsd commands,  Up: gnatsd
6067
6068B.5 `gnatsd' environment variables
6069==================================
6070
6071`gnatsd' supports the `GNATSDB' environment varable, *Note
6072Environment::, in almost the same way as the GNATS tools do.  This
6073variable is used to determine which database to use.  For a local
6074database, it contains the name of the database to access. `gnatsd'
6075cannot service remote databases (though it might be interesting if it
6076could) so the database is always assumed to be local.
6077
6078   If `GNATSDB' is not set and the `--database' option is not supplied,
6079it is assumed that the database is local and that its name is `default'.
6080
6081
6082File: gnats.info,  Node: Access Control,  Next: Regexps,  Prev: gnatsd,  Up: Top
6083
6084Appendix C Controlling access to databases
6085******************************************
6086
6087* Menu:
6088
6089* Overview::
6090* Overall gnatsd access level::
6091* gnatsd.host_access::           Per-host access settings
6092* gnatsd.user_access::           Access levels per user
6093* Privileged gnatsd commands::
6094
6095
6096File: gnats.info,  Node: Overview,  Next: Overall gnatsd access level,  Up: Access Control
6097
6098C.1 Overview
6099============
6100
6101GNATS supports granting various levels of access to the GNATS databases
6102served by the network daemon, `gnatsd'.
6103
6104   GNATS access can be controlled at these levels:
6105
6106`deny'
6107     gnatsd closes the connection
6108
6109`none'
6110     no further access until userid and password given
6111
6112`listdb'
6113     only listing of available databases is allowed
6114
6115`view'
6116     query and view PRs with Confidential=no only
6117
6118`viewconf'
6119     query and view PRs with Confidential=yes
6120
6121`edit'
6122     full edit access
6123
6124`admin'
6125     full admin access
6126
6127These access levels are used in the following settings:
6128
6129   * overall gnatsd access level
6130
6131   * overall access level set by host name or IP address
6132
6133   * overall access level set by userid and password
6134
6135   * per-database access level set by userid and password
6136
6137
6138File: gnats.info,  Node: Overall gnatsd access level,  Next: gnatsd.host_access,  Prev: Overview,  Up: Access Control
6139
6140C.2 Overall `gnatsd' access level
6141=================================
6142
6143The overall `gnatsd' access level is set by starting `gnatsd' with the
6144option
6145
6146     `-m' LEVEL or `--maximum-access-level'=LEVEL,
6147
6148where LEVEL is one of the six access levels listed above.  This
6149restricts any access to the GNATS daemon to levels up to and including
6150LEVEL, regardless of the settings in the access control files discussed
6151below.  If this option is left out, any access levels set in the access
6152control files will be allowed.
6153
6154   The discussion below assumes that the pre-build configure of GNATS
6155was done without altering the default values for the
6156`--with-gnatsd-user-access-file' and `--with-gnatsd-host-access-file'
6157options.  If non-default values were given, substitute as appropriate
6158below.
6159
6160
6161File: gnats.info,  Node: gnatsd.host_access,  Next: gnatsd.user_access,  Prev: Overall gnatsd access level,  Up: Access Control
6162
6163C.3 Overall access levels per host
6164==================================
6165
6166The host access file (by default
6167`/usr/local/etc/gnats/gnatsd.host_access') controls overall access
6168levels on a per-host basis, meaning that settings in this file apply
6169across all databases on the server.  Entries in this file are in the
6170following format:
6171
6172   HOST:ACCESS-LEVEL:WHATEVER
6173
6174HOST is the hostname or IP address of the host contacting gnatsd.
6175Wildcard characters are supported: `*' matches anything; `?' matches
6176any single character.  By using wildcards, you can specify access
6177levels for entire network subnets and domains.  Note that when GNATS
6178authenticates hosts, it reads the entries in this file in sequence
6179until a match is found.  This means that wildcard entries must be
6180placed near the end of the file, otherwise, they will override
6181non-wildcard entries appearing after the wildcard ones.
6182
6183   The second field is the access level of HOST.  The default is
6184`deny'.  If the user's hostname isn't in the file or its access level
6185is set to `deny', the connection is closed immediately.
6186
6187   GNATS currently doesn't make use of the third field. Remember to
6188still include the second `:' on the line if you choose to leave the
6189third field empty.
6190
6191   Whenever a `CHDB' command is processed (or defaulted), the user's
6192access level is set to the level for their host, as determined by the
6193values in the `gnatsd.host_access' file.  However, even if a host is
6194given the `none' access level, an individual can still give the `USER'
6195command to possibly gain a higher (but never lower) access than is set
6196for their host.  The gnatsd `USER' command takes two arguments: `USER
6197<userid> <passwd>'.
6198
6199
6200File: gnats.info,  Node: gnatsd.user_access,  Next: Privileged gnatsd commands,  Prev: gnatsd.host_access,  Up: Access Control
6201
6202C.4 Access levels per user
6203==========================
6204
6205Access levels per user can be set both across all databases on the
6206server or on a per-database basis.  The `gnatsd.user_access' file in a
6207database's `gnats-adm' directory specifies the user access rules for
6208that database.  If it doesn't exist, or doesn't contain the user name
6209given to `gnatsd', then the overall user access file (by default
6210`/usr/local/etc/gnats/gnatsd.user_access') specifying the per-user
6211access levels across all the databases on the server is checked.
6212
6213   The user access files can only _increase_ the access level defined
6214in the host access files for the given host, they can never lower it.
6215
6216   If the access level is `none' after processing the userid and
6217password, the connection is closed.
6218
6219   The `gnatsd.user_access' files can contain plain text passwords, in
6220such a case they should be owned by the GNATS user with file permission
6221600.
6222
6223   Wildcard characters are supported for the userid and password with
6224plain text passwords.  A null string or `*' matches anything; `?'
6225matches any one character.  Note that when GNATS authenticates users,
6226it reads the entries in this file in sequence until a match is found.
6227This means that wildcard entries must be placed near the end of the
6228file, otherwise, they will override non-wildcard entries appearing
6229after the wildcard ones.
6230
6231   Entries in the database-specific `gnatsd.user_access' user access
6232file in the `gnats-adm' directory of the database have the following
6233general format:
6234
6235   USERID:PASSWORD:ACCESS-LEVEL
6236
6237   The overall `gnatsd.user_access' user access file adds a fourth
6238DATABASES field:
6239
6240   USERID:PASSWORD:ACCESS-LEVEL:DATABASES
6241
6242PASSWORD should either be in plain text, DES `crypt()'(1) or MD5 hash
6243format(2).
6244
6245   If the password is in plain text format, it must be prefixed by
6246`$0$' and if it is in MD5 format, it needs to be prefixed by the string
6247`$1$'.(3) Passwords encrypted by `crypt()' should have no prefix. If no
6248password is given then users can login with an empty password string.
6249
6250   A `gnats-passwd' tool to manage `gnatsd.user_access' files is
6251planned.  In the meantime, `crypt()' passwords can be generated by
6252using standard UNIX passwords tools, while MD5 passwords can be
6253generated with the following little Perl snippet:
6254
6255     perl -e 'use Crypt::PasswdMD5 ; print Crypt::PasswdMD5::unix_md5_crypt
6256     "PASSWORD" , time() % 100000000'
6257
6258If your Perl installation doesn't have the Crypt module installed, you
6259need to install it.  On most systems, the following command achieves
6260this:
6261
6262     perl -MCPAN -e 'install Crypt::PasswdMD5'
6263
6264   A tool for conversion of pre-version 4 `gnatsd.user_access' files is
6265distributed with GNATS 4.  *Note Converting old password files:
6266gnats-pwconv.
6267
6268The ACCESS-LEVEL field should contain one of the values listed at the
6269beginning of this appendix.  This overrides (increases but never
6270lowers) the access level given as the default for the user's host in the
6271global gnatsd.host_access file.
6272
6273   The following shows an example `gnatsd.user_access' file with plain
6274text passwords:
6275
6276     rickm:$0$ruckm:edit
6277     pablo:$0$pueblo:view
6278     *::none
6279
6280And this is the same file with MD5-encrypted passwords:
6281     rickm:$1$92388613$D7ZIYikzTUqd./dODTFrI.:edit
6282     pablo:$1$92388652$QRfAhIBG5elT.FQjQKhj80:view
6283     *::none
6284
6285In these examples, anybody other than rickm and pablo get denied
6286access, assuming that the host access level is also `none'.  You could
6287set the catch-all rule at the end to be `*::view' to allow view access
6288to anyone who does not supply a password.  Note the important detail
6289that such a rule would allow view access only to persons who do not
6290supply a password at all, i.e. if rickm or pablo tries to log in but
6291mistypes his password, this rule would not apply and they would be
6292denied access entirely.  This is by design, since people might be
6293surprised if they suddenly found themselves logged in, but with a lower
6294access level than they usually have.
6295
6296   The DATABASES field contains a comma-separated list of database
6297names, as defined in the `databases' file (*note The `databases' file:
6298databases file.  Wildcard characters are supported. The databases
6299listed in this field are the ones to which the other settings on the
6300same line will be applied.
6301
6302   ---------- Footnotes ----------
6303
6304   (1) DES crypt is the standard password encryption format used by
6305most UNIX systems
6306
6307   (2) MD5 is only supported on platforms that have a `crypt()'
6308function that supports MD5. Among others, this currently includes GNU
6309Linux and OpenBSD.
6310
6311   (3) Some systems support even more encryption methods.  In FreeBSD,
6312for instance, a prefix of `$2$' implies Blowfish encoding.  GNATS will
6313happily accept any encryption that the OS supports.
6314
6315
6316File: gnats.info,  Node: Privileged gnatsd commands,  Prev: gnatsd.user_access,  Up: Access Control
6317
6318C.5 Privileged `gnatsd' commands
6319================================
6320
6321Every `gnatsd' command has a minimum access level attached to it.  If
6322your access level is too low for a command, you get this response:
6323
6324       LOCK 12
6325       422 You are not authorized to perform this operation (LOCK).
6326
6327The commands `CHDB', `USER' and `QUIT' are unrestricted.
6328
6329The `DBLS' command requires at least `listdb' access.
6330
6331A user must have at least `edit' access for these commands:
6332
6333`LKDB'
6334     lock the main GNATS database.
6335
6336`UNDB'
6337     unlock the main GNATS database.
6338
6339`LOCK PR USER PID'
6340     lock PR for USER and optional PID and return PR text.
6341
6342`UNLK PR'
6343     unlock PR.
6344
6345`EDIT PR'
6346     check in edited PR.
6347
6348`APPN PR FIELD, REPL PR FIELD'
6349     Appends to or replaces the contents of FIELD in PR.
6350
6351   The `DELETE' PR command is special in that it requires `admin'
6352access.
6353
6354All other commands require `view' access.
6355
6356   `edit-pr' and `query-pr' accept the command line arguments
6357`-v|--user' and `-w|--passwd'.  *Note The GNATS User Tools: GNATS user
6358tools.
6359
6360
6361File: gnats.info,  Node: Regexps,  Next: dbconfig recipes,  Prev: Access Control,  Up: Top
6362
6363Appendix D Querying using regular expressions
6364*********************************************
6365
6366See also *Note Query expressions::.
6367
6368   Unfortunately, we do not have room in this manual for a complete
6369exposition on regular expressions.  The following is a basic summary of
6370some regular expressions you might wish to use.
6371
6372   _NOTE: When you use query expressions containing regular expressions
6373as part of an ordinary query-pr shell command line, you need to quote
6374them with `''', otherwise the shell will try to interpret the special
6375characters used, yielding highly unpredictable results._
6376
6377   *Note Regular Expression Syntax: (regex)Regular Expression Syntax,
6378for details on regular expression syntax.  Also see *Note Syntax of
6379Regular Expressions: (emacs)Regexps, but beware that the syntax for
6380regular expressions in Emacs is slightly different.
6381
6382   All search criteria options to `query-pr' rely on regular expression
6383syntax to construct their search patterns.  For example,
6384
6385     query-pr --expr 'State="open"' --format full
6386
6387matches all PRs whose `State' values match with the regular expression
6388`open'.
6389
6390   We can substitute the expression `o' for `open', according to GNU
6391regular expression syntax.  This matches all values of `State' which
6392begin with the letter `o'.
6393
6394   We see that
6395
6396     query-pr --expr 'State="o"' --format full
6397
6398   is equivalent to
6399
6400     query-pr --expr 'State="open"' --format full
6401
6402in this case, since the only value for `State' which matches the
6403expression `o' in a standard installation is `open'.  `State="o"' also
6404matches `o', `oswald', and even `oooooo', but none of those values are
6405valid states for a Problem Report in default GNATS installations.
6406
6407   We can also use the expression operator `|' to signify a logical
6408`OR', such that
6409
6410     query-pr --expr 'State="o|a"' --format full
6411
6412matches all `open' or `analyzed' Problem Reports.
6413
6414   Regular expression syntax considers a regexp token surrounded with
6415parentheses, as in `(REGEXP)', to be a "group".  This means that
6416`(ab)*' matches any number (including zero) of contiguous instances of
6417`ab'.  Matches include `', `ab', and `ababab'.
6418
6419   Regular expression syntax considers a regexp token surrounded with
6420square brackets, as in `[REGEXP]', to be a "list".  This means that
6421`Char[(ley)(lene)(broiled)' matches any of the words `Charley',
6422`Charlene', or `Charbroiled' (case is significant; `charbroiled' is not
6423matched).
6424
6425   Using groups and lists, we see that
6426
6427     query-pr --expr 'Category="gcc|gdb|gas"' --format full
6428
6429is equivalent to
6430
6431     query-pr --expr 'Category="g(cc|db|as)"' --format full
6432
6433and is also very similar to
6434
6435     query-pr --expr 'Category="g[cda]"' --format full
6436
6437with the exception that this last search matches any values which begin
6438with `gc', `gd', or `ga'.
6439
6440   The `.' character is known as a "wildcard".  `.' matches on any
6441single character.  `*' matches the previous character (except
6442newlines), list, or group any number of times, including zero.
6443Therefore, we can understand `.*' to mean "match zero or more instances
6444of any character."
6445
6446     query-pr --expr 'State=".*a"' --format full
6447
6448matches all values for `State' which contain an `a'.  (These include
6449`analyzed' and `feedback'.)
6450
6451   Another way to understand what wildcards do is to follow them on
6452their search for matching text.  By our syntax, `.*' matches any
6453character any number of times, including zero.  Therefore, `.*a'
6454searches for any group of characters which end with `a', ignoring the
6455rest of the field.  `.*a' matches `analyzed' (stopping at the first
6456`a') as well as `feedback'.
6457
6458   _Note:_ When using `fieldtype:Text' or `fieldtype:Multitext' (*note
6459Query expressions::), you do not have to specify the token `.*' at the
6460beginning of your expression to match the entire field.  For the
6461technically minded, this is because these queries use `re_search'
6462rather than `re_match'.  `re_match' "anchors" the search at the
6463beginning of the field, while `re_search' does not anchor the search.
6464
6465   For example, to search in the `>Description:' field for the text
6466
6467     The defrobulator component returns a nil value.
6468
6469we can use
6470
6471     query-pr --expr 'fieldtype:Multitext="defrobulator.*nil"' --format full
6472
6473   To also match newlines, we have to include the expression `(.|^M)'
6474instead of just a dot (`.').  `(.|^M)' matches "any single character
6475except a newline (`.') _or_ (`|') any newline (`^M')."  This means that
6476to search for the text
6477
6478     The defrobulator component enters the bifrabulator routine
6479     and returns a nil value.
6480
6481we must use
6482
6483     query-pr --expr 'fieldtype:Multitext="defrobulator(.|^M)*nil"'
6484              --format full
6485
6486   To generate the newline character `^M', type the following depending
6487on your shell:
6488
6489`csh'
6490     `_control_-V _control_-M'
6491
6492`tcsh'
6493     `_control_-V _control_-J'
6494
6495`sh (_or_ bash)'
6496     Use the <RETURN> key, as in
6497
6498          (.|
6499          )
6500
6501   Again, see *Note Regular Expression Syntax: (regex)Regular
6502Expression Syntax, for a much more complete discussion on regular
6503expression syntax.
6504
6505
6506File: gnats.info,  Node: dbconfig recipes,  Next: Support,  Prev: Regexps,  Up: Top
6507
6508Appendix E `dbconfig' recipes
6509*****************************
6510
6511The `dbconfig' file (*Note The `dbconfig' file: dbconfig file.) is the
6512heart of any GNATS installation.  It contains some very powerful
6513machinery, something which this appendix tries to illustrate.
6514
6515   We provide a range of examples that are both intended to be useful in
6516their own right and to serve as starting points or building blocks for
6517your own modifications.
6518
6519Provide Gnatsweb URL in initial response
6520........................................
6521
6522Sites that have Gnatsweb installed may wish to modify the response
6523e-mail which is sent to the submitter of a PR so that it includes a URL
6524where the status of the PR can be monitored.  In order to allow this,
6525you should first create an entry in `gnatsd.user_access' which allows
6526viewing of PRs in your database (*Note The `gnatsd.user_access' file:
6527gnatsd.user_access.)
6528
6529   Next, locate the entry `mail-format "initial-response-to-submitter"'
6530in the `dbconfig' file of your database and add the following _before_
6531the line reading "The individual assigned..." in the `body' section:
6532
6533
6534\nYou can follow the status of this report on\n\
6535http://hostname/cgi-bin/scriptname?\n\
6536cmd=view&database=dbname&user=username&\n\
6537password=passwd&pr=%s\n\n\
6538
6539Substitute `hostname', `cgi-bin' and `scriptname' as appropriate for
6540the setup of your web server.  The part before the `?' would typically
6541look something like `http://www.example.com/cgi-bin/gnatsweb.pl'.
6542Substitute the name of your database for `dbname', and the username and
6543password of the user with `view' rights for `username' and `passwd'.
6544
6545Next, add a `Number' to the `fields' list statement inside the `body'
6546so it reads as follows:
6547
6548
6549fields { "Category" "Number" "Number" "Responsible"
6550         "Category" "Responsible" "Synopsis"
6551         "Arrival-Date" }
6552
6553State full name of responsible in initial response
6554..................................................
6555
6556The initial e-mail response to the submitter of a PR identifies the
6557responsible person assigned to the PR as follows: "The individual
6558assigned to look at your report is: GNATS USERNAME".  Some sites may
6559wish to modify this so that the full name of the responsible person is
6560used instead of the GNATS user name.
6561
6562   The full name is contained in the `fullname' subfield of the user's
6563entry in the `responsible' file and can be accessed as
6564`Responsible[fullname]' (*note Enumerated field administrative files:
6565administrative files.)
6566
6567   The change is achieved by editing the `dbconfig' item `mail-format
6568"initial-response-to-submitter"' and changing the `fields' part of the
6569`Body' from
6570
6571
6572fields { "Category" "Number" "Responsible"
6573         "Category" "Responsible" "Synopsis"
6574         "Arrival-Date" }
6575
6576to
6577
6578
6579fields { "Category" "Number" "Responsible[fullname]"
6580         "Category" "Responsible" "Synopsis"
6581         "Arrival-Date" }
6582
6583Append-only Audit-Trail
6584.......................
6585
6586The Audit-Trail of a PR is by default editable.  For some applications,
6587one might want to make the Audit-Trail append-only, so it provides a
6588full and unchangeable case history.  Also by default, only certain
6589changes, such as change of state and change of responsible gets
6590recorded in the Audit-Trail.  In some cases, it might also be
6591convenient to have a way of inserting comments directly into the
6592Audit-Trail.
6593
6594   The following procedure creates such an append-only Audit-Trail and
6595adds a PR field which makes it possible to register comments in the
6596Audit-Trail.
6597
6598First, add the keyword `read-only' to the Audit-Trail field definition
6599in `dbconfig'.
6600
6601Then, add the following field definition to `dbconfig':
6602
6603
6604field "Add-To-Audit-Trail" {
6605   description "Add a log entry to the Audit Trail"
6606   multitext { default "\n" }
6607   on-change  {
6608        add-audit-trail
6609        audit-trail-format {
6610        format "**** Comment added by %s on %s ****\n %s\n\n"
6611        fields { "$EditUserEmailAddr" "$CurrentDate" "$NewValue"
6612        }
6613        }
6614    }
6615    on-change {
6616        set-field "Add-To-Audit-Trail" { "\n" }
6617    }
6618}
6619
6620Supporting GNATS "release-based" fields
6621.......................................
6622
6623When installing GNATS version 3.x, it was possible to choose whether to
6624enable three optional fields: `Quarter', `Keywords' and
6625`Date-Required'.  Default installations had these fields switched off,
6626and installations which had them were called "release-based".
6627
6628   The default `dbconfig' shipped with GNATS version 4 or newer does
6629not have these fields, so if you are upgrading from an old
6630release-based system, you need to add the following field definitions to
6631your `dbconfig' file:
6632
6633
6634field "Quarter" {
6635    description "What quarter does the PR fall into?"
6636    text
6637    query-default inexact-regexp
6638    textsearch
6639}
6640
6641field "Keywords" {
6642    description "Keywords used to index this PR"
6643    text
6644    query-default inexact-regexp
6645    textsearch
6646}
6647
6648field "Date-Required" {
6649    description "Date that the PR must be fixed by"
6650    date
6651}
6652
6653   A side note: Pre-release versions of GNATS 4 also had a field named
6654`Cases'.  For those who may need it, here is the field definition of
6655`Cases':
6656
6657
6658field "Cases" {
6659    text
6660    query-default inexact-regexp
6661    textsearch
6662}
6663
6664
6665File: gnats.info,  Node: Support,  Next: Index,  Prev: dbconfig recipes,  Up: Top
6666
6667Appendix F GNATS support
6668************************
6669
6670The GNATS home page is located at `http://www.gnu.org/software/gnats'.
6671It contains all the important references to the available information
6672about GNATS and the related software.
6673
6674   There is also a special page dedicated to the GNATS development at
6675`http://savannah.gnu.org/projects/gnats'.
6676
6677   There are several GNATS mailing lists.  The most important ones are:
6678
6679<info-gnats@gnu.org>
6680     Announcements and other important information about GNATS and the
6681     related software.  This is a very low volume moderated list.
6682
6683<bug-gnats@gnu.org>
6684     The bug reporting mailing list on the GNATS itself.  Please note
6685     that the preferred way to report GNATS bugs is to submit them via
6686     the web interface at
6687     `http://bugs.gnu.org/cgi-bin/gnatsweb.pl?database=gnats'.  New bug
6688     reports submitted via the web interface are copied to the mailing
6689     list automatically.
6690
6691<help-gnats@gnu.org>
6692     General discussion about GNATS.  Anything related to GNATS (user
6693     questions, development, suggestions, etc.) can be discussed there.
6694
6695   The complete list of GNATS related mailing lists is available from
6696the web page at `http://savannah.gnu.org/project/gnats'.
6697
6698   When you report problems concerning GNATS itself, please do not
6699forget to provide especially the following information:
6700
6701   * The GNATS version you are using.
6702
6703   * The _exact_ way how to reproduce the bug.
6704
6705   * Your configuration.
6706
6707   * If you encounter a compilation or build problem, it is especially
6708     important to mention the operating system, compiler and possibly
6709     other build utilities you use.
6710
6711   Providing this information in the initial report avoids further
6712unnecessary communication, saves our limited development resources and
6713helps to track down and fix the problem soon.
6714
6715
6716File: gnats.info,  Node: Index,  Prev: Support,  Up: Top
6717
6718Index
6719*****
6720
6721�[index�]
6722* Menu:
6723
6724* -with-gnats-dblist-file:               Configure and make.  (line 112)
6725* -with-gnats-default-db:                Configure and make.  (line 117)
6726* -with-gnats-service:                   Configure and make.  (line  91)
6727* -with-gnats-user:                      Configure and make.  (line  95)
6728* -with-gnatsd-host-access-file:         Configure and make.  (line 106)
6729* -with-gnatsd-user-access-file:         Configure and make.  (line  99)
6730* -with-kerberos:                        Configure and make.  (line 123)
6731* -with-krb4:                            Configure and make.  (line 126)
6732* >Submitter-Id:                         PR template.         (line 108)
6733* _analyzed_ state:                      States.              (line  19)
6734* _change-request_ class:                Problem Report fields.
6735                                                              (line 108)
6736* _closed_ state:                        States.              (line  30)
6737* _critical_ severity problems:          Problem Report fields.
6738                                                              (line  63)
6739* _doc-bug_ class:                       Problem Report fields.
6740                                                              (line 105)
6741* _duplicate_ class:                     Problem Report fields.
6742                                                              (line 114)
6743* _feedback_ state:                      States.              (line  25)
6744* _high_ priority problems:              Problem Report fields.
6745                                                              (line  83)
6746* _low_ priority problems:               Problem Report fields.
6747                                                              (line  89)
6748* _medium_ priority problems:            Problem Report fields.
6749                                                              (line  86)
6750* _mistaken_ class:                      Problem Report fields.
6751                                                              (line 118)
6752* _non-critical_ severity problems:      Problem Report fields.
6753                                                              (line  74)
6754* _open_ state:                          States.              (line  15)
6755* _serious_ severity problems:           Problem Report fields.
6756                                                              (line  68)
6757* _support_ class:                       Problem Report fields.
6758                                                              (line 111)
6759* _suspended_ state:                     States.              (line  35)
6760* _sw-bug_ class:                        Problem Report fields.
6761                                                              (line 102)
6762* adding a problem category <1>:         mkcat.               (line   6)
6763* adding a problem category:             Management.          (line  40)
6764* adding and removing maintainers:       Management.          (line  60)
6765* adding another database:               Management.          (line  34)
6766* addresses file <1>:                    addresses file.      (line   6)
6767* addresses file:                        GNATS configuration. (line  71)
6768* admin files:                           Admin files.         (line   6)
6769* administering GNATS:                   Management.          (line   6)
6770* administrative utilities:              Admin utils.         (line   6)
6771* age of PR:                             pr-age.              (line   6)
6772* alias for incoming Problem Reports:    Aliases.             (line  21)
6773* aliases:                               Aliases.             (line   6)
6774* appended-email-response:               Outgoing email formats.
6775                                                              (line  57)
6776* arrival-date:                          Individual field configuration.
6777                                                              (line  38)
6778* Arrival-Date field:                    Problem Report fields.
6779                                                              (line 203)
6780* at:                                    Setting up the default database.
6781                                                              (line  53)
6782* at-pr:                                 at-pr.               (line   6)
6783* audit-mail:                            Outgoing email formats.
6784                                                              (line  61)
6785* audit-trail:                           Individual field configuration.
6786                                                              (line  41)
6787* Audit-Trail field:                     Problem Report fields.
6788                                                              (line 212)
6789* Audit-trail format:                    Audit-trail formats. (line   6)
6790* autoload commands:                     Installing utils.    (line  28)
6791* automatic notification <1>:            at-pr.               (line   6)
6792* automatic notification:                States.              (line   8)
6793* BACK UP YOUR DATA:                     Management.          (line  77)
6794* bad Problem Reports:                   PR template.         (line 113)
6795* bug alias:                             Aliases.             (line  21)
6796* bug reporting:                         Support.             (line  34)
6797* building a new index:                  Management.          (line  65)
6798* building GNATS:                        Installation.        (line   6)
6799* building in a different directory:     Configure and make.  (line 136)
6800* builtin-name:                          Individual field configuration.
6801                                                              (line  29)
6802* bury-buffer:                           Emacs querying.      (line  45)
6803* business-day-hours:                    Overall database configuration.
6804                                                              (line  46)
6805* business-week-days:                    Overall database configuration.
6806                                                              (line  53)
6807* categories file <1>:                   rmcat.               (line   6)
6808* categories file <2>:                   mkcat.               (line   6)
6809* categories file <3>:                   categories file.     (line   6)
6810* categories file:                       GNATS configuration. (line  48)
6811* category:                              Individual field configuration.
6812                                                              (line  44)
6813* Category field:                        Problem Report fields.
6814                                                              (line  92)
6815* category-dir-perms:                    Overall database configuration.
6816                                                              (line  67)
6817* check-db:                              check-db.            (line   6)
6818* Class field:                           Problem Report fields.
6819                                                              (line  98)
6820* classes file <1>:                      classes file.        (line   6)
6821* classes file:                          GNATS configuration. (line  82)
6822* closed-date:                           Individual field configuration.
6823                                                              (line  47)
6824* command line options:                  send-pr from the shell.
6825                                                              (line   6)
6826* comment section in the PR template:    PR template.         (line  25)
6827* compiling the software:                Configure and make.  (line   6)
6828* confidential:                          Individual field configuration.
6829                                                              (line  50)
6830* Confidential field:                    Problem Report fields.
6831                                                              (line  42)
6832* confidentiality in PRs:                Problem Report fields.
6833                                                              (line  42)
6834* configure:                             Configure and make.  (line   6)
6835* configuring  GNATS:                    Installation.        (line   6)
6836* configuring and compiling the software: Configure and make. (line   6)
6837* configuring GNATS for remote users:    Installing tools.    (line  59)
6838* configuring GNATS on a local network:  Installing tools.    (line  30)
6839* configuring GNATS on a network:        Installing tools.    (line   6)
6840* create-category-dirs:                  Overall database configuration.
6841                                                              (line  61)
6842* creating an account for the GNATS user: Configure and make. (line  31)
6843* cron:                                  Setting up the default database.
6844                                                              (line  53)
6845* crontab:                               Setting up periodic jobs.
6846                                                              (line  14)
6847* current file:                          current file.        (line   6)
6848* daemon:                                Installing the daemon.
6849                                                              (line   6)
6850* database paradigm:                     Paradigm.            (line   6)
6851* database rationale:                    Introduction.        (line   6)
6852* database similarities:                 Fields.              (line   6)
6853* databases:                             GNATS configuration. (line  20)
6854* databases file:                        databases file.      (line   6)
6855* datatype:                              Field datatypes.     (line  10)
6856* date:                                  Field datatypes.     (line 134)
6857* Date-Required:                         Problem Report fields.
6858                                                              (line 207)
6859* Date-Required field:                   Problem Report fields.
6860                                                              (line 207)
6861* dbconfig:                              dbconfig recipes.    (line   6)
6862* dbconfig file <1>:                     dbconfig file.       (line   6)
6863* dbconfig file:                         GNATS configuration. (line  44)
6864* dbconfig mode:                         dbconfig mode.       (line   6)
6865* dbconfig recipes:                      dbconfig recipes.    (line   6)
6866* debug-mode:                            Overall database configuration.
6867                                                              (line  17)
6868* default installation locations <1>:    defaults.            (line   6)
6869* default installation locations:        Locations.           (line   6)
6870* defaults:                              GNATS configuration. (line  26)
6871* deleted-pr-mail:                       Outgoing email formats.
6872                                                              (line  65)
6873* description:                           Individual field configuration.
6874                                                              (line  53)
6875* Description field:                     Problem Report fields.
6876                                                              (line 134)
6877* diff-prs:                              diff-prs.            (line   6)
6878* Direct e-mail:                         Submitting via e-mail.
6879                                                              (line   6)
6880* disabling SUBMITTER-ID:                submitters file.     (line  68)
6881* driver for edit-pr:                    pr-edit.             (line   6)
6882* duties for gnats-admin:                Management.          (line   6)
6883* edit controls:                         Edit controls.       (line   6)
6884* edit-pr <1>:                           Emacs editing.       (line   6)
6885* edit-pr:                               edit-pr.             (line   6)
6886* edit-pr driver:                        pr-edit.             (line   6)
6887* edit-pr from the shell:                edit-pr from the shell.
6888                                                              (line   6)
6889* effective problem reporting:           Helpful hints.       (line   6)
6890* Emacs:                                 Emacs.               (line   6)
6891* Emacs functions:                       Installing utils.    (line  28)
6892* Emacs lisp file installation:          Configure and make.  (line  20)
6893* emptying the pending directory:        Management.          (line  12)
6894* enum:                                  Field datatypes.     (line  31)
6895* enumerated-in-file:                    Field datatypes.     (line  73)
6896* Environment field:                     Problem Report fields.
6897                                                              (line 129)
6898* environment variables and GNATS tools: Environment.         (line   6)
6899* errors:                                PR template.         (line 113)
6900* example Problem Report:                Fields.              (line  34)
6901* example queries:                       Example queries.     (line   6)
6902* EXEC-PREFIX <1>:                       exec-prefix.         (line   6)
6903* EXEC-PREFIX:                           Configure and make.  (line  86)
6904* Field datatypes:                       Field datatypes.     (line   6)
6905* field format:                          Problem Report fields.
6906                                                              (line   6)
6907* fields:                                Fields.              (line   6)
6908* fields - list:                         Problem Report fields.
6909                                                              (line  18)
6910* file-pr:                               file-pr.             (line   6)
6911* files used for GNATS administration:   Admin files.         (line   6)
6912* final state ("closed"):                States.              (line  30)
6913* Fix field:                             Problem Report fields.
6914                                                              (line 149)
6915* flowchart of GNATS activities:         Flowchart.           (line   6)
6916* follow-up via email <1>:               follow-up via email. (line   6)
6917* follow-up via email:                   Problem Report fields.
6918                                                              (line 234)
6919* foreword:                              Top.                 (line   6)
6920* format:                                Fields.              (line   6)
6921* format parameters:                     Audit-trail formats. (line  31)
6922* format-name:                           Outgoing email formats.
6923                                                              (line  42)
6924* From header:                           Mail header fields.  (line  23)
6925* gen-index <1>:                         gen-index.           (line   6)
6926* gen-index:                             Management.          (line  65)
6927* GNATS administrator:                   Paradigm.            (line  48)
6928* GNATS configuration:                   GNATS configuration. (line   6)
6929* GNATS database fields:                 Problem Report fields.
6930                                                              (line   6)
6931* GNATS fields - list:                   Problem Report fields.
6932                                                              (line  18)
6933* GNATS management:                      Management.          (line   6)
6934* GNATS support:                         Support.             (line   6)
6935* GNATS-ADM:                             gnats-adm.           (line   6)
6936* gnats-admin alias:                     Aliases.             (line  15)
6937* gnats-apply-or-submit:                 Emacs editing buffer.
6938                                                              (line  47)
6939* gnats-change-database <1>:             Emacs and databases. (line   6)
6940* gnats-change-database:                 Emacs querying.      (line  41)
6941* gnats-dbconfig-mode:                   dbconfig mode.       (line   6)
6942* gnats-dbconfig-mode-hook:              dbconfig mode.       (line  11)
6943* GNATS-DEFAULT-ORGANIZATION:            Emacs submitting.    (line  19)
6944* GNATS-DEFAULT-SUBMITTER:               Emacs submitting.    (line  23)
6945* gnats-edit-mode-hook:                  Emacs editing buffer.
6946                                                              (line  53)
6947* gnats-next-field:                      Emacs editing buffer.
6948                                                              (line  23)
6949* gnats-previous-field:                  Emacs editing buffer.
6950                                                              (line  23)
6951* gnats-pwconv:                          gnats-pwconv.        (line   6)
6952* gnats-query-edit-pr:                   Emacs querying.      (line  26)
6953* gnats-query-mode-hook:                 Emacs querying.      (line  57)
6954* gnats-query-reread:                    Emacs querying.      (line  30)
6955* GNATS-QUERY-REVERSE-LISTING:           Emacs querying.      (line  50)
6956* gnats-query-view-pr:                   Emacs querying.      (line  20)
6957* gnats-show-connection:                 Other Emacs commands.
6958                                                              (line  16)
6959* gnats-view-edit-pr:                    Emacs viewing.       (line   9)
6960* gnats-view-mode-hook:                  Emacs viewing.       (line  13)
6961* gnatsd:                                gnatsd.              (line   6)
6962* gnatsd command protocol:               gnatsd command protocol.
6963                                                              (line   6)
6964* gnatsd commands:                       gnatsd commands.     (line   6)
6965* gnatsd description:                    Description of gnatsd.
6966                                                              (line   6)
6967* gnatsd environment variables:          gnatsd environment variables.
6968                                                              (line   6)
6969* gnatsd options:                        gnatsd options.      (line   6)
6970* gnatsd startup options:                gnatsd options.      (line  12)
6971* gnatsd, Emacs:                         Emacs and databases. (line  11)
6972* gnatsd.host_access <1>:                gnatsd.host_access.  (line   6)
6973* gnatsd.host_access:                    GNATS configuration. (line  31)
6974* gnatsd.user_access <1>:                gnatsd.user_access.  (line   6)
6975* gnatsd.user_access:                    GNATS configuration. (line  36)
6976* gnatsd.user_access file:               GNATS configuration. (line  88)
6977* GNATSDB <1>:                           gnatsd environment variables.
6978                                                              (line   6)
6979* GNATSDB:                               Environment.         (line   6)
6980* handling incoming traffic:             queue-pr.            (line   6)
6981* helpful hints:                         Helpful hints.       (line   6)
6982* How-To-Repeat field:                   Problem Report fields.
6983                                                              (line 137)
6984* incoming alias for Problem Reports:    Aliases.             (line  21)
6985* incoming PRs that GNATS cannot parse:  Paradigm.            (line  62)
6986* index file <1>:                        gen-index.           (line   6)
6987* index file:                            index file.          (line   6)
6988* Index file description:                Index file description.
6989                                                              (line   6)
6990* Individual field configuration:        Individual field configuration.
6991                                                              (line   6)
6992* information to submit:                 Helpful hints.       (line   6)
6993* Initial PR input fields:               Initial PR input fields.
6994                                                              (line   6)
6995* initial state ("open"):                States.              (line  15)
6996* initial-pr-notification:               Outgoing email formats.
6997                                                              (line  49)
6998* initial-pr-notification-pending:       Outgoing email formats.
6999                                                              (line  53)
7000* initial-response-to-submitter:         Outgoing email formats.
7001                                                              (line  43)
7002* initializing a database:               mkdb.                (line   6)
7003* installing GNATS:                      Installation.        (line   6)
7004* installing the utilities:              Installing utils.    (line   6)
7005* integer:                               Field datatypes.     (line 141)
7006* interactive interface:                 send-pr in Emacs.    (line   6)
7007* internal utilities:                    Internal utils.      (line   6)
7008* Internet standard RFC-822:             Mail header fields.  (line   6)
7009* introduction to GNATS:                 Introduction.        (line   6)
7010* invalid Problem Reports:               PR template.         (line 113)
7011* invoking edit-pr:                      edit-pr.             (line   6)
7012* invoking query-pr:                     query-pr.            (line   6)
7013* invoking send-pr:                      send-pr.             (line   6)
7014* invoking send-pr from Emacs:           send-pr in Emacs.    (line   6)
7015* invoking send-pr from the shell:       send-pr from the shell.
7016                                                              (line   6)
7017* invoking the GNATS user tools:         GNATS user tools.    (line   6)
7018* keep-all-received-headers:             Overall database configuration.
7019                                                              (line  23)
7020* kinds of helpful information:          Helpful hints.       (line   6)
7021* last-modified:                         Individual field configuration.
7022                                                              (line  56)
7023* libexecdir:                            Overall database configuration.
7024                                                              (line  40)
7025* life-cycle of a Problem Report:        States.              (line   8)
7026* lisp file installation:                Configure and make.  (line  20)
7027* loading .el files:                     Installing utils.    (line  28)
7028* locations:                             Locations.           (line   6)
7029* locks:                                 pr-edit.             (line  29)
7030* mail aliases:                          Aliases.             (line   6)
7031* mail header fields:                    Mail header fields.  (line   6)
7032* mail header section:                   PR template.         (line  48)
7033* mailing lists:                         Support.             (line  13)
7034* maintenance:                           Paradigm.            (line   6)
7035* make:                                  Configure and make.  (line   6)
7036* managing GNATS:                        Management.          (line   6)
7037* mkcat <1>:                             mkcat.               (line   6)
7038* mkcat:                                 Management.          (line  40)
7039* mkdb <1>:                              mkdb.                (line   6)
7040* mkdb:                                  Management.          (line  34)
7041* multi-enumerated-in-file:              Field datatypes.     (line 116)
7042* multienum:                             Field datatypes.     (line  52)
7043* multitext:                             Field datatypes.     (line  24)
7044* Named query definitions:               Named query definitions.
7045                                                              (line   6)
7046* networks:                              Installing tools.    (line   6)
7047* new database:                          mkdb.                (line   6)
7048* new problem categories:                mkcat.               (line   6)
7049* notification of overdue PRs:           at-pr.               (line   6)
7050* notify-about-expired-prs:              Overall database configuration.
7051                                                              (line  28)
7052* Notify-List field:                     Problem Report fields.
7053                                                              (line  29)
7054* number:                                Individual field configuration.
7055                                                              (line  59)
7056* Number field:                          Problem Report fields.
7057                                                              (line 157)
7058* OBJDIR:                                Configure and make.  (line 136)
7059* Organization field:                    Problem Report fields.
7060                                                              (line  39)
7061* originator:                            Individual field configuration.
7062                                                              (line  62)
7063* Originator field:                      Problem Report fields.
7064                                                              (line  35)
7065* Outgoing email formats:                Outgoing email formats.
7066                                                              (line   6)
7067* Overall database configuration:        Overall database configuration.
7068                                                              (line   6)
7069* Overview of GNATS configuration:       GNATS configuration. (line   6)
7070* overview to GNATS:                     Top.                 (line   6)
7071* paradigm:                              Paradigm.            (line   6)
7072* password, Emacs:                       Emacs and databases. (line  16)
7073* pending directory:                     Paradigm.            (line  62)
7074* pending file:                          categories file.     (line  77)
7075* PR confidentiality:                    Problem Report fields.
7076                                                              (line  42)
7077* PR locks:                              pr-edit.             (line  29)
7078* pr-age:                                pr-age.              (line   6)
7079* pr-edit:                               pr-edit.             (line   6)
7080* PREFIX <1>:                            prefix.              (line   6)
7081* PREFIX:                                Configure and make.  (line  80)
7082* prepare send-pr.conf:                  Installing utils.    (line  49)
7083* priority:                              Individual field configuration.
7084                                                              (line  65)
7085* Priority field:                        Problem Report fields.
7086                                                              (line  79)
7087* Problem Report format:                 Fields.              (line   6)
7088* Problem Report states:                 States.              (line   8)
7089* Problem Report template:               Fields.              (line  34)
7090* processing incoming traffic:           file-pr.             (line   6)
7091* pruning log files:                     Management.          (line  70)
7092* query expressions:                     Query expressions.   (line   6)
7093* query-pr <1>:                          Emacs querying.      (line   6)
7094* query-pr:                              query-pr.            (line   6)
7095* query-pr by mail:                      Invoking query-pr.   (line  10)
7096* query-pr output format:                Formatting query-pr output.
7097                                                              (line   6)
7098* querying individual problem reports:   query-pr.            (line   6)
7099* querying using regexps:                Regexps.             (line   6)
7100* queue-pr:                              queue-pr.            (line   6)
7101* queue-pr -q:                           Aliases.             (line  21)
7102* rationale:                             Introduction.        (line   6)
7103* Received-By headers:                   Mail header fields.  (line  32)
7104* regular expressions:                   Regexps.             (line   6)
7105* related mail <1>:                      follow-up via email. (line   6)
7106* related mail:                          Problem Report fields.
7107                                                              (line 234)
7108* Release field:                         Problem Report fields.
7109                                                              (line 125)
7110* reminder message:                      at-pr.               (line  24)
7111* removing a problem category <1>:       rmcat.               (line   6)
7112* removing a problem category:           Management.          (line  48)
7113* Reply-To header:                       Mail header fields.  (line  28)
7114* Report all the facts!:                 Helpful hints.       (line   6)
7115* reporting problems with send-pr:       send-pr.             (line   6)
7116* responsible:                           Individual field configuration.
7117                                                              (line  68)
7118* Responsible field:                     Problem Report fields.
7119                                                              (line 198)
7120* responsible file <1>:                  responsible file.    (line   6)
7121* responsible file:                      GNATS configuration. (line  57)
7122* Responsible-Changed-<From>-<To> in Audit-Trail: Problem Report fields.
7123                                                              (line 219)
7124* Responsible-Changed-By in Audit-Trail: Problem Report fields.
7125                                                              (line 222)
7126* Responsible-Changed-When in Audit-Trail: Problem Report fields.
7127                                                              (line 226)
7128* Responsible-Changed-Why in Audit-Trail: Problem Report fields.
7129                                                              (line 230)
7130* rmcat <1>:                             rmcat.               (line   6)
7131* rmcat:                                 Management.          (line  48)
7132* sample Problem Report:                 Fields.              (line  34)
7133* send-pr <1>:                           Emacs submitting.    (line   6)
7134* send-pr <2>:                           Emacs querying.      (line  38)
7135* send-pr:                               send-pr.             (line   6)
7136* send-pr fields <1>:                    PR template.         (line  86)
7137* send-pr fields:                        send-pr from the shell.
7138                                                              (line  50)
7139* send-pr within Emacs:                  send-pr in Emacs.    (line   6)
7140* send-pr.conf file:                     send-pr.conf file.   (line   6)
7141* send-submitter-ack:                    Overall database configuration.
7142                                                              (line  33)
7143* setting up GNATS:                      Installation.        (line   6)
7144* severity:                              Individual field configuration.
7145                                                              (line  71)
7146* Severity field:                        Problem Report fields.
7147                                                              (line  59)
7148* shell invocation:                      send-pr from the shell.
7149                                                              (line   6)
7150* Site wide configuration files:         GNATS configuration. (line  19)
7151* so what does it do:                    Paradigm.            (line   6)
7152* state:                                 Individual field configuration.
7153                                                              (line  74)
7154* State field:                           Problem Report fields.
7155                                                              (line 172)
7156* state--"analyzed":                     States.              (line  19)
7157* state--"closed":                       States.              (line  30)
7158* state--"feedback":                     States.              (line  25)
7159* state--"open":                         States.              (line  15)
7160* state--"suspended":                    States.              (line  35)
7161* State-Changed-<From>-<To> in Audit-Trail: Problem Report fields.
7162                                                              (line 216)
7163* State-Changed-By in Audit-Trail:       Problem Report fields.
7164                                                              (line 222)
7165* State-Changed-When in Audit-Trail:     Problem Report fields.
7166                                                              (line 226)
7167* State-Changed-Why in Audit-Trail:      Problem Report fields.
7168                                                              (line 230)
7169* states file <1>:                       states file.         (line   6)
7170* states file:                           GNATS configuration. (line  78)
7171* states of Problem Reports:             States.              (line   8)
7172* Subject header:                        Mail header fields.  (line  19)
7173* submitter-id:                          Individual field configuration.
7174                                                              (line  77)
7175* Submitter-Id field <1>:                PR template.         (line 108)
7176* Submitter-Id field:                    Problem Report fields.
7177                                                              (line  18)
7178* submitters file <1>:                   submitters file.     (line   6)
7179* submitters file:                       GNATS configuration. (line  66)
7180* Submitting a PR via e-mail:            Submitting via e-mail.
7181                                                              (line   6)
7182* subsequent mail <1>:                   follow-up via email. (line   6)
7183* subsequent mail:                       Problem Report fields.
7184                                                              (line 234)
7185* support site:                          Paradigm.            (line   6)
7186* synopsis:                              Individual field configuration.
7187                                                              (line  80)
7188* Synopsis field:                        Problem Report fields.
7189                                                              (line  55)
7190* syntax of regexps:                     Regexps.             (line   6)
7191* template:                              PR template.         (line  11)
7192* template comment section:              PR template.         (line  25)
7193* text:                                  Field datatypes.     (line  14)
7194* the section on query-by-mail needs to be relocated: Invoking query-pr.
7195                                                              (line  17)
7196* timely reminders:                      at-pr.               (line   6)
7197* To header:                             Mail header fields.  (line  14)
7198* unformatted:                           Individual field configuration.
7199                                                              (line  83)
7200* Unformatted field:                     Problem Report fields.
7201                                                              (line 240)
7202* unlock-database:                       Other Emacs commands.
7203                                                              (line  12)
7204* unlock-pr:                             Other Emacs commands.
7205                                                              (line   6)
7206* unpacking the distribution:            Configure and make.  (line   6)
7207* unparseable incoming PRs:              Paradigm.            (line  62)
7208* upgrade, procedure:                    Upgrading.           (line  53)
7209* upgrading from older versions:         Upgrading.           (line   6)
7210* upgrading, overview:                   Upgrading.           (line  15)
7211* usage for the GNATS user tools:        GNATS user tools.    (line   6)
7212* Using and Porting GNU CC:              Helpful hints.       (line   6)
7213* using edit-pr:                         edit-pr.             (line   6)
7214* using GNATS over a local network:      Installing tools.    (line  30)
7215* using GNATS over a network <1>:        Installing tools.    (line   6)
7216* using GNATS over a network:            Installing the daemon.
7217                                                              (line   6)
7218* using GNATS remotely:                  Installing tools.    (line  59)
7219* using query-pr:                        query-pr.            (line   6)
7220* using send-pr:                         send-pr.             (line   6)
7221* using send-pr from within Emacs:       send-pr in Emacs.    (line   6)
7222* view-pr:                               Emacs viewing.       (line   6)
7223* visual map of data flow:               Flowchart.           (line   6)
7224* what is a PR:                          Paradigm.            (line  25)
7225* where GNATS lives:                     Locations.           (line   6)
7226* why GNATS:                             Paradigm.            (line   6)
7227
7228
7229
7230Tag Table:
7231Node: Top824
7232Node: Introduction2803
7233Node: Paradigm3904
7234Node: Flowchart8894
7235Node: States11061
7236Node: Fields12633
7237Node: Field datatypes reference15305
7238Node: Mail header fields16300
7239Node: Problem Report fields17795
7240Node: GNATS user tools27193
7241Node: Environment28316
7242Node: send-pr29167
7243Node: send-pr from the shell29912
7244Node: send-pr in Emacs32172
7245Ref: send-pr in Emacs-Footnote-132850
7246Node: PR template32966
7247Node: Submitting via e-mail38301
7248Node: Helpful hints39386
7249Node: edit-pr42488
7250Node: edit-pr from the shell44853
7251Node: follow-up via email46894
7252Node: query-pr48842
7253Node: Invoking query-pr50321
7254Node: Formatting query-pr output59526
7255Node: Query expressions62056
7256Node: Example queries66361
7257Node: Emacs67416
7258Node: Emacs viewing68874
7259Node: Emacs querying69415
7260Node: Emacs submitting71356
7261Node: Emacs editing72398
7262Node: Emacs editing buffer73035
7263Node: Emacs and databases75614
7264Node: dbconfig mode76625
7265Node: Other Emacs commands77107
7266Node: Emacs customization78034
7267Node: Installation78295
7268Node: Configure and make81248
7269Node: Installing utils87733
7270Node: Setting up the default database89729
7271Ref: Setting up the default database-Footnote-192063
7272Node: Setting up periodic jobs92199
7273Node: Aliases93345
7274Node: Installing the daemon95754
7275Node: Installing tools98798
7276Node: Upgrading104350
7277Node: Management112628
7278Node: GNATS configuration116672
7279Node: databases file120943
7280Node: dbconfig file123039
7281Node: Overall database configuration125274
7282Node: Individual field configuration128545
7283Node: Field datatypes132785
7284Ref: administrative files135772
7285Node: Edit controls138854
7286Node: Named query definitions141331
7287Node: Audit-trail formats142437
7288Node: Outgoing email formats144143
7289Node: Index file description150683
7290Node: Initial PR input fields152046
7291Node: Other config files152786
7292Node: categories file153104
7293Node: responsible file156394
7294Node: submitters file157781
7295Node: states file160786
7296Node: addresses file163710
7297Node: classes file165615
7298Node: send-pr.conf file166557
7299Node: Admin files168953
7300Node: index file169396
7301Node: current file170820
7302Node: Admin utils171084
7303Node: mkdb171665
7304Node: mkcat172278
7305Node: rmcat172937
7306Node: gen-index173744
7307Node: check-db175362
7308Node: gnats-pwconv176693
7309Node: Internal utils177830
7310Node: queue-pr178398
7311Node: file-pr180373
7312Node: at-pr183438
7313Node: pr-edit185053
7314Ref: pr-edit-Footnote-1191954
7315Node: diff-prs192048
7316Node: pr-age192452
7317Node: Locations193079
7318Node: prefix193520
7319Node: exec-prefix194258
7320Node: gnats-adm196745
7321Node: defaults197531
7322Node: gnatsd201912
7323Node: Description of gnatsd202389
7324Node: gnatsd options203699
7325Node: gnatsd command protocol205397
7326Node: gnatsd commands209683
7327Node: gnatsd environment variables232509
7328Node: Access Control233204
7329Node: Overview233575
7330Node: Overall gnatsd access level234468
7331Node: gnatsd.host_access235371
7332Node: gnatsd.user_access237173
7333Ref: gnatsd.user_access-Footnote-1241609
7334Ref: gnatsd.user_access-Footnote-2241696
7335Ref: gnatsd.user_access-Footnote-3241850
7336Node: Privileged gnatsd commands242045
7337Node: Regexps243189
7338Node: dbconfig recipes248306
7339Ref: release-based support252418
7340Node: Support253561
7341Node: Index255470
7342
7343End Tag Table
7344