Provided by: gnats_4.1.0-2_i386 bug

NAME

       gnatsd - GNATS network server

SYNOPSIS

       gnatsd [--database database | -d database] [--not-inetd | -n] [--max-
              access-level level | -m level] [--version | -V] [--help | -h]

DESCRIPTION

       gnatsd is used to service remote GNATS requests such as  querying  PRs,
       PR creation, deletion, and editing, and miscellaneous database queries.
       It uses a simple ASCII-based command protocol (similar to SMTP or POP3)
       for communicating with remote clients.

       It   also   provides   a   security  model  based  either  on  IP-based
       authentication  (generally  a  terrible  idea)  or  username/passwords.
       Passwords  may  be  encrypted  using UNIX crypt() or MD5 (for operating
       systems that support it).  Plaintext passwords are also  supported  but
       strongly discouraged.

       All  of  the  GNATS  clients are capable of communicating via the GNATS
       remote protocol to perform their functions.

       gnatsd should be run by the GNATS user (by default gnats),  and  it  is
       usually started from inetd(8).

OPTIONS

       -V, --version
            Prints the program version to stdout and exits.

       -h, --help
            Prints a short help text to stdout and exits.

       -d, --database
            Specifies  the  default  database  which is to be serviced by this
            invocation of gnatsd.  (The selected database may be  changed  via
            the CHDB command; this is simply the default if no CHDB command is
            issued.)  If no database is specified, the database named  default
            is  assumed.   This option overrides the database specified in the
            GNATSDB environment variable.

       --not-inetd, -n
            As its name suggests, indicates that gnatsd is not  being  invoked
            from  inetd.  This can be used when testing gnatsd, or if it being
            run via ssh or some other mechanism.

            This has the effect of using the local hostname  where  gnatsd  is
            being  invoked for authentication purposes, rather than the remote
            address of the connecting client.

       --max-access-level, -m
            Specifies the maximum access level that the connecting client  can
            authenticate  to.  Authentication  is as normal but if the user or
            host authenticates at a higher level, access level is set to  this
            level.

COMMAND PROTOCOL

       Commands  are  issued  to  gnatsd  as  one  or more words followed by a
       carriage-return/linefeed  pair.   For   example,   the   CHDB   (change
       databases) command is sent as
              CHDB database<CR><LF>
       [the CRLF will not be explicitly written for future examples]

       Replies  from  gnatsd  are  returned  as  one  or  more  response lines
       containing a 3-digit numeric code followed by a human-readable  string;
       the line is terminated with a <CR><LF> pair.  For example, one possible
       response to the CHDB command above would be:
              210 Now accessing GNATS database 'database'.

       The three-digit code is normally  followed  by  a  single  ASCII  space
       (character  0x20).   However,  if  additional  response lines are to be
       returned from the server, there will be a single dash (`-') instead  of
       the space character after the three-digit code.

       Response code values are divided into ranges.  The first digit reflects
       the general type of response (such as "successful" or "error"), and the
       subsequent digits identify the specific type of response.

       Codes 200-299
              Positive  response  indicating  that the command was successful.
              No subsequent data will be transmitted with the  response.   [In
              particular,  code  210  (CODE_OK) is used as the positive result
              code for most simple commands.]

              Commands that expect additional data from the  client  (such  as
              SUBM  or  VFLD)  use  a two-step mechanism for sending the data.
              The server will respond to the initial command with either a 211
              (CODE_SEND_PR)  or  212  (CODE_SEND_TEXT)  response  line, or an
              error code if an error occurred with the initial  command.   The
              client  is  then  expected  to send the remaining data using the
              same quoting mechanism as described for server responses in  the
              300-349  range.  The server will then send a final response line
              to the command.

       Codes 300-399
              Positive  response  indicating  that  the  query   request   was
              successful,  and  that  a  PR  or other data will follow.  Codes
              300-349 are used when transmitting PRs, and 350-399 are used for
              other responses.

              Codes  in  the  300-349  range are followed by a series of CRLF-
              terminated lines containing the command response, usually a  PR.
              The  final  line of the result is a single period (`.').  Result
              lines that begin with a period have an extra period prepended to
              them.

              Codes  in  the  350-399 range use a different scheme for sending
              their responses.  The three-digit numeric code will be  followed
              by  either  a  dash  (`-')  or  a  single space.  If the code is
              followed by a dash, that indicates that  another  response  line
              will  follow.  The final line of the response has a single space
              after the three-digit code.

              In previous versions  of  the  protocol  the  first  line  of  a
              CODE_INFORMATION  (310)  response was to be ignored.  This is no
              longer  the  case.   Instead,  any  lines   marked   with   code
              CODE_INFORMATION_FILLER  (351)  are  to be ignored.  This allows
              the server  to  transmit  additional  headers  or  other  human-
              readable text that can be safely ignored by the clients.

       Codes 400-599
              An error occurred, usually because of invalid command parameters
              or invalid input from  the  client,  missing  arguments  to  the
              comamand,  or  a command was issued out of sequence.  The human-
              readable message associated with the response line describes the
              general problem encountered with the command.

              Multiple  error messages may be returned from a command; in this
              case the `-' continuation character is used on all but the  last
              response line.

       Codes 600-799
              An  internal  error  occurred  on the server, a timeout occurred
              reading data from the client, or  a  network  failure  occurred.
              These  errors  are  of  the  "this should not occur" nature, and
              retrying the operation may resolve  the  problem.   Fortunately,
              most  GNATS  transactions are idempotent; unfortunately, locking
              the database or a PR  are  not  repeatable  actions  (we  cannot
              determine   if  an  existing  lock  is  the  one  we  originally
              requested, or someone else's).

COMMANDS

       Note that the set of GNATS commands and  their  responses  is  somewhat
       inconsistent  and  is  very much in flux.  At present the GNATS clients
       are  rather  simple-minded  and  not  very  strict   about   processing
       responses.   For  example,  if  the  server  were  to  issue a code 300
       (CODE_PR_READY) response to a CHDB command, the  client  would  happily
       expect to see a PR appear (and would print it out if one was sent).

       It  is  thus  suggested that any clients that use the GNATS protocol be
       equally flexible about the  way  received  responses  are  handled;  in
       particular, only the first digit of the response code should be assumed
       to be meaningful, although subsequent digits are needed in  some  cases
       (codes 300-399). No attempt should be made to parse the message strings
       on error response lines; they are only intended to be read  by  humans,
       and will be changed on a regular basis.

       Almost  every  command may result in the response 440 (CODE_CMD_ERROR).
       This indicates that there was a problem  with  the  command  arguments,
       usually because of insufficient or too many arguments being specified.

       USER [<userid> [<password>]]
            Specifies  the  userid  and  password for database access.  Both a
            username and a password may be  given,  only  a  username  may  be
            given,  or  both  may be omitted; if both are omitted, the current
            access level is returned.

            The possible server responses are:

            350 (CODE_INFORMATION)
                   The current access level is specified.

            422 (CODE_NO_ACCESS)
                   A matching username and password could not be found.

            200 (CODE_OK)
                   A matching username and password was found, and  the  login
                   was successful.

       QUIT Requests that the connection be closed.  Possible responses:

            201 (CODE_CLOSING)
                   Normal exit.

            The  quit  command  has  the dubious distinction of being the only
            command that cannot fail.

       LIST <list type>
            Describes various aspects of the database.  The lists are returned
            as  a  list  of  records,  one  per line.  Each line may contain a
            number of colon-separated fields.

            Possible values for list type include

              Categories
                     Describes the legal categories for the database.

              Submitters
                     Describes the set of submitters for the database.

              Responsible
                     Lists the names in the responsible  administrative  file,
                     including their full names and email addresses.

              States Lists the states listed in the state administrative file,
                     including the state type (usually blank for most  states;
                     the closed state has a special type).

              FieldNames
                     Lists the entire set of PR fields.

              InitialInputFields
                     Lists  the  fields  that  should  be present when a PR is
                     initially entered.

              InitialRequiredFields
                     Lists fields that have to be present and nonempty when  a
                     PR  is  initially  entered  (fields containing only blank
                     characters such as  spaces  or  newlines  are  considered
                     empty.)

              Databases
                     Lists the set of databases.

            The possible responses are:

            301 (CODE_TEXT_READY)
                   Normal response, followed by the records making up the list
                   as described above.

            416 (CODE_INVALID_LIST)
                   The requested list does not exist.

       FTYP <field> [<field> ...]
            Describes the type of data held in the field(s) specified with the
            command.  The currently-defined data types are:

            Text   A plain text field, containing exactly one line.

            MultiText
                   A text field possibly containing multiple lines of text.

            Enum   An  enumerated  data  field; the value is restricted to one
                   entry out of a list of values associated with the field.

            MultiEnum
                   The field contains one or more enumerated  values.   Values
                   are separated with spaces or colons (:).

            Integer
                   The field contains an integer value, possibly signed.

            Date   The field contains a date.

            TextWithRegex
                   The  value  in  the  field  must  match one or more regular
                   expressions associated with the field.

            The possible responses are:

            350 (CODE_INFORMATION)
                   The normal response; the supplied text is the data type.

            410 (CODE_INVALID_FIELD_NAME)
                   The specified field does not exist.

            If multiple field names were given, multiple response  lines  will
            be  sent,  one  for  each  field,  using the standard continuation
            protocol; each response except the last will  have  a  dash  (`-')
            immedately after the response code.

       FTYPINFO <field> <property>
            Provides  field-type-related  information.   Currently,  only  the
            property `separators' for MultiEnum  fields  is  supported.   When
            `separators' is specified, the possible return codes are:

            350 (CODE_INFORMATION)
                   A  proper  MultiEnum  field  was specified and the returned
                   text is the string of separators specified for the field in
                   the dbconfig file, quoted within ''.

            435 (CODE_INVALID_FTYPE_PROPERTY)
                   The  `separators'  property  is not defined for this field,
                   i.e. the specified field is not of type MultiEnum.

            Currently,  specifying  a  different  property  than  `separators'
            results in return code 435 as above.

       FDSC <field> [<field> ... ]
            Returns  a human-readable description of the listed field(s).  The
            possible responses are:

            350 (CODE_INFORMATION)
                   The  normal  response;  the  supplied  text  is  the  field
                   description.

            410 (CODE_INVALID_FIELD_NAME)
                   The specified field does not exist.

            Like  the FVLD command, the standard continuation protocol will be
            used if multiple fields were specified with the command.

       FIELDFLAGS <field> [<field> ... ]
            Returns a set of flags describing  the  specified  field(s).   The
            possible   responses   are  either  410 (CODE_INVALID_FIELD_NAME),
            meaning that the specified field is  invalid  or  nonexistent,  or
            350 (CODE_INFORMATION)  which  contains  the  set of flags for the
            field.  The flags may be blank, which  indicate  that  no  special
            flags have been set for this field.

            Like  the  FDSC  and  FTYP  commands,  multiple field names may be
            listed with the command, and a response line will be returned  for
            each one in the order that the fields appear on the command line.

            The flags include:

            textsearch
                   The  field  will  be  searched  when a text field search is
                   requested.

            allowAnyValue
                   For fields that contain enumerated values, any legal  value
                   may  be used in the field, not just ones that appear in the
                   enumerated list.

            requireChangeReason
                   If the field is edited, a reason for  the  change  must  be
                   supplied  in  the new PR text describing the reason for the
                   change.  The reason must be  supplied  as  a  multitext  PR
                   field  in the new PR whose name is field-Changed-Why (where
                   field is the name of the field being edited).

            readonly
                   The field is read-only, and cannot be edited.

       FVLD <field>
            Returns one or more regular expressions or strings  that  describe
            the valid types of data that can be placed in field.  Exactly what
            is returned is dependent on the type of data that can be stored in
            the  field.  For most fields a regular expression is returned; for
            enumerated fields, the returned  values  are  the  list  of  legal
            strings that can be held in the field.

            The possible responses are:

            301 (CODE_TEXT_READY)
                   The  normal  response,  which  is  followed  by the list of
                   regexps or strings.

            410 (CODE_INVALID_FIELD_NAME)
                   The specified field does not exist.

       VFLD <field>
            VFLD can be used to validate a given value  for  a  field  in  the
            database.  The client issues the VFLD command with the name of the
            field to validate as an argument.  The server will either  respond
            with 212 (CODE_SEND_TEXT), or 410 (CODE_INVALID_FIELD_NAME) if the
            specified field does not exist.

            Once the 212 response is received  from  the  server,  the  client
            should  then  send  the line(s) of text to be validated, using the
            normal quoting mechanism described for PRs.   The  final  line  of
            text  is  followed  by a line containing a single period, again as
            when sending PR text.

            The server will then either respond with 210 (CODE_OK), indicating
            that the text is acceptable, or one or more error codes describing
            the problems with the field contents.

       INPUTDEFAULT <field> [<field> ... ]
            Returns the suggested default value for  a  field  when  a  PR  is
            initially    created.    The   possible   responses   are   either
            410(CODE_INVALID_FIELD_NAME), meaning that the specified field  is
            invalid  or  nonexistent, or 350 (CODE_INFORMATION) which contains
            the default value for the field.

            Like the FDSC and FTYP  commands,  multiple  field  names  may  be
            listed  with the command, and a response line will be returned for
            each one in the order that the fields appear on the command line.

       RSET Used to reset  the  internal  server  state.   The  current  query
            expression  is  cleared,  and the index of PRs may be reread if it
            has been updated since the start of the session.
            The possible responses are:

            200 (CODE_OK)
                   The state has been reset.

            440 (CODE_CMD_ERROR)
                   One or more arguments were supplied to the command.

            6xx (internal error)
                   There were problems resetting the  state  (usually  because
                   the  index  could  not  be  reread).   The  session will be
                   immediately terminated.

       LKDB Locks the main GNATS database.  No subsequent database locks  will
            succeed until the lock is removed.  Sessions that attempt to write
            to the database will fail.
            The possible responses are:

            200 (CODE_OK)
                   The lock has been established.

            440 (CODE_CMD_ERROR)
                   One or more arguments were supplied to the command.

            431 (CODE_GNATS_LOCKED)
                   The database is already locked, and the lock could  not  be
                   obtained after 10 seconds.

            6xx (internal error)
                   An  internal  error occurred, usually because of permission
                   or other filesystem-related problems.  The lock may or  may
                   not have been established.

       UNDB Unlocks  the  database.  Any session may steal a database lock; no
            checking of any sort is done.
            The possible responses are:

            200 (CODE_OK)
                   The lock has been removed.

            432 (CODE_GNATS_NOT_LOCKED)
                   The database was not locked.

            440 (CODE_CMD_ERROR)
                   One or more arguments were supplied to the command.

            6xx (internal error)
                   The database lock could not be removed, usually because  of
                   permissions or other filesystem-related issues.

       LOCK <PR> <user> [<pid>]
            Locks  the  specified  PR, marking the lock with the name user and
            the optional pid.  (No checking is  done  that  the  user  or  pid
            arguments  are  valid  or  meaningful;  they are simply treated as
            strings.)

            The EDIT command requires that the PR be locked before it  may  be
            successfully executed.  However, it does not require that the lock
            is owned by the editing session, so the usefulness of the lock  is
            simply as an advisory measure.

            The  APPN  and  REPL  commands  lock the PR as part of the editing
            process, and they do not require that the PR be locked before they
            are invoked.

            The possible responses are:

            440 (CODE_CMD_ERROR)
                   Insufficient  or  too  many arguments were specified to the
                   command.

            300 (CODE_PR_READY)
                   The lock was successfully obtained;  the  text  of  the  PR
                   (using the standard quoting mechanism for PRs) follows.

            400 (CODE_NONEXISTENT_PR)
                   The PR specified does not exist.

            430 (CODE_LOCKED_PR)
                   The PR is already locked by another session.

            6xx (internal error)
                   The  PR  lock  could  not  be  created,  usually because of
                   permissions or other filesystem-related issues.

       UNLK <PR>
            Unlocks PR.  Any user may unlock a PR, as no checking is  done  to
            determine if the requesting session owns the lock.

            The possible responses are:

            440 (CODE_CMD_ERROR)
                   Insufficient  or  too  many arguments were specified to the
                   command.

            200 (CODE_OK)
                   The PR was successfully unlocked.

            433 (CODE_PR_NOT_LOCKED)
                   The PR was not locked.

            6xx (internal error)
                   The PR could not be unlocked, usually because of permission
                   or other filesystem-related problems.

       DELETE <PR>
            Deletes  the  specified PR.  The user making the request must have
            admin privileges.  If successful,  the  PR  is  removed  from  the
            filesystem and the index file; a gap will be left in the numbering
            sequence for PRs.  No checks are made that the PR is closed.

            The possible responses are:

            200 (CODE_OK)
                   The PR was successfully deleted.

            422 (CODE_NO_ACCESS)
                   The  user  requesting  the  delete  does  not  have   admin
                   privileges.

            430 (CODE_LOCKED_PR)
                   The PR is locked by another session.

            431 (CODE_GNATS_LOCKED)
                   The  database  has  been  locked, and no PRs may be updated
                   until the lock is cleared.

            6xx (internal error)
                   The PR could not be successfully deleted,  usually  because
                   of permission or other filesystem-related problems.

       CHEK [initial]
            Used  to  check  the  text of an entire PR for errors.  Unlike the
            VFLD command, it accepts an entire  PR  at  once  instead  of  the
            contents of an individual field.

            The  initial  argument indicates that the PR text to be checked is
            for a PR that will be  newly  created,  rather  than  an  edit  or
            replacement of an existing PR.

            After  the  CHEK  command  is issued, the server will respond with
            either a 440 (CODE_CMD_ERROR) response indicating that the command
            arguments  were  incorrect,  or a 211 (CODE_SEND_PR) response code
            will be sent.

            Once the 211 response is received  from  the  server,  the  client
            should  send  the  PR  using  the normal PR quoting mechanism; the
            final line of the PR is then  followed  by  a  line  containing  a
            single period, as usual.

            The server will then respond with either a 200 (CODE_OK) response,
            indicating there were no problems with the supplied text,  or  one
            or more error codes listing the problems with the PR.

       EDIT <PR>
            Verifies   the  replacement  text  for  PR.   If  the  command  is
            successful, the contents of PR are completely  replaced  with  the
            supplied  text.  PR must previously have been locked with the LOCK
            command.

            The possible responses are:

            431 (CODE_GNATS_LOCKED)
                   The database has been locked, and no  PRs  may  be  updated
                   until the lock is cleared.

            433 (CODE_PR_NOT_LOCKED)
                   The PR was not previously locked with the LOCK command.

            400 (CODE_NONEXISTENT_PR)
                   The  specified  PR  does  not  currently  exist.   The SUBM
                   command should be used to create new PRs.

            211 (CODE_SEND_PR)
                   The client should now  transmit  the  replacement  PR  text
                   using  the  normal  PR quoting mechanism.  After the PR has
                   been sent, the  server  will  respond  with  either  a  200
                   (CODE_OK)  response  indicating the edit was successful, or
                   one or more error codes listing problems with  either  with
                   the  replacement  PR  text,  or  errors  encountered  while
                   updating the PR file or index.

       APPN <PR> <field>

       REPL <PR> <field>
            Appends to or replaces the  contents  of  field  in  PR  with  the
            supplied   text.    The  command  returns  a  201 (CODE_SEND_TEXT)
            response; the client should then transmit the new  field  contents
            using  the  standard  PR  quoting mechanism.  After the server has
            read the new contents, it then  attempts  to  make  the  requested
            change to the PR.

            The possible responses are:

            200 (CODE_OK)
                   The PR field was successfully changed.

            400 (CODE_NONEXISTENT_PR)
                   The PR specified does not exist.

            410 (CODE_INVALID_FIELD_NAME)
                   The specified field does not exist.

            402 (CODE_UNREADABLE_PR)
                   The PR could not be read.

            431 (CODE_GNATS_LOCKED)
                   The  database  has  been  locked, and no PRs may be updated
                   until the lock is cleared.

            430 (CODE_LOCKED_PR)
                   The PR is locked, and may not be altered until the lock  is
                   cleared.

            413 (CODE_INVALID_FIELD_CONTENTS)
                   The  supplied  (or  resulting) field contents are not valid
                   for the field.

            6xx (internal error)
                   An internal error occurred, usually because  of  permission
                   or  other  filesystem-related  problems.  The PR may or may
                   not have been altered.

       SUBM Submits a new PR into the database.  The supplied text is verified
       for correctness, and if no problems are found a new PR is created.

            The possible responses are:

            431 (CODE_GNATS_LOCKED)
                   The  database  has been locked, and no PRs may be submitted
                   until the lock is cleared.

            211 (CODE_SEND_PR)
                   The client should now transmit the new PR  text  using  the
                   normal  quoting mechanism.  After the PR has been sent, the
                   server will respond with either a  200  (CODE_OK)  response
                   indicating  that the new PR has been created (and mail sent
                   to the appropriate persons), or one  or  more  error  codes
                   listing problems with the new PR text.

       CHDB <database> [<userid> [<password>]]
              Switches  the  current  database  to  the  name specified in the
              command.  An optional  username  or  an  optional  username  and
              password may be given.

            The possible responses are:

            422 (CODE_NO_ACCESS)
                   The  user  does not have permission to access the requested
                   database.

            417 (CODE_INVALID_DATABASE)
                   The database specified does  not  exist,  or  one  or  more
                   configuration errors in the database were encountered.

            210 (CODE_OK)
                   The  current  database  is  now  database.   Any operations
                   performed will now be applied to that database.   The  user
                   access level for the new database is also returned.

       DBLS   Lists the known set of databases.

            The possible responses are:

            6xx (internal error)
                   An  internal  error  was encountered while trying to obtain
                   the list of available databases, usually  due  to  lack  of
                   permissions  or  other  filesystem-related problems, or the
                   list of databases is empty.

            301 (CODE_TEXT_READY)
                   The list of databases follows,  one  per  line,  using  the
                   standard  quoting  mechanism.   Only the database names are
                   sent.

       DBDESC <databasename>
              Returns a human-readable description of the specified  database.
              Responses include:

            6xx (internal error)
                   An  internal error was encountered while trying to read the
                   list  of  available  databases,  usually  due  to  lack  of
                   permissions  or  other  filesystem-related problems, or the
                   list of databases is empty.

            350 (CODE_INFORMATION)
                   The normal response; the  supplied  text  is  the  database
                   description.

            417 (CODE_INVALID_DATABASE)
                   The specified database name does not have an entry.

       EXPR <query expression>
              Specifies  a  query  expression  used  to  limit  which  PRs are
              returned from the QUER command.  The expression uses the  normal
              query  expression  syntax,  as described in the manual entry for
              query-pr(1).

            Multiple EXPR commands may be issued; the expressions are  boolean
            ANDed together.

            Expressions are cleared by the RSET command.

            Possible responses include:

            415 (CODE_INVALID_EXPR)
                   The  specified  expression  is  invalid,  and  could not be
                   parsed.

            200 (CODE_OK)
                   The expression has been accepted, and will be used to limit
                   the results returned from QUER.

       QFMT <query format>
            Use  the  specified  query format to format the output of the QUER
            command.  The query format may be  either  the  name  of  a  query
            format known to the server, or an actual query format.
            The possible responses are:

            200 (CODE_OK)
                   The  normal response, which indicates that the query format
                   is acceptable.

            440 (CODE_CMD_ERROR)
                   No query format was supplied.

            418 (CODE_INVALID_QUERY_FORMAT)
                   The specified query format does not exist, or could not  be
                   parsed.

       QUER [PR] [PR] [...]
            Searches  the  contents  of  the  database  for PRs that match the
            (optional) specified expressions with the  EXPR  command.   If  no
            expressions  were  specified  with  EXPR, the entire set of PRs is
            returned.

            If one or more PRs are specified on the  commandline,  only  those
            PRs will be searched and/or output.

            The  format  of  the  output from the command is determined by the
            query format selected with the QFMT command.

            The possible responses are:

            418 (CODE_INVALID_QUERY_FORMAT)
                   A valid format was not  specified  with  the  QFMT  command
                   prior to invoking QUER.

            300 (CODE_PR_READY)
                   One  or  more  PRs will be output using the requested query
                   format.  The PR text is quoted  using  the  normal  quoting
                   mechanisms for PRs.

            220 (CODE_NO_PRS_MATCHED)
                   No PRs met the specified criteria.

       ADMV <field> <key> [<subfield>]
            Returns  an  entry from an adm file associated with field.  key is
            used to look up the entry  in  the  data  file.   If  subfield  is
            specified, only the value of that subfield is returned; otherwise,
            all of the fields in the adm data file are returned, separated  by
            colons (`:').

            The responses are:

            410 (CODE_INVALID_FIELD_NAME)
                   The specified field does not exist.

            221 (CODE_NO_ADM_ENTRY)
                   An  adm  entry matching the key was not found, or the field
                   does not have an adm file associated with it.

            350 (CODE_INFORMATION)
                   The normal response; the supplied  text  is  the  requested
                   field(s).

ENVIRONMENT VARIABLES

       The GNATSDB environment variable is used to determine which database to
       use.  For a local database, it contains the name  of  the  database  to
       access.   gnatsd  cannot  service  remote  databases  (tho  it might be
       interesting if it could) so the database is always assumed to be local.

       If GNATSDB is not set and the --database option is not supplied, it  is
       assumed that the database is local and that its name is default.

SEE ALSO

       Keeping  Track: Managing Messages With GNATS (also installed as the GNU
       Info file gnats.info)

       databases(5), dbconfig(5), delete-pr(8),  edit-pr(1)  file-pr(8),  gen-
       index(8),  gnats(7),  gnatsd(8),  mkcat(8), mkdb(8), pr-edit(8), query-
       pr(1), queue-pr(8), send-pr(1).

COPYING

       Copyright (c) 2000, 2003 Free Software Foundation, Inc.

       Permission is granted to make and distribute verbatim  copies  of  this
       manual  provided  the  copyright  notice and this permission notice are
       preserved on all copies.

       Permission is granted to copy and distribute modified versions of  this
       manual  under  the  conditions  for verbatim copying, provided that the
       entire resulting derived work is  distributed  under  the  terms  of  a
       permission notice identical to this one.

       Permission  is  granted  to  copy  and  distribute translations of this
       manual into another language, under the above conditions  for  modified
       versions,  except  that  this  permission  notice  may  be  included in
       translations approved by the Free Software Foundation instead of in the
       original English.