Fri Dec 10 11:49:15 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* Version 3.2

Mon Dec  6 16:39:33 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* version 3.01.10

	* mail-query.sh: Use MAIL_AGENT, put $(bindir) first on path.

	* Makefile.in (mail-query): Support that.

	* getdate.c: Generate a new one.

Wed Dec  1 14:25:19 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* version 3.01.9

	* man/Makefile.in: Fix clean targets.

	* Makefile.in: Fix clean targets.

Tue Nov 30 11:22:07 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* file-pr.c (run_atpr): Quote any ' characters in the arguments.
	(arg_quote): Fn to do that.

	* Makefile.in (mkdist): Remove VERSION subst.

	* mkdist.sh (install): Fix ($ typo.
	(send-pr): Fix sed delimiters, remove VERSION subst.
	(send-pr.1): Remove rule.
	(send-pr.el): Add datadir subst, remove VERSION.

	* query-pr.c (long_options): --multitext takes an option.

	* configure.in (GNATS_ROOT): Fix default.

Fri Nov 26 02:15:20 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* config.c.in (configure): Don't use a number for the length of
	gnats-adm/config, since it can change.

Tue Nov 23 13:37:56 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* gnats-el.in (gnats::get-pr-category): If we get a false match on the
	category number, don't loop indefinitely.

Mon Nov 22 00:26:08 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* file-pr.c (PAT): Allow 0-9 in category name.

	* gnats-el.in (gnats::real-pr-addr): Return nil if arg is "".

Fri Nov 19 12:17:34 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* config.c.in (safe_strtok): A strtok which never returns NULL.
	(configure): Use it.

	* Makefile.in: Change XTRAFLAGS to LDFLAGS.
	(install-gnats-bin): Don't show ***s when there's no error.

Tue Nov 16 14:11:48 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* edit-pr.sh (checking): Massage psychotic shells.

Fri Nov 12 16:20:44 1993  Jason Merrill  (jason@deneb.cygnus.com)

	Fri Nov 12 16:08:23 1993  "Jonathan I. Kamens" (jik@security.ov.com)

	* pr-edit.c (main): Add -L and -U options to lock and unlock the
	entire database.

	Fri Nov 12 16:04:51 1993  Jim Meyering  (meyering@idefix.comco.com)

	* Makefile.in: Tweak for short-name systems, use temp files
	to avoid leaving targets in incomplete state.

	Fri Nov 12 15:48:01 1993  "Jonathan I. Kamens" (jik@security.ov.com)

	* edit-pr.sh: Use hostname for pr-edit --lock.

	Wed Nov 10 20:23:55 1993  Jason Molenda  (crash@cygnus.com)

	* edit-pr.sh: Don't try to call pr-addr on the originator of the PR.

Wed Nov 10 11:43:40 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* most all: Make gcc -Wall happier.

	* configure.in: Add AC_HAVE_LIBRARY(malloc) for IRIX.

	* headers.c (read_header): Overhaul to handle PR fields in headers
	better and clean up ugly code.

Tue Nov  9 11:45:47 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* query-pr.c (regfind): Dynamically allocate fastmap.

	Thu Nov  4 11:33:05 1993  Jim Meyering  (meyering@idefix.comco.com)

	* query-pr.c: Add decls for xmalloc and basename.
	(disbar): Return str, parenthesize assignment in condition.

	* pr.c (read_pr): Make sure that array indices are unsigned char.

	* pr-edit.c: Add decls for basename and xmalloc.
	(main): Lose cast of basename retval.
	(main): Initialize fname to NULL.

	* gnats.h (SKIP_WHITE_SPACE): Parenthesize macro arg, make sure that
	array index is unsigned char.

	* Makefile.in (mostlyclean): Also remove *.aux files.

	* headers.c (read_header): Remove unused `received' var.

Wed Nov  3 13:47:47 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* Makefile.in (install-gnats-bin): Deal with not running as root or
	gnats.
	(install-tools-bin): Ditto.

Tue Nov  2 11:43:58 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* gnats-el.in (gnats:view-pr): If already loaded, look at beginning
	of PR.

	* pr-edit.c (check_pr): Fix up output.

	* pr-addr.c (main): Accept options.

	* file-pr.c (gnats): Use key for responsible field, not alias.

	* gnats-el.in (gnats::real-pr-addr): Call the C pr-addr program
	if the responsible party can't be found in the file.
	(gnats::bm): (buffer-substring (match-beginning x) (match-end x)).
	(gnats::pr-edit): All functions that use the pr-edit binary call this
	now.

	* files.c (get_responsible_address): Check the responsible file
	first, and fill in the alias field if necessary.

	* Makefile.in (install-gnats-bin): Break up installation of
	examples and config file.
	(config): Update.
	(GNATS_DEFS): Include BINDIR, B*_*
	Add entries for business hours stuff

	* configure.in: Add business hours stuff.

	* config.h: Remove #defines of business hours, BINDIR

	* config.c.in: Add bindir.

	* edit-pr.sh: Also look in $VISUAL for editor.

Mon Nov  1 10:05:10 1993  Jeffrey Osier  (jeffrey@thepub.cygnus.com)

	* gnats/*.texi, send-pr/*.texi, gnats/man/*.man:  up to date.

Sun Oct 31 22:17:26 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* file-pr.c (run_atpr): Remove gnats_root from before BINDIR.

	* queue-pr.c: Ditto.

Fri Oct 29 11:27:23 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* internal.c (lock_gnats): Wait 10 seconds for the lock to go away
	before dying.

	* query-pr.c (main): Don't allow -d before -R.

	* internal.c (unlock_gnats): If no lock, don't exit, just return.
	(block_signals): Don't ignore signals, just trap them.
	(unblock_signals): More signals.
	(unlock_quit): Like unlock_death, but quieter.

	* mail-query.sh: Strip leading space from headers.

	* gnats-el.in (gnats::fields): Add "mistaken".
	Allow local usernames as completions for responsible field.

Wed Oct 27 18:49:57 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* Makefile.in (gnats.info): Fix.
	(gnats.dvi): Fix.

Wed Oct 27 17:08:29 1993  Jeffrey Osier (jeffrey@cygnus.com)

	* gnats-usage.texi, gnats-install.texi, gnats-admin.texi:
		New Doc Structure (names will change shortly)
	* gnats.texi:  updated

Wed Oct 27 15:58:44 1993  Jeffrey Osier (jeffrey@cygnus.com)

	* Makefile.in:  fix dvi and info targets

Tue Oct 26 14:03:04 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* main.c (long_options): Disable -m option

	* gnats-el.in (gnats:kill-buffer): Kill the right buffer

	* configure.in: Change gnats-root to gnats-db

	* *: Change $(GNATS_ROOT)/gnats-dist to $(datadir)/gnats/dist

	* Makefile.in (config): Include SUBMITTER field
	(install-gnats-bin & others): Change GNATS_ROOT to libdir

	* pr-edit.c (usage): Update usage
	(main): standardsify -V and -h options

Mon Oct 25 17:46:01 1993  Jason Merrill  (jason@rtl.cygnus.com)

	* edit-pr.sh (mail_to): Put back calls to $PR_ADDR

Thu Oct 21 15:40:48 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* gnats-el.in (gnats::rw): Don't check retval; call-process-region
	non-deterministically returns 1 or 0 when called on /bin/false
	under 19.19.  Rrrrrrrrrrgh.

	* query-pr.c (query_pr): If numeric argument & searching, don't
	keep looking for another matching PR after you've found one.
	Output a \n after printing out a PR in all cases.
	(main): Don't output \n's.

Wed Oct 20 11:43:25 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* Makefile.in (TEXINPUTS): Fix $(srcdir) references
	(gnats.dvi): Add TEXINPUTS=$(TEXINPUTS)

	* configure.in (MAIL_AGENT): Also look in /usr/ucblib.

	* pr-edit.c (main): Block signals earlier and unblock them later.
	I've locked GNATS twice because of this bug.

	* Makefile.in (uninstall): Don't use {}

	* files.c (find_responsible): Zero out new Responsible struct.

	* pr-addr.c (main): Make it work.  It never worked before.

	* edit-pr.sh (old_resp): Avoid infinite loop on less intelligent
	seds.  Make the recipient decision actually work.  Remove $HOSTNAME
	bunk.

	* misc.c (open_mail_file): Use "w" mode for popen, not "w+".

	* query-pr.c (check_text): Fix logic.

	* file-pr.c (append_report): If a PR mysteriously acquires an
	invalid Submitter field, cope.

Tue Oct 19 15:42:20 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* mkdist.sh: Change libdir to datadir, subst it into send-pr.

	* gnats-el.in (gnats::lock): Don't show trailing ^J in errors.
	(gnats::lock): Add case for existence of gnats.lock.
	(gnats::pr-addr): Don't require use of responsible file.
	(gnats::getpwnam): New function.
	(gnats::get-responsible-from-passwd): New function.
	(gnats::user-name-p): New function.

Tue Oct 19 14:36:52 1993  Jeffrey Osier  (jeffrey@thepub.cygnus.com)

	* Makefile.in:  relocated TEXINPUTS to be more globally useful

Mon Oct 18 16:15:16 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* edit-pr.sh (MAIL_AGENT): Add quotes.
	(old_resp, new_resp): Strip out spaces again.
	(reply_to): Go back to old way of determining since $#%^&* AIX sed
	doesn't deal with labels on the command line.

	* query-pr.c (do_pr): Make return value reasonable.

	* files.c: Remove duplicate #include of "pathmax.h".

	* file-pr.c: Remove duplicate #include of <sys/types.h>.

	* configure.in: Don't assume that sendmail will be found.

	* aclocal.m4 (AC_FIND_PROGRAM): Don't use AC_PROGRAM_CHECK.

	* Makefile.in: makedepend.

Sat Oct 16 01:32:06 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* query-pr.c: Change -t option to -m, add -t option for searching
	Text fields.
	(do_pr_internal): Fix idiot bug.
	(regfind): Don't exit if re_search dies.
	(query_pr): Fix another idiot bug.

Fri Oct 15 14:49:52 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* Makefile.in (install-tools-bin): Allow (partial) installation
	as normal user.  pr-edit must still be installed as root.

	* configure.in: Lose AC_GCC_TRADITIONAL.

Thu Oct 14 22:14:32 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* query-pr.c: Add some code to use Rx package, but don't actually
	use it -- GNU regex is faster on sample queries I tried.
	(pr_matches): Deal with skip_closed.
	(regfind): Use a fastmap.
	(do_pr): Farm out the checks to do_pr_internal.
	(query_pr): Clean up code, make -t work with list of PRs.
	(main): Remove RE_DOT_NEWLINE from syntax, since it causes re_match_2
	to become very unhappy when trying to match something like "f.*xyzzy"
	against a 1MB string which contains an f, but no xyzzy.

	* mkcat.sh: Give an accurate error message if $DATADIR/gnats doesn't
	exist.

	* files.c (find_submitter): Zero out submitter struct before
	assigning to parts of it.

	* Makefile.in (install-tools-bin): Also create $(datadir)/gnats,
	so it's there for mkcat.

Wed Oct 13 11:54:15 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* misc.c: Change MAIL_AGENT to mail_agent

	* configure.in (MAIL_AGENT): Look for sendmail

	* edit-pr.sh: Use MAIL_AGENT.

	* config.h: Add decl for mail_agent.

	* Makefile.in (all-tools): Put gnats.elc back.
	(gnats.elc): Use send-pr-el.in instead of send-pr.el.

	* config.c.in: Add MAIL_AGENT, lose unions which were confusing gcc.

	* at-pr.sh (MAIL_AGENT): Use.

	* aclocal.m4 (AC_FIND_PROGRAM): New macro.

	* Makefile.in (MAIL_AGENT): New var.
	(GNATS_VARS): Include MAIL_AGENT.
	(GNATS_DEFS): Ditto.
	(config): ".
	(at-pr):  Use MAIL_AGENT.
	(edit-pr): ".
	(mkcat): Change LIBDIR to DATADIR.
	(rmcat): ".

	* mkcat.sh: Put category list in $(datadir).

	* rmcat.sh: Ditto.

	* gnats-el.in (gnats::mail-PR-changed): Use gnats::make-temp-name.
	(gnats:gnats-mode): Ditto.
	(gnats::tmpdir): New variable, containing $TMPDIR or /tmp.
	(gnats::make-temp-name): Use gnats::tmpdir for location.

	* mkdist.sh: Install man page properly, substitute variables properly,
	install things with the proper mode.

	* xmalloc.c (xfree): New function, doesn't free null pointer.

	* headers.c (init_header): Stem memory leak.
	(header_value): Use strdup so that no one tries to realloc a
	string constant.
	(set_header): Stem memory leak.

	* pr.c (init_pr, field_value, set_field): Ditto.

	* configure.in (SUBMITTER): Set to '$(GNATS_SITE)'.

Tue Oct 12 13:53:24 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* aclocal.m4: Remove AC_PARSEARGS and AC_NOTICE now that Autoconf
	1.6 has been released.

	* queue-pr.c (run_gnats): Remove gnats.lock if file-pr broke and left
	it behind.

	* xmalloc.c: Use abort() instead of error(), so that it gets caught
	in file-pr.
	
	* gen-index.c, pr-edit.c, queue-pr.c: umask (022)

	* error.c: Lose
	
	* Makefile.in: Lose error.c, add GNATS_INSTALL to GNATS_VARS,
	move gnats.elc creation to install time (kludge)

	* internals.c (gnats_locked): New function

	* query-pr.c: Use RE_SYNTAX_POSIX_EXTENDED | RE_BK_PLUS_QM.  Promise
	I won't change it anymore.

Fri Oct  8 15:17:48 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* query-pr.c: Add text_search variable, which holds the
	regexp to search for.
	(long_options): Add --text, -t options
	(get_pr): Call init_pr before read_pr
	(regfind): Like regcmp, but uses re_search
	(check_text): Check all MultiText fields & Synopsis field for
	text_search
	(do_pr): Call check_text
	(main): Set text_search on -t option, use RE_SYNTAX_POSIX_BASIC
	(i.e. sed syntax) rather than the variant of egrep I was using
	before.
	(usage): Document -t and --text options.

	* gnats-el.in (gnats:unlock-buffer): Error, rather than message, on
	abort so that kill-buffer doesn't go ahead and kill it anyway.
	(gnats:query-pr): Work under Emacs 18

Tue Oct  5 10:47:46 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* edit-pr.sh: Wrap things in double quotes

Mon Oct  4 12:32:44 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* gnats-el.in: Wrap call-process calls in gnats::rw, which simulates
	a numerical return value for Emacs 18.
	(mh-insert-fields): autoload

Fri Oct  1 15:05:22 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* Makefile.in (VERSION): Bump to 3.01.5

Thu Sep 30 14:49:44 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* gnats-el.in (gnats:unlock-buffer): Set 'e' key in unlocked PR buffer
	to edit the PR again
	(gnats::mail-PR-changed): Fix logic error

Tue Sep 28 12:59:39 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* rmcat.sh: Fix dumb bug, massage Solbourne SunOS bdamage

	* man/Makefile.in (uninstall): Now does something

	* Makefile.in (gnats.elc): New target
	(uninstall): Now does something

	* config.c.in: Add fields for business hours config.

	* btime.c: Move business hours config from here
	(get_response_time): Fix stupid mistake

	* config.h: Add declarations for business hours configuration

Mon Sep 27 17:05:57 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* globals.h: Remove the response buffer from the get_response_time
	prototype.

	* file-pr.c (gnats): Lose the response_time variable.

	* btime.c (get_response_time): Overhaul...hopefully it works now.

	* mkdist.sh (install): The man page is named send-pr.man.

Fri Sep 24 13:19:13 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* pr.c (read_pr): Don't stop reading the pr when you hit the
	Organization field.

	* gnats-el.in (gnats::tr): New function, does basically the same
	thing as tr(1)
	(make-auto-save-file-name): Redefine global function so that
	buffers with /'s in their names can be auto-saved.
	(gnats::fields): Copy send-pr::fields by printing it to a string
	and reading it back.  Is there a better way?

Mon Sep 20 13:17:36 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* btime.c (get_response_time): Make 't' static and copy the output
	of localtime() into it so that it is not written over by the ctime()
	call later in the function.

Thu Sep 16 14:51:59 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* gnats-el.in (gnats::mail-PR-changed-mail-setup): Fix typo
	(gnats::get-pr-category): Ditto

Tue Sep 14 16:49:13 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* gnats-el.in (gnats:gnats-mode): Kludge to avoid errors when
	trying to autosave buffer
	(gnats::pr-addr): Make it work
	(gnats::get-alist): Optimize further
	(gnats::get-list): Ditto

	* edit-pr.sh (reply_to): Clean up sed script somewhat

	* config.c.in: Disable ANSI initializers until gcc is fixed

	* Makefile.in (OBJECTS): Add regex.o

	* file-pr.c (check_if_reply): Use a regular expression

	* aclocal.m4: Make AC_PARSEARGS match next version of autoconf

Mon Sep 13 15:47:18 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* pr-edit.c (main, others): Made return values reasonable

Fri Sep 10 16:39:31 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* gnats-el.in (gnats::vmish-mail-other-window): Rename mail buffer
	to something more informative, kludgily working around sendmail.el's
	refusal to support multiple mail buffers in an intelligent way
	(gnats::vmish-rename-after-send): Indicate that it's been sent
	(gnats::generate-new-buffer-name): Brought back
	(gnats::mail-reply-using-mail): Fixed get-char/get-line typo
	Support Apparently-To: header
	(gnats::mail-other-window-using-mhe): Made consistent with mail version
	(gnats::mail-reply-using-mhe): Support Apparently-To:
	(gnats:view-pr): Make emacs 18 happy; don't rename the buffer in
	view-hook.
	(gnats:view-pr): Don't pollute general view-mode-map

Thu Sep  9 14:04:08 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* man/Makefile.in (INSTALL): Explicitly set

	* configure.in: Don't call AC_PROG_INSTALL

	* Makefile.in (TAGS): Also grab ../send-pr/send-pr-el.in
	(install-gnats-bin): Depend on ../install.sh
	(INSTALL): Explicitly set

	* query-pr.c (regcmp): Support case folding

	* config.m4: Conform to ANSI initializer rules (hmph)

	* gnats-el.in (gnats::get-pr-category): Massive speedup from using
	search-forward rather than re-search-forward
	(gnats::get-alist): Ditto
	(various): Be more precise with kill-buffer

Wed Sep  8 14:07:03 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* Makefile.in (TAGS): Include headers and elisp in tags file

	* query-pr.c (sql_types): ignore case

	* gnats-el.in (gnats::get-list-from-file): Be informative, use
	gnats::get-alist
	(gnats::get-alist): New function, loads all information rather than
	just first field
	(gnats::pr-addr): Use gnats::responsibles rather than program
	(various): avoid use of files
	(gnats::update-responsible): Set responsible field for new category
	(gnats::category-responsible): Return person responsible for cat
	(gnats::no-such-category): new error condition

Fri Sep  3 14:10:07 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* man/Makefile.in: Lose duplicated code

	* main.c (main): Lose -m option, deal with -f failure

	* file-pr.c (notify_responsible): Remove chaff

	* Makefile.in (all): Use a make variable for all & install
	Put $(datadir) in config file
	Move directory creation stuff into separate targets
	Lose duplicate code
	Collapse man page targets

	* gnats-el.in (gnats::isme): New function
	(gnats::mail-PR-changed): Proper checking for sending mail to me

Thu Sep  2 13:59:49 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* queue-pr.c (fork_gnats): Return process exit status

	* headers.c (init_header): Remove trailing space from SM_FROM header

	* gnats-el.in (gnats:unlock-buffer): Use gnats:keep-edited-buffers
	(gnats::mail-functions): Change to list
	(gnats:view-pr): Handle viewing PR that's being edited

	* config.c.in (configure): Allow repeated calls

	* configure.in: Support --with-gnats-root

	* aclocal.m4: Fix AC_PARSEARGS

Wed Sep  1 13:22:32 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* at-pr.sh (RESP_ADDR): Support DEBUG_MODE

	* gnats-el.in (gnats::fields): Mess with fields more
	(gnats::submitters): Added variable

Tue Aug 31 12:12:29 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* gnats-el.in (gnats::fields): Move all values and defaults into
	this monolithic table.
	Change most instances of gnats::find-field to gnats::field-contents
	(gnats::change-field-and-update-audit-trail): Lose
	(gnats::update-audit-trail): Create, reference in gnats::fields

	* queue-pr.c (run_gnats): If file-pr exits with status 2, rename
	to a dot file (so it will be ignored in future)	and notify gnats-admin.

	* main.c (unlock_death): Punt

	* various: Change some exit(1)s to exit(2) or exit(3) to be more
	informative.

	* pr.c (read_pr): Recognize non-multitext fields inside a multitext
	field -- Organization comes early.  Check whether a new field is 
	the same as the current one.

	* file-pr.c (append_report): Prepend all correspondence with a blank
	space so that PRs submitted that way don't mess things up.

Fri Aug 27 08:34:32 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* gnats-el.in (gnats::get-list-from-file): Use insert-file-contents

	* Makefile.in (install-gnats): Install gen-index

	* gnats-el.in (gnats:view-pr): Type 'e' to edit the currently viewed
	PR, update mode line

	* pr.c (read_pr): Don't process non-multitext fields inside
	a multitext field.  Don't process multitext fields more than once.

	* gnats-el.in (gnats::mail-PR-changed): Smarter detection of me
	(gnats::mail-PR-changed): Fix notification of resp&state changes
	together
	(gnats::mail-PR-changed-mail-setup): Send from same window
	(gnats::mail-PR-changed-mhe-setup): Ditto
	(gnats:unlock-buffer): Always bury buffer

Thu Aug 26 11:26:48 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* gnats-el.in (gnats::query-pr-history): New variable
	(gnats:view-pr): New logic for error message
	(gnats:edit-pr): Ditto.
	(gnats:query-pr): Use query-pr-history

	* various: Check for "" rather than NULL returns from 
	{field,header}_value.

	* pr.c (field_value): Always return a string, "" if nothing else.

	* headers.c (header_value): Ditto.

	* Makefile.in: Fix various typos, add missing defaults
	(queue-pr): Link in version.o
	(version.texinfo): Renambe to version.texi

	* query-pr.c (main): Add 'restricted' option for use with mail
	server -- user is not allowed to redirect output, look at a
	different root directory, or view confidential PRs.  For best results,
	use as first argument.

	* misc.c (open_mail_file): If in debug mode, mail to gnats_admin
	and stick another set of headers onto the beginning of the message.

	* config.c.in: Add definition of debug_mode

	* config.h: Ditto

	* Makefile.in (mail-query): Add target
	(lispdir): Use $(datadir)/emacs/lisp.

	* mail-query.sh: Real simple mail server for query-pr

	* file-pr.c (check_if_reply): Deal with re:cat/num subject headers

	* queue-pr.c (main): Add -V option.

	* main.c (main): Print help messages to stderr.

	* globals.h (MAIL_AGENT): Use -oi rather than -i, which doesn't
	exist.

Wed Aug 25 12:00:53 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* gnats-el.in (gnats::get-pr-category): Use insert-file-contents
	instead of insert-file

Tue Aug 24 12:10:55 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* gnats-el.in (gnats:addr): Add definition
	(gnats-mode-map): Bind ^C^T to gnats:category-change-from-to
	(gnats:mail-reply): Handle prefix argument that using-mail version
	looks for
	(gnats::mail-reply-using-mail): Don't be interactive
	(gnats::mail-reply-using-mhe): Ignore argument
	(gnats::push): Move to send-pr-el.in
	(gnats::mail-PR-changed): Mail PR changes to bugs, handle addresses
	better
	(gnats::mail-PR-changed-mail-setup): If mail-other-window returns nil,
	abort PR submission
	(gnats:category-change-from-to): Create
	(gnats:view-pr):	Rename buffer to include category
	(gnats:edit-pr): Remove useless progn's
	Fix error conditions
	Switch to other window if desired PR is there	

	* internal.c (punt): Put two newlines after Subject line so that
	buggy sendmails don't think that "pr-edit:" is another header
	line.

	* Makefile.in (config): Don't put LIBDIR in the config file, since
	it is shared across architectures.
	Change default for GNATS_ROOT to $(statedir)/gnats/gnats-root

	* configure.in: ditto

Sun Aug 22 01:00:59 1993  Jason Merrill  (jason@rtl.cygnus.com)

	* edit-pr.sh (reply_to): More Fun with sed(1) to handle continuation
	lines, avoid use of grep when not needed.

	* headers.c (read_header): Handle continuation lines beginning with
	a space, not just a tab.

Fri Aug 20 11:36:14 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* edit-pr.sh (reply_to): Fun with sed(1).
	Notify originator of state changes.

	* README: Fix acronym

	* gnats.h: Take bzero back out

Thu Aug 19 14:58:29 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* gnats-el.in (gnats::mail-reply-using-mail): Make uninteractive
	(gnats::mail-other-window-using-mail): ditto
	(gnats::mail-reply-using-mhe): Ignore single arg
	(gnats:mail-reply): Accept arg, pass to subroutine
	(gnats:category-change-from-to): Do completing update of category
	initially bound to C-c C-t
	(gnats::mail-PR-changed): Redo address generation

	* Makefile.in (GNATS_VARS): Add SUBMITTER to list

	* gnats-el.in (gnats::mail-PR-changed): Mail diffs to bugs

	* query-pr.c (regcmp): Use re_match rather than re_search
	Use memset rather than bzero

Wed Aug 18 13:51:56 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* pr.h (PR_Name): Put FIX before AUDIT_TRAIL so edit-pr.sh doesn't
	get confused

	* regex.h: #define const if not __STDC__

	* btime.c, pr-addr.c, pr-edit.c, resp-lookup.c: #include "config.h"

	* man/Makefile.in: Change @GNATS_*@ to xGNATS_*x
	man/*.man: ditto

	* gnats-el.in (gnats:unlock-buffer): Only bury buffer if it's displayed
	Only delete file if it exists

	* configure.in: Add section for determining subset of tools to build

	* man/Makefile.in (VPATH): Replace @srcdir@ with $(srcdir)
	(man1ext, man8ext): Add, use per GNU coding standards
	(all): Replace $(GNATS) with @GNATS_ALL@
	(install): Replace $(GNATS) with @GNATS_INSTALL@
	(install-tools-man): Change to install-tools

	* Makefile.in (config): Add $(libdir)
	(gnats.el): Don't subst $(bindir) or $(GNATS_ADDR)
	(install-tools-man): Remove
	(FLAGS_TO_PASS): Remove $(GNATS)
	(GNATS): Remove
	(all): Replace $(GNATS) with @GNATS_ALL@
	(install): Replace $(GNATS) with @GNATS_INSTALL@
	(install-tools): Replace install-tools-man with install-man

	* gnats-el.in: Reorganize namespace (put stuff under gnats:)
	Move duplicated functions, variables into ../send-pr/send-pr-el.in
	(require 'send-pr)
	Make gnats-mail customisation stuff table-driven
	Nuke backups stuff
	(gnats::state-following): Make dotted
	(gnats::check-pr): Don't save-excursion for the whole function
	Use defsubst for some of the smaller functions

	* aclocal.m4: Add modified AC_NOTICE and AC_PARSEARGS macros
	(based on Autoconf 1.5 versions)

	* configure.in: Use AC_INIT

Mon Aug 16 11:18:11 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* gnats-el.in: Change some defconsts to defvars to users can set,
	say, GNATS-ROOT beforehand
	Fix string-match syntax
	Lose gnats-dont-reply-to-names; we want replies to be CC'd to `bugs'

	* query-pr.c (usage): Fix it

	* mkcat.sh: Always create new categories files for send-pr

	* misc.c (get_next_field): Change `delim' from char to int

	* gnats.h: Change proto for get_next_field to char*, char*, int

	* gnats-el.in (query-pr): Use -d option

	* pr.c (check_enum_types): Only check up to first space in value
	(to accomodate duplicate (NUM))

	* gnats-el.in (gnats-unlock-buffer): If not in buf, go there.
	(gnats-mode-kill-buffer-hook): Force unlock, to avoid having
	to answer yes twice about killing a modified PR.
	(gnats-unlock-buffer): Add &optional force argument

Fri Aug 13 15:08:59 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* query-pr.c (print_pr): Add calls to disbar() in sql output routines
	to avoid outputting '|'s inside fields
	(regcmp): Wrapper for regexp routines
	(pr_matches): Use regcmp rather than strcmp
	(main): Set up regex syntax
	(query_pr): Use regcmp for the number
	(main): Always get index
	(numeric): Is it a number or a pattern?

Wed Aug 11 12:36:24 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* configure.in: Protect []'s in expr lines from m4

	* pr.h (PR_Name): Add FIX to enum, add FIX_STRING #define (PR 1310)

	* pr.c (read_pr): Change check of specific categories to ignore if
	prune is true to check for pr[i].datatype == MultiText
	(init_pr): Add values for >Fix: field (PR 1310)

	* main.c (main): Catch SIGHUP, SIGTERM, SIGINT, and SIGQUIT, too.
	(unlock_death): Uncatch them.

	* gnats-el.in (gnats-submit-pr): Changing the state to the same state
	is interesting to the customer.  Don't unlock the PR until mail
	has been sent.

	* headers.c (read_header): Call init_header() (PR 2711)

Tue Aug 10 12:07:45 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* gnats-el.in (query-pr): Use BINDIR to specify the location of the
	query-pr binary

	* file-pr.c (append_report): Don't die if headers are missing
	(i.e. To:)

	* main.c (long_options): Change 'usage' to 'help' and '?' to 'h'
	to conform to the GNU coding standards and the code in main().
	(main): made --version and --help options exit successfully.

	* query-pr.c (long_options): Changed print-path to not require
	an argument (PR 3165)

	* gnats-el.in: Changed 'gnats-unlock' to 'unlock-pr' since it's now
	interactive.
	(gnats-mode): Change paragraph-separate and paragraph-start to include
	"^>[-A-Za-z]:" (PR 3166)

Mon Aug  9 18:09:15 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* gnats-el.in (gnats-unlock-buffer): If buffer modified, ask user
	before unlocking (PR 2320)
	Improve gnats-mode documentation (PR 2320)

Fri Aug  6 12:57:45 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* gnats-el.in: Reworked edit-pr, gnats-{un,}lock to use condition-case
	and error conditions
	Removed all traces of gnats-mode-write-file-hook
	Changed the names of some temp buffers to contain an initial space

	* Makefile.in, aclocal.m4, configure.in, gnats-el.in:
	Use AC_DIFF_OPT macro to set DIFFOPT to the most human-friendly
	mode available to the default diff(1).

	* gnats-el.in (gnats-finish): Rename to gnats-submit-pr to match the
	documentation
	Fix declaration of invalid-fields error
	(gnats-mode): Fix use of kill-emacs-hook under Emacs 18
	(gnats-mail-PR-changed): Use pr-addr for finding email addresses
	Use diff -u instead of -c
	(gnats-pr-addr): New function
	(gnats-change-field-and-update-audit-trail): Don't change the case
	of replacement text
	(gnats-generate-new-buffer-name): Removed, since it is no longer used
	(view-pr): Use view-file
	(gnats-submit-pr): Don't force backup -- we want to diff against the
	version checked out, not the most recently saved.

	* edit-pr.sh: Change all instances of GNATS_ADDR to PR_ADDR to avoid
	clashing with configuration variable

Thu Aug  5 17:52:03 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* gnats-el.in: Varied and sundry fixes, viz:
	Understand Emacs 19, support new capabilities like add-hook,
	generate-new-buffer-name, local-write-file-hooks and kill-buffer-hook
	Rename gnats-mode-write-file-hook to gnats-finish and bind to ^C^C,
	since v19's basic-save-buffer chokes if a hook changes
	buffer-file-name to nil
	When starting a new buffer for a PR, kill the old one.
	Don't rename the buffer when you're done
	Bury the buffer when you're done

	* Makefile.in (clean): Don't remove config
	(distclean): Remove config

	* configure.in: Use AC_PROGRAMS_CHECK to (hopefully) find hostname
	rather than assuming it exists.
	Check for config files in ${srcdir} and build dir as well

Wed Aug  4 14:53:30 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* Various: Change version number to 3.02

	* gnats.texi: @include version.texinfo for version number.

	* Makefile.in (lispdir): change to site-lisp

	* headers.c (read_header): Break on "headers" beginning with '>'

	* gnats.h: add prototype for configure().

	* misc.c: remove definition of gnats_root.

	* main.c: remove definitions of flag_{ack,notify}.

	* globals.h: remove definition of GNATS_ADMIN.

	* *.c: move #include "config.h" to beginning of file.
	Add call to configure() in main().
	replace cpp macros with references to external variables.

	* config.m4: New file containing macros used in config.c.in for
	generating config.c.

	* config.c.in: New file containing routines for parsing configuration
	file.  Can be easily portablized by removing dependence on GNATS_ROOT.
	
	* config.h: Changed all the cpp macros to external variables,
	include "autoconf.h"

	* edit-pr.sh, mkcat.sh, mkdist.sh, rmcat.sh: source
	GNATS_ROOT/gnats-adm/config

	* at-pr.sh, edit-pr.sh, mkcat.sh, rmcat.sh, gnats-el.in:
	replace @'s with x's to avoid collision with config.status

	* Makefile.in: Changed defaults for GNATS_ROOT and kin to be
	subst-able by configure, added NOTIFY, ACKNOWLEDGE, DEFAULT_SUBMITTER,
	KEEP_RECEIVED_HEADERS and GNATS_ADMIN to the group, added M4 variable,
	made BISON and the INSTALL triplets subst-able, added statedir var,
	added config.[co] to LIB{SRC,OBJS}, added . and $(srcdir) to
	INCLUDEDIR, replaced LIBIBERTY with the usual version, added GNATS_DEFS,
	added `config' to all-gnats dependencies, removed $(LIBIBERTY) from
	various dependency lists, added rules for config.{,c,o}, filled some
	rules, replaced @'s with x's in sed directives, added autoconf.h to
	the dependency list for the objects, added config installation to
	install-gnats rule, replaced gnats.dvi rule with $(TEXI2DVI)-based one,
	fixed up *clean rules, added MAKEINFO and TEXI2DVI variables.

	* aclocal.m4: Removed file again.

	* configure.in: Add large amounts of kludgey sh code to guess the
	old gnats configuration.
	Changed AC_SCO_SOCKET to AC_HAVE_LIBRARY(socket)
	Added AC_PROG_YACC
	Use autoheader -> autoconf.h.in

Wed Aug  4 11:53:36 1993  Brendan Kehoe  (brendan@blues.cygnus.com)

	* query-pr.c (get_pr): Call init_header before read_header, so we
	get clean information for each one.

Tue Aug  3 08:35:24 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* gnats-el.in (gnats-mail-reply-using-mail): Add MSGID to the let
	list, so it's not considered a free variable.
	(gnats-mail-reply-using-mhe): Likewise.
	(edit-pr): Add MSG to the let list. 

Fri Jul 23 16:01:08 1993  Jason Merrill  (jason@wahini.cygnus.com)

	* aclocal.m4: Created file with definition of AC_SCO_SOCKET

Wed Jul 21 19:02:31 1993  Jason Merrill  (jason@wahini.cygnus.com)

	* files.c (find_submitter): Fix handling of null response time
	field in GNATS_ROOT/gnats-adm/submitters

	* Makefile.in: Fixed typo, added $(srcdir)/'s for other-dir builds

	* internal.c (punt): Create "To:" line if not using /bin/mail, so
	that mail to gnats-admin will actually go to gnats-admin

	* man/Makefile.in: Added and removed $(srcdir)/'s so it would
	build properly in another directory

Wed Jun 16 15:51:13 1993  K. Richard Pixley  (rich@cygnus.com)

	* gnats-el.in (GNATS-MAIL-ADDR, GNATS-ROOT, LIBDIR): Add asterix in
	documentation which will declare these to be user settable
	options.
	(GNATS-ROOT, LIBDIR): changed from defvar to defconst.  We do not
	change these values programmatically.
	(gnats-responsibilities): changed from defconst to defvar.  We do
	change these values programmatically.
	(gnats-pr-locked, gnats-pr-errors, gnats-buffer-pr, gnats-audit-trail,
	gnats-backupname): static variable names now prefixed with gnats- to
	prevent stray collisions.  Added missing defvar line.
	(gnats-start-of-PR-fields): Added missing defvar line.
	(gnats-dont-reply-to-names): changed setq to defvar.


Tue Jun 15 12:43:14 1993  K. Richard Pixley  (rich@sendai.cygnus.com)

	* Makefile.in (VPATH): Replace so that subdir builds work once
	again.

Wed May 26 12:42:01 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* pr-addr.c (main): Also chop at the parenthesis, since we can't
	assume there'll be a space between the name and the real name.

Tue May 18 13:35:28 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* pr-edit.c (unlock_pr): Check for a non-existant LOCK_PATH before
	we try to stat it.  Don't call punt.

Tue May  4 12:48:11 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* edit-pr.sh (checking): Fix quoting bug.

Wed Apr 14 12:11:07 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* Makefile.in (VERSION): Bump version to 3.01.
	* gnats-fc.eps (Title): Likewise.

	* query-pr.c (do_pr): Do a case-insensitive match against the
	originator name.

	* gen-index.c (long_options): Add -V/--version.
	(main): Grok it.

	* man/rmcat.man, man/gen-index.man: New files.
	* man/Makefile.in (SRCS8): Add rmcat.8 and gen-index.8.
	(MAN8): Add rmcat.man and gen-index.man.

	* query-pr.c (main): If we're doing a summary, output a final
	newline after we run down the list of PRs that they gave us.

Tue Apr 13 12:13:42 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* gnats-el.in (gnats-mode-write-file-hook): Fix appending the hook.

	* internal.c, misc.c: Check both __STDC__ and _AIX to see if we
	should use stdarg instead of varargs.

	* Makefile.in (realclean): Don't delete TAGS.
	(distclean): Don't delete getdate.c.
	(all-gnats): Move edit-pr back with the other tools.

	* globals.h (APPEND_STRING): Added macro.
	* file-pr.c (APPEND_STRING): Delete it from here.

	* headers.c: Include config.h.
	(read_header): Rewrite to accept tab-continued headers.
	(set_continued_header): New function; special-cases Received:
	headers to accept as many as you want to give it.  If
	KEEP_RECEIVED_HEADERS is false, it only does an assignment.
	(lookup_header): Deleted prototype, moved the function up so we
	don't need it.
	* config.h (KEEP_RECEIVED_HEADERS): Added.
	* Makefile.in (headers.o): Added dependencies.

	* query-pr.c (get_category): If we couldn't open the index, return
	a NULL.

Mon Apr 12 14:55:33 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* pr.h (PR_Type): Typedef the enum.
	(PR_entry): Change `datatype' member accordingly.

	* file-pr.c (reply_to_submitter): Send mail to the address in the
	`Reply-To:' header if there is one; otherwise, just use the
	`From:' address.

	* pr-edit.c (main): When calling check_pr, arrange to exit
	non-zero if the PR didn't check out ok.

	* rmcat.sh: New file, mate to mkcat.
	* Makefile.in (DISTFILES): Add rmcat.
	(all-gnats): Likewise.
	(rmcat): New rule.
	(install-gnats): Install it.
	(clean): Delete rmcat.

	* mkdist.sh: Use XFOOX instead of @FOO@ for substs from GNATS.  Use
	YFOOY for the substs mkdist does on the Makefile it creates.
	* Makefile.in (mkdist): Use XFOOX.  We don't need to subst in LIBDIR.

	* query-pr.c (get_category): Don't say we couldn't find the PR in
	the index, since we'll later say we couldn't read it anyway.
	(query_pr): Check the return of get_category, and complain if it
	was null.  Return an int ourselves.
	(main): If we got some errors, then exit with a non-zero status.

	* gnats-el.in (gnats-mail-PR-changed): Check if CC is null before
	adding the responsible person to it, so we don't try to send mail
	to `nil'.

	* edit-pr.sh: Use an arrow instead of wrapping from/to in braces.
	* gnats-el.in (gnats-change-field-and-update-audit-trail): Likewise.

	* main.c (main): If there's a PR.lock file, then leave and try
	again later, so we don't invite problems.  Include unistd.h.

Fri Apr  9 14:48:00 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* query-pr.c (print_path): New variable.
	(main): Set it if -P/--print-path.
	(print_pr): If `print_path' is true, then print out something that
	the emacs next-error function can grok.
	(usage): Update for the new options.
	* gnats-el.in (query-pr): Pass the -P option, and fix things so
	they'll work under both emacs 18 and emacs 19.

	* query-pr.c (skip_closed): New variable.
	(main): Set it if -x/--skip-closed.
	(query_pr): Use it to avoid closed PRs.

	* Makefile.in (DEFAULT_RELEASE, DEFAULT_ORGANIZATION): Don't wrap
	with quotes.
	(GNATS_VARS): Don't do it here either.

	* queue-pr.c: Include pathmax.h.
	(drop_msg): Use mktemp instead of tempnam.
	* internal.c (write_index): Likewise.

Wed Apr  7 13:13:08 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* gen-index.c: New file, to emit an index for an existing database.
	* Makefile.in (gen-index): New rule.
	(all-gnats): Added gen-index.
	(clean): Likewise.

	* queue-pr.c: Include unistd.h, sys/wait.h, and sys/param.h by
	hand; include gnats-dirs.h instead of queue.h.
	* queue.h: Renamed to gnats-dirs.h.
	* Makefile.in (DISTFILES): Change it.
	(queue-pr.o): Depend upon gnats-dirs.h instead.

	* Makefile.in (DEFAULT_ORGANIZATION): New variable.
	(GNATS_VARS): Pass it.

	* edit-pr.sh: Always send mail to the responsible person of a PR.

	* edit-pr.sh: Include the synopsis (both old and new if they
	changed) in the mail we send.  Wrap from/to for responsible
	changes in <>'s, for names that have dashes in them (e.g.,
	gnats-admin).  Don't put an empty line between the synopsis and the
	change message.
	* gnats-el.in (gnats-change-field-and-update-audit-trail): Likewise.

	* query-pr.c (do_pr): Return an int (0 or 1 appropriately).
	(query_pr): Check for do_pr's return to see if we should output a
	newline or not.

	* queue-pr.c (drop_msg): Do a rename of the file to file, instead
	of file to directory.

	* edit-pr.sh (locked): Use cmp -s instead of the output of cmp to
	see if the PR has been changed.
	(mail_to): Don't send all status changes to gnats-admin.

	* query-pr.c (usage): Add originator options to the usage.

	* mkdist.sh (Makefile): Quote __EOF__ to avoid variable
	substitution inside the here document.  After creating the
	Makefile, substitute in GNATS_SITE, the VERSION, and the release.
	(FILES): Change send-pr.elisp to send-pr-el.in.
	(send-pr): Likewise.
	(libdir): Add definition in the Makefile.
	(install-sid): Substitute bindir using commas to avoid sed problems.
	* Makefile.in (mkdist): Also substitute VERSION.

	* file-pr.c (gnats): Don't use S_IFDIR in the mode for pending or
	the category directory.

	* Makefile.in (GNATS_VARS): Put quotes around $(DEFAULT_RELEASE),
	in case it happens to have spaces in it.

	* files.c (get_responsible_address): Cut off anything after a
	comma in a passwd entry's gecos field, to avoid phone #s and such.

	* pr-edit.c (modify_pr): Copy the responsible field before
	chopping off the full name for the index.

Mon Mar 29 15:01:10 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* file-pr.c (notify_responsible): Add a `Resent-From:' header.
	(append_report): Likewise.

	* query-pr.c (print_pr): Also print out the arrival date.

Thu Mar 25 15:21:58 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* gnats-el.in (view-pr): Give the error as being from view-pr, not
	edit-pr.

	* edit-pr.sh (full_id): Look for "/$1:", not "$1:", to avoid
	matching spuriously against an incomplete set.
	(everywhere): Change temp filenames to be short enough not to go
	over 14 chars when we create the .old and .tmp files.
	(Subject): Use full_id, not full_pr.

	* file-pr.c (append_report): Only send mail to the person
	responsible for the PR, and to the submitter contact.

	* file-pr.c (append_report): Preserve the header values we
	recorded just before coming into append_report, so we use those
	for our outgoing headers, instead of the ones from the PR.

Fri Mar 19 17:06:49 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* gnats-el.in (edit-pr): Say that GNATS itself is locked when we
	aren't given a username by pr-edit.
	(gnats-find-field): Return a null string, not t or nil.
	(gnats-get-reply-to): When using mail-fetch-field, pass arg ALL as
	nil, so we only get one copy of it if there's a `Sender:' field.
	When deciding what to return, check if REPLY-TO is both nil and an
	empty string.

Wed Mar 17 15:34:14 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* file-pr.c (notify_responsible): Say "business hours".

	* Makefile.in (install-gnats): Install edit-pr also.

	* queue-pr.c (fork_gnats): Fix an off-by-one error.
	(main): Likewise.

	* misc.c (open_mail_file): Make sure BUFFER has enough room for
	the mail agent *and* all of the recipients, rather than
	arbitrarily pick 256 as a probably bogus value.

Mon Mar 15 15:06:41 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* file-pr.c (append_report): Chop off the full name before getting
	the responsible address.
	(notify_responsible): Don't put `Re:' in the message going to the
	responsible people.

Sat Mar  6 15:15:43 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* Makefile.in (VERSION): Bump version to 3.00.
	* gnats-fc.eps (Title): Likewise.

	* gnats-el.in (view-pr): Add sample autoload.

	* edit-pr.sh (MAIL): Rename to MAIL_AGENT.
	(PR_EDIT, GNATS_ADDR): Fix directory names to be lower-case `gnats'.
	(locked): New variable.
	(option parsing): Use grep to find the '/' in the ID they gave us.
	Look for "$1:", not just $1, so we don't hit 1440 when looking for
	144, for example.
	(trap): Add two traps to catch some signals.
	(HOSTNAME): New variable, grokked appropriately.
	(locking PR): Pass our username for the locking.
	(editing): If they didn't change anything, don't do anything with it.
	(checking): New variable; set the errors variable inside the loop.
	Search for quit with a case.
	({old,new}_state, {old,new}_resp): Delete all whitespace.
	(audit trail): Append it properly.
	(filing): Redirect `$new' into PR_EDIT.

	* gnats.elisp: Renamed to gnats-el.in.
	* Makefile.in: Changed everywhere.

	* Makefile.in (clean): Also delete gnats.elc.

	* gnats.elisp (gnats-get-reply-to): Go to the beginning of the
	buffer before looking for the `From:' and `Reply-To:' headers.

Fri Mar  5 09:53:45 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* gnats.elisp (gnats-mode-write-file-hook): In the cleanup-form,
	also check that the buffer's in gnats-mode before trying to change
	its write-file-hooks.
	(view-pr): New function.

	* file-pr.c (append_report): Put their message in the Audit-Trail,
	instead of under Unformatted.
	* headers.c (header_name): New function.
	* gnats.h: Added its prototype.

	* mkdist.sh (GNATS_SITE): Add.

	* file-pr.c (append_report): Include the `To:' header in what we
	append to the PR.  Send mail to the right people about the new
	text in the PR.
	(notify_responsible): Free the stuff append_notify gives us.
	(append_notify): If notify hasn't had anything written to it,
	return a NULL.

	* gnats.elisp (gnats-get-reply-to): Correct how we return REPLY-TO
	then FROM to actually pass FROM if REPLY-TO is empty.
	(gnats-mail-PR-changed): If CC is null, pass an empty string to
	mh-send-other-window, not nil.
	(gnats-mode-write-file-hook): In the cleanup-form for the
	unwind-protect, make sure we're in the GNATS buffer before setting
	the WRITE-FILE-HOOKS, so we don't screw up the mail.  Append it to
	the hook, don't cons it.
	(gnats-mode): Name the buffer so it's useful in a listing.  Append
	our hook to WRITE-FILE-HOOKS, don't cons it.
	(edit-pr): If we're already editing a PR, just go to that buffer.

	* query-pr.c (print_pr): Trim off the full name from the
	responsible string for sql output.
	(main): Output a final newline if sql_format, since we don't
	supply it in print_pr.
	(do_pr): New function.
	(query_pr): Call it appropriately.  Now properly handle having
	both a search list and search qualifiers.
	(found_match): New variable.

	* at-pr.sh: Say analyzed, not authorized.

Wed Mar  3 14:20:44 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* gnats.elisp (edit-pr): Change arg NUMBER to ID; modify doc.

	* file-pr.c (notify_responsible): Add the proper From: field to
	the message, so it doesn't look like it's coming from the gnats
	user.

	* query-pr.c (long_options): Add -O/--originator.
	(originator): New variable.
	(main): Grok it, setting originator.
	(get_pr): New function.
	(print_pr): New argument `opened'; if not true, call get_pr.
	(query_pr): If originator is set, then read in the PR and
	check the originator field as well.
	* query-pr.man: Document it.

	* at-pr.sh: Don't look for and use the category, the argument we
	were given already has it on it.

	* edit-pr.sh: Say what user locked a PR.

	* Makefile.in (pr-edit): Depend upon version.o as well.

	* pr-edit.c (main): Parse new arg to -l, the username.
	(main, case 'l' and 'u'): Don't set fname, there wasn't an optarg
	then.
	(lock_pr): Write the username into the lock file.  If the lock
	file already exists, tell who locked it on the stderr.

	* gnats.elisp (gnats-delete-buffer): Instead of killing the buffer,
	make it read-only and in text mode.
	(gnats-buffer-major-mode): Return the major mode for BUFFER.
	(gnats-kill-buffer): Call gnats-delete-buffer.
	(gnats-mode-map): Bind `C-c C-q' to gnats-delete-buffer.
	(gnats-unlock-all-buffers): New function, to cycle down the buffer
	list and call gnats-delete-buffer on each GNATS buffer.
	(gnats-mode): Add gnats-unlock-all-buffers to kill-emacs-hook.
	(gnats-patch-exec-path): Kill the error buffer when we're done.
	(gnats-check-pr): Kill the err buffer if the PR checked ok.
	(gnats-generate-new-buffer-name): New function.
	(gnats-delete-buffer): Call it.
	(gnats-mail-PR-changed): Do send mail in the other window, now that
	we're keeping the PR buffer.
	(gnats-mode-write-file-hook): Don't try to relock the buffer, we
	should only ever see this hook once.
	(edit-pr): If the PR is already locked, find out who locked it if
	we possibly can.

Tue Mar  2 13:06:13 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* gnats.elisp (gnats-mail-PR-changed): Default CC to nil, to avoid
	having an empty `Cc:' header.

	* query-pr.c (main): Add 'q'.  Only allow one formatting option.
	Only call query_pr once in any case.
	(long_options): Add new summary option -q/--summary.
	(print_pr): Don't emit a newline for the SQL stuff.  Add printing
	of summary info.
	* query-pr.man: Document the new option.

Mon Mar  1 16:45:54 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* Rename gnats-addr to pr-addr, gnats-edit to pr-edit, and the gnats
	program to file-pr.

Mon Mar  1 02:37:45 1993  Jeffrey Osier  (jeffrey@fowanton.cygnus.com)

	* Makefile.in (gnats.info): No longer needs -I flag for makeinfo.
	(gnats.dvi): Needed "../send-pr" added to $TEXINPUTS.

Sun Feb 28 15:44:42 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* globals.h (MAIL_AGENT): Define to use sendmail.
	(USE_BIN_MAIL): It's baaaaack, it's not defined.
	* internal.c (punt): Don't output a `.' at the end of the message.
	* gnats.c (reply_to_submitter, notify_responsible): Likewise.
	* misc.c (close_mail_file): Instead, do it here, if necessary.
	(open_mail_file): Only use the recipients arg when using /bin/mail.
	
Sat Feb 27 00:28:19 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* Makefile.in (install-tools): Make gnats-edit set-uid gnats here too.

	* man/Makefile.in (TOOLSL, TOOLS1): Deleted.
	(install-tools): Use SRCS1 instead.

	* headers.c (read_header): If the line after a Received: header
	isn't a tabbed id, then just use it normally, don't swallow it.
	Only set `received' to TRUE, never turn it off again.
	(read_header): Cast strdup to a char*.

	* pr.c (init_pr): Don't init ANALYSIS, SOLVED_WHEN, or SOLVED_HOW.
	* pr.h (PR_Name): Delete them.
	(ANALYSIS_STRING, SOLVED_HOW_STRING, SOLVED_WHEN_STRING): Deleted.

	* mkdist.sh (FILES): Look for install-sid.sh, not install-sid.

	* gnats-edit.c (lock_pr): Return an int; if the lock file already
	exists, just exit with non-zero, don't send gnats-admin mail.

	* gnats.elisp (gnats-mode): They're `kept-{new,old}-versions'.
	(edit-pr): Put the temp file in /usr/tmp, since backup-buffer
	refuses to create backup files in /tmp.
	(gnats-mail-PR-changed): Don't mail in the other window.  Call
	gnats-kill-buffer after the mail's set up.
	(gnats-kill-buffer): Make interactive; if the PR is locked, unlock it.
	Delete the backup file we created as well.  Kill the error buffer
	we were working with.
	(gnats-mode): Bind `C-c C-q' and `C-x k' to gnats-kill-buffer.
	(gnats-mode-write-file-hook): Call save-buffer with 64, to create
	the backup file; call gnats-kill-buffer if we aren't sending mail.
	Force the write-file-hooks reversion to be true, since we could
	have a null list of hooks.  If gnats-check-pr failed, then bring up
	the error buffer in the other window, so they can fix things up.
	(gnats-get-list): Go to the buffer we were passed if we're not
	already in it.
	(gnats-delete-backups): New function.
	(gnats-kill-buffer): Use it.

	* query-pr.c (print_pr): Pass !full_report into read_pr, so we
	know if we should prune the reading or not.

	* gnats.elisp (edit-pr): Use make-temp-name instead of random for
	generating the temporary filename.
	(gnats-mode): Use make-variable-buffer-local instead of
	make-local-variable.
	(gnats-kill-buffer): New function.
	(gnats-mode-write-file-hook): Call it.

	* index.c (create_index_entry): Modify a copy of the responsible
	field, not the field itself.
	* gnats-edit.c (modify_pr): Prune off the full name so the index
	doesn't get it.

	* gnats.c (reply_to_submitter): New arg `responsible'.  Create a
	Reply-To: header that has GNATS_ADDR and the responsible person on
	it.
	(gnats): Pass it down.
	(append_notify): Initialize notify_len to 0.

	* gnats-edit.c (modify_pr): Init lock_file to NULL; only call
	unlink when we're not using force.  When looking for the PR in the
	index, be careful not to use prev_index before we actually set it.

	* pr.c (read_pr): If the PR had an Unformatted field, don't wipe
	it out; instead, tack it onto the end of the things we've been
	progressively adding to it.

	* headers.c (lookup_header): Do a case-insensitive match on the
	header name.

	* gnats-edit.c (check_pr): Also warn if the Number field is missing.

	* gnats.c (gnats): Check for a '\0' at the beginning of the line for
	the synopsis and subject as well.

Fri Feb 26 13:06:00 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* gnats-edit.c (modify_pr): Unlink the .old file when we're done.

	* internal.c (write_index): Pass gnats_root into sprintf; include
	the trailing slash.  Copy the file if a rename didn't work.

	* Makefile.in (mkdist): New rule.
	(all): Depend upon it.
	(install): Don't use install-man.
	(install-gnats): Instead, use it here.
	(install-tools-man): New rule.
	(install-tools): Use it.
	(tools-man-pages): New rule.
	(all-tools): Use it.

	* man/Makefile.in (install-tools-man, all-tools): New rules.

	* gnats.elisp (gnats-pr-errors): New variable.
	(LIBDIR): New variable, substituted in by make.
	(gnats-indent, gnats-states, gnats-state-following): New variables.
	(gnats-check-pr): Run `gnats-edit --check' on the current PR, and set
	gnats-pr-errors if there were any.
	(gnats-file-pr): Call `gnats-edit' to file the PR, returning NIL if
	it failed.
	(gnats-mode-write-file-hook): Call gnats-check-pr first to check it,
	then gnats-file-pr to put it into the database; finally, unlock it.
	If the PR was locked since the last time we tried to write the
	file, tell the user about it.
	(gnats-mode): Don't require send-pr anymore.  Set up a new local
	variable BUFFER-PR.
	(gnats-keyword, gnats-before-keyword, gnats-after-keyword): New vars.
	(gnats-get-list): Renamed to gnats-get-list-from-file; added new fn
	named this, to do the actual list creation.
	(gnats-set-responsibles, gnats-set-categories): Use ...-from-file.
	(gnats-lock): New function.
	(edit-pr): Lock the PR before trying to edit it.  If it's already
	locked, tell the user.
	* Makefile.in (gnats.el): Substitute LIBDIR in.

	* Makefile.in (FLAGS_TO_PASS): New variable.
	(install-man): Pass them also.

	* Makefile.in (install-man): New rule.
	(install): Fire on it.
	(install-gnats): Install mkdist.
	(install-tools): Install edit-pr.

	* gnats.c (gnats): Use field_value, instead of a direct usage of `pr'.

Thu Feb 25 15:38:32 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* gnats.c (gnats): Don't wipe out the responsible field if it comes
	in with a valid one already.

Wed Feb 24 20:34:41 1993  Tim Wicinski  (tim@cygnus.com)

	* pr.c (init_pr): Don't set pr[ORIGINATOR].name = Text, set its
	datatype. 

Wed Feb 24 13:04:50 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* main.c (main): Don't close fp here.
	* gnats.c (gnats): Instead, do it here.
	(append_report): And here.
	* files.c (init_responsibles): Close the responsible file after
	we're done reading it.

	* pr.c (init_pr): Set the type of ORIGINATOR to be Text.

	* configure.in (AC_SCO_SOCKET): Add new check.
	(AC_HAVE_LIBRARY): Instead of a generic -lsocket check.

	* main.c (unlock_death): New function, to unlock GNATS when we get
	a serious signal.
	(main): Use it as the handler for various deadly signals.

	* gnats.c (run_atpr): Rename `pr' parameter to `bug_name'.  Fix an
	off-by-one error.

Tue Feb 23 16:14:37 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* queue-pr.c (run_gnats): Say each file that's being processed if
	flag_debug's set.

	* gnats.c (run_atpr): Look for /usr/bin/at then /bin/at.

	* pr.c (init_pr): Set the datatype for SOLVED_WHEN, not ANALYSIS,
	for the SOLVED_WHEN field.

	* gnats.c (append_notify): Allocate buf dynamically, since we'll be
	using it a few times; don't leave it on the frame.

	* internal.c (unlock_gnats): Don't complain about the file not
	being there, since we often call unlock_gnats via punt, which can
	get called before lock_gnats.

	* gnats.c (append_notify): If the person isn't in the responsibles
	file, don't give up on them, just include that address (it may be
	an alias).

	* gnats.c (get_bug_number): Don't try to read from the current file
	that we just created.
	(append_notify): Make START begin as a null ptr, so we don't try
	to use it later.  Don't dereference it if it's still null.
	(notify_responsible): Don't create an In-Reply-To: header if we
	didn't get enough info from their message.

Tue Feb 23 15:33:56 1993  Tim Wicinski  (tim@cygnus.com)

	* Makefile.in: make sure gnats-edit and queue-pr depend on
	internal.o to relink.

Tue Feb 23 15:11:21 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* internal.c (punt): Don't try to write to a null file ptr.
	Remember to unlock gnats before exiting.

Tue Feb 23 15:08:15 1993  Tim Wicinski  (tim@cygnus.com)

	* files.c (get_adm_record): change bumping of array constant to
	prevent returning the old 'off-by-one' value.

Tue Feb 23 12:33:10 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* Makefile.in (LIBPROGS): Deleted var.
	(LIBS): Make many rules use it the way they should.
	(install-gnats): Create $(libdir)/gnats first.  Chmod gnats-edit in
	libdir now.
	(gnats.info): Look in ../send-pr.

	* configure.in (AC_HAVE_LIBRARY): Look for -lsocket and -linet for
	syslog.

	* gnats.h (get_next_field): Fix prototype.

Tue Feb 23 12:15:56 1993  Tim Wicinski  (tim@cygnus.com)

	* queue-pr.c: changed queue directory to be 'queue-pr', like it is
	in the Makefile.  fixed FIXME to call punt if chdir fails. 

Tue Feb 23 10:44:08 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* Makefile.in (install, install-tools): Drop in gnats.el.
	(lispdir): New variable.

	* Makefile.in (install, all): Change to install-gnats and all-gnats.
	(ALL, INST): New vars.

	* Makefile.in (install): Put gnats-edit and gnats-addr in
	$(libdir)/gnats, so we can export GNATS_ROOT safely.
	(all-tools, install-tools): New rules.

	* edit-pr.sh (LIBDIR): Added.
	(GNATS_EDIT): Changed to look in libdir.
	(GNATS_ADDR): Likewise.
	* Makefile.in (all): Added edit-pr.
	(edit-pr): New rule.
	(at-pr): Substitute libdir in.
	(clean): Delete edit-pr.
	* at-pr.sh: Run gnats-addr out of LIBDIR.

	* misc.c (mkdir): Added fn, used only with HAVE_MKDIR set.
	* configure.in (AC_HAVE_FUNCS): Look for mkdir.

	* Makefile.in (DISTFILES): Add getdate.c and TAGS.

	* mkcat.sh: Only check for the existance of $LIBDIR/gnats.

Mon Feb 22 13:59:35 1993  Tim Wicinski  (tim@cygnus.com)

	* Makefile.in: remove internal.o from where it is not needed anymore.

	* files.c: should of checked it the first time...

Mon Feb 22 13:47:02 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* gnats-addr.c (main): If get_responsible_address doesn't give us
	anything, don't try to keep going.

	* mkdist.sh: Finish things up; drop in all files that're
	necessary, include the categories list, and generate a Makefile
	for the whole thing.

Mon Feb 22 02:13:35 1993  Tim Wicinski  (tim@cygnus.com)

	* query-pr.c: call punt instead of log_msg (LOG_ERR). missed last
	time. 

	* queue-pr.c: another miss of calling punt instead of log_msg.

	* gnats.h: moved extern defs of procs in internal.c into globals.h
	* globals.h: received new external procedure defines.

	* misc.c: removed copy_file out of here.... 
	* internal.c: ...and placed it in here. 

	* main.c(main): call init_responsibles () here now, and punt if it
	doesn't build the chain up.

	* files.c(find_responsibles): now if responsible_chain is NULL, go
	back and do the old method of scanning the responsibles file line
	by line. useful for gnats-addr. 
	(init_responsibles):  returns a 0 or 1 depending on success of
	building the linked list. 

	* misc.c: moved procedure punt () from here. removed calls to
	unlock_gnats from log_msg.  changed open_mail_file to return NULL
	if popen() fails. 

	* internal.c: moved punt () to here. added includes for varargs.

	* gnats.c(gnats): changed call to log_msg to punt instead.

	* gnats-edit.c: removed unneed define to config.h
	
	* files.c(find_responsibles): don't punt if init_responsibles ()
	fails, just return NULL.  removed all calls to punt, have NULL
	returned instead. 

	* main.c: change LOG_ERR to LOG_INFO and exit. 

	* files.c: fixed prototype for init_responsibles.

	* internal.c: forgot \n on the fprintf statements. 

	* Makefile.in: include internal.o to everything that uses
	libgnats.a for the time being. this needs to be worked out still
	(release/build issue). 

	* internal.c (lock_gnats/unlock_gnats):  rewritten to now lock and
	unlock gnats-adm/gnats.lock. 

	* query-pr.c: made to use lock_gnats and unlock_gnats. 
	* gnats-edit.c: likewise.
	* main.c:  ditto.

	* misc.c (punt)
	*  (log_msg): use unlock_gnats. 

	* gnats.h: fixed typo. 

	* globals.h: removed unused define GNATS_LOCK.

	* gnats.c (get_bug_number): remove all references to file locking
	in this procedure. Perform this task once per run.

Mon Feb 22 01:35:47 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* index.c (get_index): If we couldn't open the index, then return
	a null Index*.

	* gnats-internal.c: Renamed to internal.c.
	* Makefile.in: Change accordingly.

	* gnats.elisp (gnats-err-buffer): New constant.
	(gnats-mode): Still require 'send-pr for now.
	(gnats-set-responsibles): Grok the responsible list instead of
	trying to run query-pr.
	(gnats-set-categories): New function, grok categories instead of
	running send-pr.
	(gnats-get-list): New function, return a list of the first entries
	from FILENAME.
	(gnats-get-pr-category): New function, return the category for a
	problem report given NUMBER.
	(has-slash): Return T if STRING contains a '/'.
	(edit-pr): Change around to look in the newly structured GNATS
	database, and edit a copy of the file, not the file itself.
	(query-pr): Run query-pr, not query_pr.

Mon Feb 22 01:08:12 1993  Jeffrey Osier  (jeffrey@fowanton.cygnus.com)

	* edit-pr.sh:  added support for gnats-edit (untested)

Mon Feb 22 00:14:04 1993  Tim Wicinski  (tim@cygnus.com)

	* gnats-internal.c: new file containing functions not really need
	for libgnats.a, but useful for many of the gnats internal programs. 

	* index.c: moved write_index.
	* gnats.c: moved add_to_index, lock_gnats, and unlock_gnats.
	* gnats-edit.c: moved add_to_index.
	* misc.c:  moved block_signals and unblock_signals.

	* gnats.h:  update prototypes.

	* Makefile.in:  added gnats-internal.c, moved and changed and
	cleaned up SOURCES and OBJECTS. 

	* gnats.c(notify_responsible): now goes thru the lists of people
	needing to be notified, and calls get_responsible_address for each
	one. 

	* gnats.c(append_notify): new procedure to assist in building
	the addresses. 

Sun Feb 21 23:49:44 1993  Jeffrey Osier  (jeffrey@fowanton.cygnus.com)

	* .Sanitize: keep new file MANIFEST
	* README:    a little jazzier
	* INSTALL:   "install" section from gnats.texi
	* MANIFEST:  New file.
	* gnats.texi: a wee bit o' cleanup
	* gnats.info: current with gnats.texi

Sun Feb 21 23:15:06 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* pr.c (check_enum_types): Use strcasecmp to avoid case problems
	with the value of a field (e.g., `critical' vs an emphatic `CRITICAL').

Sun Feb 21 22:50:49 1993  Tim Wicinski  (tim@cygnus.com)

	* files.c (find_responsible): rewritten to use new routine to build
	linked list of responsible persons. 
	(get_responsible_address): changed to only return NULL if
	not found, let calling proc deal with rejects.
	(init_responsibles): new routine to read in responsibles file
	into linked list. 
	(next_record):  new function used by init_responsibles.
	basically ripped off from get_adm_record.

	* files.h (Responsible): added field 'next' to structure

	* globals.h: added external definition for head of responsibles
	linked list. 

Sun Feb 21 14:25:01 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* query-pr.c (pr_matches): Make it an exclusive test, not an
	inclusive one.

	* misc.c (get_token): Don't skip whitespace before a field's name;
	if it's got whitespace in front of it, it's probably part of the
	PR itself and should not qualify as a normal PR field.

	* index.c (create_index_entry): If there's no responsible field,
	then just leap.

	* pr.c (check_enum_types): Clear out the `next' field of
	bad_enums_end each time we have a new one.

	* queue-pr.c (strip_trailing_slashes): Delete function.
	(copy_reg): Put in misc.c as copy_file.
	(fork_gnats): Use strerror (errno) instead of just the errno for
	punt calls.  Just return the status, don't worry about what it
	might mean yet.
	(drop_msg): Give the name of the queue file and the errno string
	when a rename failed.  When unlinking the queue file fails, log it
	as an error, not as info.
	* gnats.h (copy_file): Add prototype.

	* misc.c (punt): Make it use varargs, calling vfprintf.

	* gnats-edit.c (modify_pr): Allocate the paths when we actually
	need them; give lock_path, not path, to punt for trying to find
	the lock file.  Copy the file if rename failed with EXDEV.
	(main): Just exit if the filename given as an arg to `-f' for checks.
	(lock_pr, unlock_pr): Fix messages.
	(long_options): Change "usage" to "help" and "file" to "filename".
	(usage): Fix usage to have gnats-edit options, not gnats options.
	(version): It's "gnats-edit", not "edit-pr".
	(force): New variable, to bypass checking for an old entry for the PR.
	(add_to_index): Added function, same as in gnats.c but I don't want
	it going into the library.

Sun Feb 21 00:05:03 1993  Tim Wicinski  (tim@cygnus.com)

	* queue-pr.c: fixed typo
	
	* pr.c(read_pr): now use prune variable to skip large fields. only
	called via query-pr.

	* queue-pr.c: use punt and log_msg instead of error.

	* gnats-edit.c: make correct use of punt. 

Sat Feb 20 22:39:06 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* Makefile.in (clean-man): Added rule.

	* gnats-edit.c (usage): Don't declare with a prototype; make static.
	(index_chain): Make local to modify_pr.
	(main): Call usage, delete usage for gnats.

	* man/Makefile.in: New file.
	* Makefile.in (SENDPR_VARS): Renamed to GNATS_VARS.
	(all): Depend upon man-pages instead of man/gnats.8.
	(man-pages): New rule.
	(install): Don't install any man pages.
	(clean): Don't delete them.

	* config.h (DEFAULT_SUBMITTER): New option.
	* gnats.c (gnats): Use it instead of `UNKNOWN'.
	* gnats.h (UNKNOWN): Deleted.
	* pr.c (init_pr): Set SUBMITTER's default value to DEFAULT_SUBMITTER.

	* Makefile.in (install): Install gnats-addr.
	(at-pr): Depend upon Makefile, so variable changes get caught.
	(mkcat, gnats.el, man/gnats.8): Likewise.
	(clean): Delete gnats-edit.

Sat Feb 20 22:02:24 1993  Tim Wicinski  (tim@cygnus.com)

	* Makefile.in: added gnats-edit, as well as added install rules. 

Sat Feb 20 20:42:05 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* mkcat.sh: Add the category to the list in gnats-dist and to the
	one in $LIBDIR/gnats.  Don't use awk to get the categories list.
	* Makefile.in (mkcat): Also substitute LIBDIR and GNATS_SITE.

	* config.h (USE_BIN_MAIL): Deleted.
	* globals.h (MAIL_AGENT): Define to BIN_MAIL.
	* misc.c (open_mail_file): Use the /bin/mail case, but use
	MAIL_AGENT instead of BIN_MAIL.
	(punt): Likewise.
	* gnats.c (reply_to_submitter): Likewise.
	(notify_responsible): Likewise.

	* All files: change `remote' to `responsibles'.

	* pr.c (read_pr): Make prune an int.
	* gnats.h (read_pr): Change prototype.

	* gnats.c (gnats): Cast call to strdup to return `char *'.

	* Makefile.in (clean): Also remove gnats-addr and query-pr.

	* index.c (create_index_entry): Change return type to void.
	(find_pr_category): Return NULL with bad cases.
	(open_index): Return a NULL file ptr if it can't open the file.
	* gnats.h (create_index_entry): Change prototype.

	* query-pr.c (main): Cast nulls.

Sat Feb 20 19:09:48 1993  Tim Wicinski  (tim@cygnus.com)

	* gnats-edit.c: latest checkin. all but --modify should be fine. 

	* gnats-edit.c: --lock, --unlock, and --check seem to be working
	now. The setuid stuff should be looked at more closely. 

        * gnats.c: moved signal blocking procedures to misc.c
        * misc.c: placed signal blocking procedures. 
        * index.c: removed local signal blocking procedures.
        * gnats.h: added prototypes for block_signals and unblock_signals.

Sat Feb 20 18:42:07 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* Makefile.in (VPATH): Don't put it in here.
	(GNATS_SITE, DEFAULT_RELEASE): New variables.
	(SENDPR_VARS): New variable to pass into send-pr's Makefile.
	(all): Add config-send-pr, change gnats.8 to man/gnats.8.
	(config-send-pr): New rule.
	(install): Don't put the samples in if there are files already
	there.  Also install the man pages.
	(install-info): New rule.
	(gnats.8): Changed to man/gnats.8, changed usage inside it.

	* gnats.elisp (gnats-responsibles): New variable.
	(gnats-set-variable-from-shell): New function.
	(gnats-set-responsibles): New function.

Sat Feb 20 18:33:17 1993  Jeffrey Osier  (jeffrey@fowanton.cygnus.com)

	* gnats.texi:  minor changes to install section
	* gnats.info:  New file.

Sat Feb 20 03:26:02 1993  Tim Wicinski  (tim@cygnus.com)

	* gnats-edit.c: slowly lumbering towards something useful. still
	needs work, but more is now understood of what is required by it.

Fri Feb 19 23:05:01 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* pr.c (check_enum_types): Return a `struct bad_enum *'.
	* gnats.h (bad_enums): Delete ref.
	(check_enum_types): Change prototype.
	* gnats.c (gnats): Set it.

Fri Feb 19 22:43:58 1993  Jeffrey Osier  (jeffrey@fowanton.cygnus.com)

	* gnats.texi:  teach me to compile BEFORE I check in...

	* gnats.texi:  added query-pr and edit-pr info

	* at-pr.man:  removed, what was I thinking...

Fri Feb 19 15:20:39 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* at-pr.sh: Use /bin/mail, and mention what category the PR is in.

	* pr.c (check_enum_types): New arg `check'.  Add a msg to
	bad_enums if check is true.
	(bad_enums, bad_enums_end): New vars.
	* gnats.h: Declare bad_enums.
	(bad_enum): New type.
	(check_enum_types): Change prototype.
	* gnats-edit.c (modify_report): Send in a 2 for check.
	* gnats.c (reply_to_submitter, notify_responsible): Tell them about
	the bad enums.

	* gnats.c (notify_responsible): Add timezone to time for analysis.

	* pr.c (check_enum_types): Check if the value's an empty string also.

	* pr.c (init_pr): There's no `System:' field.
	* pr.h (SYSTEM, SYSTEM_STRING): Deleted.

	* main.c (long_options, main): New --help option.
	* query-pr.c, queue-pr.c: Likewise.

	* pr.c (write_pr): Only write out the requested field's value if
	it's non-null.

	* query-pr.c (query_pr): Also check if S is non-null before trying
	to do every PR.

	* at-pr.sh: Grok the responsible person, using gnats-addr.  No
	longer check for an empty synopsis, since GNATS won't let it have
	one anymore.
	* gnats-addr.c (main): Only take the first piece, ignore any real
	name stuff.
	* gnats.c (run_atpr): Don't bother giving at-pr the responsible
	person, it no longer needs it.  Deleted arg `resp'.  Change prototype.
	(gnats): Don't pass responsible down.

	* Makefile.in (LIBSRC): New variable.
	(TAGS): Use it.

	* gnats-addr.c: New file.
	* Makefile.in (DISTFILES): Add gnats-addr.c.
	(all): Add target.
	(gnats-addr): Add rule.
	(SOURCES, OBJECTS, LIBOBJS): Put files.o in the library.
	* globals.h (Remote, get_remote_addr): Move to gnats.h.

	* query-pr.c (main): Trim the program name with basename.
	* queue-pr.c (main): Likewise.

	* query-pr.c (long_options): Add --full and --sql.
	(full_report): New variable.
	(main): Set it if -i/--sql.  Run thru the whole index if they're
	not searching for something special.
	(get_category): If full_report is true, print the entire thing
	out, instead of just the choice bits.  If sql_format's true, print
	out its special format.
	(sql_types, sql_time): New functions.
	(usage): Update it.

	* getdate.y: New file.
	* Makefile.in (DISTFILES, distclean, getdate.c, query-pr): Take care
	of it.
	* configure.in (AC_HAVE_FUNCS): Look for ftime.

	* index.c (write_index): Use tempnam instead of mktemp.

Fri Feb 19 02:49:36 1993  Tim Wicinski  (tim@cygnus.com)

	* gnats-edit.c: new program, suppsoedly setuid. This code has NOT
	been tested. It is checked in as a start. More will come later.

	* index.c: new function write_index to write an index chain to
	disk. currently only write a temp file. 
	
	* gnats.h: new prototype for write_index.

Thu Feb 18 22:36:27 1993  Tim Wicinski  (tim@cygnus.com)

	* pr.c(read_pr): added prune option to read_pr to speed up reads
	during queries and edits. not used yet. 
	* gnats.c:  added extra flag to read_pr. 
	* query-pr.c: added extra flag to read_pr. 
	* gnats.h: added extra flag to prototype.

	* Makefile.in(LIBOBJS): added entry for index.o
	* index.c: new file, containing all current index related
	functions. 
	* gnats.h: extern definition for get_index added.  rearranged some
	other externs definitions. 
	* misc.c: removed all old function calls that are now in index.c. 
	* query-pr.c: moved function get_index to index.c

Thu Feb 18 22:30:11 1993  Brendan Kehoe  (brendan@cygnus.com)

	* main.c (main): Change getopt string, -D doesn't take an arg.

	* pr.c (read_pr): Only trim until we see a non-whitespace char,
	not all the way back leaving only the first word.

Thu Feb 18 18:34:27 1993  Tim Wicinski  (tim@cygnus.com)

	* query-pr.c: used PATH_MAX instead of root_len, quicker to
	calculate. Removed structure Search, used Index instead since it
	is almost identical. get_index now returns Index*, and is ready to
	move to misc.c

	* query-pr.c(query_pr): builds a proper path if variable p
	contains a partial path (ie, based on GNATS_ROOT). 
	* query-pr.c(main): if -d is called, recalculate the root_len to
	prevent malloc woes.  

	* gnats.c(free_remote): don't try to free ptr's if they point to
	GNATS_ADMIN. 

	* gnats.c(gnats): set the category field when it is changed to
	pending in the case where the category exists, but the directory
	doesn't. 

        * gnats.c (gnats): if synopsis is NULL, then dup the Subject string,
        so subject doesn't get the newline stripped. this caused problems
        in writing out the PR. 

        * headers.c(header_init): removed X_MODE.
        * headers.h: removed X_MODE.

Thu Feb 18 18:21:25 1993  Jeffrey Osier (jeffrey@cygnus.com)

	* edit-pr.sh:  uses @GNATS_ROOT@ rather than leaving it blank
	* gnats.texi: more minor clean-up

Thu Feb 18 15:27:49 1993  Tim Wicinski  (tim@cygnus.com)

	* files.c(get_remote_address): since get_adm_record dups a null
	string, an empty field will not be just NULL, but "".  Change the
	check if remote->alias is there, to check for empty string.
	Perhaps it still should check if remote->alias == NULL...

	* misc.c(create_index_entry): append newline to index entry, since
	fputs does not do this for us.

        * pr.c(read_pr): added check so oldi is not used if still -1.
        * gnats.c(gnats): moved add_to_index so where it get run regardless
        of the pr being submitted is still pending or not.

Thu Feb 18 14:22:00 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* Makefile.in (clean): Use `$(LIBGNATS)'.

Thu Feb 18 01:36:15 1993  Tim Wicinski  (tim@cygnus.com)

	* Makefile.in(clean): libgnats.a isn't getting deleted during a
	'make clean'. 

	* headers.c(read_header): added check to see if any headers were
	actually found, and if not, rewind the file. 

	* misc.c(create_index_entry): pull out responsible information
	before writing the index, and strip the fullname which is now part
	of the field value.

	* gnats.c(notify_responsible): changed the xmalloc back to STR_MAX
	for the time being. this still needs to be dealt with.

Wed Feb 17 22:58:50 1993  Tim Wicinski  (tim@cygnus.com)

	* gnats.c(add_to_index): move call to create_index_entry from
	outside of fputs call, which core dumps on sgi currently.
	* gnats.c(gnats): if 'synopsis' is null, use subject, but strip
	newline (opposite of previous fix).

Wed Feb 17 17:57:33 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* pr.c (read_pr): Trim off spaces from the end of field values
	before storing them.

	* gnats.c (gnats): If `subject' is NULL, then they didn't give us
	one; synopsis is either-or.  Append the newline to the `Subject:'.

	* Makefile.in (all): Add query-pr.

	* gnats.c (add_to_index): Don't index the class, add
	confidentiality and priority.
	* pr.h (Index): Add members `confidential' and `priority', delete
	`class'.
	* misc.c (next_index_entry): Grok the new fields, don't set the
	class.
	* query-pr.c (pr_matches): Search for the new entries.

	* misc.c (create_index_entry): New fn.
	* gnats.c (add_to_index): Call it.

	* Makefile.in (gnats.8): Update rule.
	(clean): Remove it.

Wed Feb 17 14:53:03 1993  Jeffrey Osier  (jeffrey@fowanton.cygnus.com)

	* edit-pr.man query-pr.man gnats8.man queue-pr.man
	  at-pr.man mkdist.man mkcat.man:  New files in man/.

	* edit-pr.sh: Changed $EDITOR call for changed-why messages
	to just ask for terminal input using `cat'.

	* edit-pr.sh: Took out stderr redirect on $EDITOR calls.

Wed Feb 17 10:48:00 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* configure.in (AC_ALLOCA): Removed.

Wed Feb 17 08:35:37 1993  Tim Wicinski  (tim@cygnus.com)

	* gnats.h: Removed defines for alloca, since it is never used now.

	* gnats.c(reply_to_submitter): Removed arg `fullname', since it now
	gets set in the responsible field as part of gnats.   Changed
	prototype. 

Tue Feb 16 20:11:47 1993  Jeffrey Osier  (jeffrey@fowanton.cygnus.com)

	* gnats.man:  added new `man' directory, moved gnats.man

	* edit-pr.sh: New file.

Tue Feb 16 17:09:25 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* misc.c (next_index_entry): Return an `Index *'; dynamically
	allocate buf, don't use the frame.
	* gnats.h (next_index_entry): Change prototype.
	(Index): New member `next'.

	* query-pr.c: New file.
	* Makefile.in (DISTFILES): Added queue-pr and query-pr.c.
	(query-pr): Added rule.
	* globals.h (mail_agent, gnats_root, Logging_Methods, log_method):
	Moved into gnats.h.
	* main.c (mail_agent, gnats_root, log_method): Init in misc.c instead.
	* misc.c: Include pathmax.h.
	(open_index): New function to open the index file for reading.
	(next_index_entry): New function to return the next index entry in
	the index file.
	(find_pr_category): Quickly yield the category for a given PR.
	(close_index): Close the index file.
	* pr.h (Index): New type.
	* gnats.h (open_index, close_index, find_pr_category,
	next_index_entry): Add prototypes.	

Tue Feb 16 16:06:17 1993  Tim Wicinski  (tim@cygnus.com)

	* gnats.c (gnats): Handle cases if subject or synopsis are blank,
	and fill in accordingly (or not at all, if both are blank). 

	* pr.c (notify_responsible): Changed size of buf to be from STR_MAX
	to be 32 (for english, i count 26, this will give a little more
	space if need be).

	* btime.c (get_response_time): Deal with edge cases like PRs
	getting submitted at BDAY_END.   Also changed some of the structure
	so weirder edge case like bugs submitted at 5pm friday might get
	dealt with better. 

Tue Feb 16 15:20:10 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* gnats.h (is_space): New array.
	(SKIP_WHITE_SPACE): New macro, to do array lookups.
	(init_space): Add prototype.
	* misc.c (SKIPWHITESPACE): Deleted macro.
	(init_space): New function.
	(init_gnats): Call it.
	(get_token): Use the new SKIP_WHITE_SPACE instead of a while loop.
	* pr.c (SKIPWHITESPACE): Deleted macro.
	(read_pr): Use the new one instead.

	* pr.c (write_pr): Line the field values up.

Tue Feb 16 14:55:53 1993  Tim Wicinski  (tim@cygnus.com)

	* pr.c (read_pr): Fixed so it doesn't swallow a completely bogus PR.

Tue Feb 16 14:41:39 1993  Jeffrey Osier  (jeffrey@fowanton.cygnus.com)

	* man/gnats.man:  added new `man' directory, moved gnats.man

Tue Feb 16 14:33:49 1993  Tim Wicinski  (tim@cygnus.com)

	* misc.c (get_next_field): checks for end of string before
	attempting to skip over white space. 

Tue Feb 16 11:26:38 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* gnats.c (safe_env): Deleted.

	* globals.h (append_report): Add prototype. 

	* main.c (main): Delete unused var `reply'.

	* misc.c (get_next_field): Don't make arg `delim' unsigned.
	(read_string): Delete unused var `i'.

	* gnats.h: Include memory.h if HAVE_MEMORY_H is defined.

	* headers.c (write_header): Only pass name if the value's empty.

	* headers.c (readHeader): Rename to `read_header'.
	(LookUpMailHeader): Rename to `lookup_header'.
	(writeHeader): Rename to `write_header'.
	(initHeader): Rename to `init_header'.
	(GetHeaderValue): Rename to `header_value'.
	(SetHeaderValue): Rename to `set_header'.
	* misc.c (GetToken): Rename to `get_token'.
	* pr.c (readPR): Rename to `read_pr'.
	(writePR): Rename to `write_pr'.
	(initPR): Rename to `init_pr'.
	(LookUpPRHeader): Rename to `field_name'.
	(GetPRValue): Rename to `field_value'.
	(SetPRValue): Rename to `set_field'.
	* gnats.c (Free*): Rename to `free_foo'.
	* gnats.h: Change prototypes.

	* misc.c (init_gnats): New function.
	* gnats.h (init_gnats): Add prototype.
	* main.c (main): Call it, instead of initPR and initHeader.

	* main.c (debug_level): Move into misc.c.
	(logfile): Move into misc.c, renaming to `gnats_logfile'.
	* globals.h (debug_level): Move decl into gnats.h.
	* gnats.h (gnats_logfile): Add extern decl.

	* gnats.c (notify_responsible): Avoid null dereferences.

Tue Feb 16 10:32:49 1993  Tim Wicinski  (tim@cygnus.com)

	* pr.c (LookUpPRHeader): Should not take the length of a string
	before checking it.  strcmp called w/o its length argument.

Mon Feb 15 22:18:01 1993  Jeffrey Osier  (jeffrey@fowanton.cygnus.com)

	* gnats.man: Deleted rcs info, added note about mkdist.

	* gnats.man: `gnats (l)' up to date for version 3.0

Mon Feb 15 20:12:58 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* pr.h (ALTERNATE_SUBMITTER): New macro, used for backwards
	compatability.
	* pr.c (LookUpPRHeader): Only take the length of STRING once. Make
	it return a PR_Name, not a short.  If STRING matches with
	`ALTERNATE_SUBMITTER', then return that it matches as the
	SUBMITTER PR field name.

	* Makefile.in (OBJECTS, LIBOBJS): Move headers.o, misc.o, and pr.o
	into LIBOBJS.  Move version.o into OBJECTS.
	(LIBGNATS): New variable and rule.
	(AR_FLAGS): New variable.
	(all, gnats, queue-pr): Depend upon and use $(LIBGNATS) instead of
	$(LIBOBJS).

	* files.c (find_remote): Make a static fn.
	* globals.h (find_remote): Delete prototype.

	* gnats.h: Move most prototypes into globals.h.
	* globals.h (bool, TRUE, FALSE): Move into gnats.h.

	* misc.c (lock_gnats, unlock_gnats, block_signals, unblock_signals):
	Move into gnats.c.
	* gnats.c: Make each of them static.
	* gnats.h: Delete their prototypes.

	* resp-lookup.c: Don't need to include globals.h.

	* gnats-queue.c: Renamed to queue-pr.c.
	* msg.h: Renamed to headers.h.
	* msg.c: Renamed to headers.c.  Include headers.h instead of msg.h.
	* gnats.h: Include headers.h instead of msg.h.
	* Makefile.in: Changed names throughout.

 	* gnats.c (gnats): Call check_enum_types.
	* pr.c (readPR): Not here.
	(check_enum_types): Include the PR number in the report about a
	bad field.
	* gnats.h (check_enum_types): Add prototype.

	* pr.c (check_enum_types): Reset `found' for each field.  Pass the
	default_value for the token, not two values.  Always set it to the
	default value, since every enumerated field should have one.
	(PRentry): Move struct to pr.h, renaming it to `PR_entry'.
	* misc.c (get_next_field): Make arg `delim' be an unsigned char,
	not an int.

	* pr.c (SetPRValue): Avoid calling xmalloc until we know we need
	to use the token.

	* gnats.c (notify_responsible): Renamed `snotify' to `subnotify';
	check for an empty subnotify or cnotify.  New arg `subcontact',
	the contact for a submitter should also receive the message.  Make
	it legal to have a null submitter contact.
	(gnats): Pass it in, calling get_remote_address for their address, if
	it's in there.
	* resp-lookup.c: Don't include pwd.h.
	(get_responsible): Just call get_remote_address.
	since we never use the Remote info
	* files.c: Include pwd.h here instead.
	(get_address): New function, was the body of get_responsible.
	Instead of dup'ing PERSON twice, just set key and alias to be the
	same ptr if PERSON was in the alias file.  Say remote entry not
	found, not responsible person not found.
	(get_adm_record): Check that read_string returns >0, to avoid
	infinite loop.

Mon Feb 15 20:02:55 1993  Jeffrey Osier  (jeffrey@fowanton.cygnus.com)

	* gnats.man: Added old one, will change.

Mon Feb 15 04:22:33 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* misc.c (append_string): Deleted, not used any more.
	* gnats.h (append_string): Deleted prototype.

	* mkdist: New file.

	* Makefile.in (infodir): Added variable.

	* msg.c (decode_site): Deleted function; this will be done
	differently later.

	* msg.c (writeHeader): If the value of the header's null, just
	output the header name.
	* gnats.c (notify_responsible): If the Subject's empty (or
	non-existant), emit the missing newline.

	* pr.h (PR_Name): Change use of `CUSTOMER_ID' to `SUBMITTER'.
	* pr.c (initPR): Likewise.
	* gnats.c (gnats): Likewise.
	(add_to_index): Also put the submitter in the index.  Don't end
	the line with a trailing colon.

Sun Feb 14 16:44:01 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* gnats.c (notify_responsible): Only talk about when they should
	send a response if verify_analysis() is true.

	* gnats.c (verify_analysis): Check for strcmp == 0 explicitly, and
	don't reverse the logic.

	* files.c (get_adm_record): Delete the trailing newline.

	* gnats.c (reply_to_submitter, notify_responsible): Clean up when
	to insert a newline for a header.

	* main.c (flag_ack, flag_notify, flag_no_atpr): Give default
	values as specified by config.h.
	(long_options): Delete options `notify', `no-atpr', and
	`acknowledge'.
	(main): Change getopt string. 
	* gnats.c (gnats, notify_resonsible): Use them.
	* globals.h (flag_ack, flag_notify): Declare.
	(flag_no_atpr): Delete.

	* misc.c (close_mail_file): Call fflush before pclose.
	* gnats.c (run_atpr): Don't call fclose on the pipe.

	* files.c (get_adm_record): Also ignore empty lines.

	* Makefile.in (at-pr, mkcat, gnats.el): Look in srcdir for the
	originals.  Create temporary outputs, moving them to their real
	names, on the off chance a sed command failed. 

	* Makefile.in (MAKEINFO, TEXIDIR): New variables.
	(info, dvi): Depend upon gnats.texi.
	(gnats.info, gnats.dvi): Add rules.
	(install): Install gnats.info* into infodir.

	Fix arbitrary line truncation.
	* misc.c (read_string): Don't delete the trailing newline.  If the
	line is empty, return a length of 1.
	* msg.c (readHeader): Change what it thinks is a blank line.
	Don't emit a newline between the `Received:' header and its
	continuation, since it now ends in a newline itself.
	(writeHeader): Don't emit a newline after any header.
	* pr.c (readPR): Only go after tokens if the length's > 1.  Don't
	add any newlines; if it's a non-MultiText field, then take the
	newline off then---they're the only fields that have a value that
	needs it removed.

	* msg.c (initHeader): Delete extra space after `References:'.
	(writeHeader): Don't put a space between the name and value if
	it's SM_FROM (aka, `From ').

	* pr.h (PR_START_FIELD): New macro.
	* pr.c (readPR): Only try to resolve tokens if they could possibly
	be a PR field (they begin with PR_START_FIELD), so we can (among
	other things) avoid trying to match every RFC-822 header.  Instead
	of assigning `l' and then just setting it again, pass line itself
	down into GetToken.

	* misc.c (read_string): Return the length of the string.
	Decrement `i' if it's got a newline at the end.
	* pr.c (readPR): Get the length of the line here, to avoid calling
	strlen twice on the same string.  If len was 0, then avoid doing
	the lookups.  Call xrealloc instead of doing it by hand.

	* gnats.h (read_string): Change prototype.
	* msg.c (readHeader): Make `i' an int, not a short.

	* gnats-queue.c (fork_gnats): Pass `-D' into gnats if gnats-queue was
	given an arg to set flag_debug. 

	* Makefile.in (clean): Delete mkcat.

	* gnats.c (gnats): Fix call to punt, it should be fatal when it
	can't create pending.

	* main.c (main): Use punt, not error.

	* gnats.h (close_mail_file, log_msg): Add prototypes.
	(find_submitters): Fix typo, it's find_submitter.

	* gnats.h: Don't include pr.h.

	* pr.c (readPR1): Deleted, the new readPR works.
	(struct PRentry): Delete field `created'.
	(initPR): Don't set it, we don't need it.
	(readPR): Use memcpy, not bcopy.

	* Makefile.in (all, mkcategories, install): Change to mkcat.

	* gnats.h: Include sys/types.h for things like dev_t that might
	show up in sys/stat.h.

	* mkcat.sh (GNATS_ROOT, CATEGORIES): Adjust so they work.  Don't
	use getopts.  Delete lines with only whitespace, not just
	precisely empty lines. 
	* Makefile.in (install): Install mkcategories.  Also install the
	sample files.

	* config.h (USE_BIN_MAIL): Default this to FALSE.

	* gnats.c (create_report): Don't clear errno.
	* misc.c (log_msg): Don't pay attention to errno.

Sun Feb 14 03:34:29 1993  Jeffrey Osier  (jeffrey@fowanton.cygnus.com)

	* gnats.c (reply_to_submitter): Don't mention the support site in
	the automatic acknowledgment message.

Sat Feb 13 13:08:51 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* Makefile.in (DISTFILES): Don't include COPYING.LIB.

	* resp_lookup.c: New file.
	* gnats.c: Don't include pwd.h.
	(get_responsible): Move to resp_lookup.c.
	(gnats): Call it with a pointer to the category instead.
	* gnats.h (get_responsible): Change prototype.
	* Makefile.in (SOURCES, OBJECTS): Add resp_lookup.

	* misc.c (punt): New function.
	* gnats.c, files.c, main.c, misc.c: Rather than use LOG_ERR, always
	send GNATS_ADMIN mail about the problem by calling punt, except in
	mail areas.

	* main.c (main): If the debug_level won't let us emit the usage,
	then let GNATS_ADMIN know about incorrect usage.

	* gnats.c (get_bug_number): Call block_signals/unblock_signals.

	* config.h (ACKNOWLEDGE): Add define.
	* gnats.c (gnats): Use it around the call to reply_to_submitter.

	* globals.h (LOG_DEBUG): Delete.

	* globals.h (LOG_ERR, LOG_INFO, LOG_DEBUG): If they don't have
	syslog, define these to be ascending numbers, for debug purposes.
	(LOG_NONE): New define, value for debug_level at release time.
	* main.c (main): For debug option, set debug_level to LOG_INFO,
	don't expect them to give us an argument.

	* gnats.c (create_report): Clear out errno after calling stat,
	since (if the test worked) it will have ENOENT anyway.

	* pr.c (initPR): Delete debug message.

	* misc.c: Include signal.h.
	(block_signals, unblock_signals): Ignore/enable user interrupts.
	* gnats.h (block_signals, unblock_signals): Declare them.
	* gnats.c (create_report, add_to_index, notify_responsible,
	reply_to_submitter): Call block_signals/unblock_signals.

	* Makefile.in (all): Add gnats.el target.
	* gnats.elisp (report-pr, file-pr): Delete fns and autoloads.

	* field.c: Rename to gnats.c.
	* Makefile.in (SOURCES, OBJECTS, field.o): Change accordingly.

	* gnats-queue.c (fork_gnats): Dup fd 2, not fd 3.

	* field.c (verify_analysis): New function.
	(gnats): Use it as a predicate for running at_pr.  Call notify_responsible
	with the contract type, response time, and expiry.
	(notify_responsible): New args `type', `rtime', and `expired'.  Tell the
	person responsible when the first analysis should be sent, if
	NOTIFY is defined.

	* Makefile.in (.c.o): Pass in GNATS_ADDR.
	* field.c (reply_to_submitter): Use it for the `From:' field.

	* field.c (gnats): If a PR fell into pending, don't do anything
	but send it to GNATS_ADMIN.
	(notify_responsible): If there was nothing for SNOTIFY or CNOTIFY,
	don't try to Cc: to them.

	* msg.c (close_mail_file): New function, to match open_mail_file.
	* files.c (reply_to_submitter, notify_responsible): Use it.
	* main.c (main): Likewise, for MAIL logging.
  
	* field.c (notify_responsible, reply_to_submitter): If
	USE_BIN_MAIL isn't defined, pass NULL, not an empty string.

	* main.c (flag_no_atpr): Default to FALSE.

	* msg.c (readHeader): Reset `received', so we can swallow as many
	sets of `Received:' headers as we want.

	* misc.c (copy_string): Delete.
	* gnats.h (copy_string): Delete prototype.
	* field.c, files.c, msg.c, pr.c: Change all callers to use strdup
	instead of copy_string.

	* gnats-queue.c (fork_gnats): Return the status of the gnats child.
	(run_gnats): Get the value from fork_gnats, and only unlink the file
	if the child ran okay.

	* at-pr.sh: Full rewrite.

	* btime.c: Don't include time.h or assert.h.
	(get_response_time): Return the tm struct for when their time's
	up.  Don't call assert.
	* gnats.h: Instead, include time.h here.
	(get_response_time): Add prototype.
	* main.c (at_pr): Deleted.
	* globals.h (at_pr): Deleted.
	(flag_run_atpr): Add decl.
	* field.c (run_atpr): New function.
	(safe_env): New array.
	(gnats): Call it.  Don't say it's expired if the `rtime' field of
	SUBMITTER is -1, since that means *don't have one*.  New variable
	`arrival_time', to make the code a little more readable.  New
	variable `number', so we can pass it into run_atpr.  Use the value
	returned by get_response_time for run_atpr to munge.

	* files.c (get_adm_record): Start ERR at 0, not -1, and adjust
	code accordingly.

	* misc.c (log_msg): Fixup for __STDC__ vs non-std.

	* msg.c (initHeader): Delete debug message.

	* misc.c (log_msg): Use varargs instead.  New arg `HAS_ARG'.
	* gnats.h (log_msg): Delete prototype.
	* pr.c, main.c, files.c: Fix all calls to not include a useless
	third argument.

	* main.c (flag_at_notify): Renamed to `flag_no_atpr'.
	(long_options): Changed.
	* field.c (gnats): Change usage.
	* globals.h (flag_run_atpr): Renamed.

	* Makefile.in (*.c deps): Changed to *.o, add config.h as well.
	(gnats-queue.o): Add header dependencies.

	* field.c: Don't include sys/file.h, we don't need it.
	(check_if_reply): Don't call append_report; instead, return the path.
	(get_bug_number): Rename `lck' to `lock_file'.  Use STR_MAX
	instead of 256 for the dimensions for `sbuf'.
	(append_report): Make global.
	* main.c (main): If check_if_reply is non-null, call append_report.
	* gnats.h (check_if_reply): Change prototype.
	(append_report): Add prototype.

	* main.c (main): Turn on all disabled options.  Use getopt_long.
	(long_options): Created struct.
	(main): Revise usage.
	(customer_id): Rename to `submitter'.
	(at_pr): Create with `gnats_root', not `GNATS_ROOT'.
	(autocreate, notify, at_notify): Rename to `flag_'foo.  Make int,
	not bool.
	* gnats-queue.c (long_options): Give 'd' and 'f' back to getopt for
	--directory and --file.  Set `HAS_ARG' and `VAL' fields properly.
	* field.c (gnats): Rename uses of `autocreate' to `flag_autocreate'
	* globals.h (autocreate): Likewise; make int.

	* mkcategories.sh: Renamed to mkcat.sh, for filename length limits.
	* Makefile.in (mkcategories): Use mkcat.sh instead of mkcategories.sh.
	(DISTFILES): Change it.

Fri Feb 12 12:26:26 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* submitters, categories, remote: New sample files.

	* files.c (get_adm_record): Make static.
	* misc.c (lock, unlock): Rename to `lock_gnats' and `unlock_gnats'.
	* gnats.h (get_adm_record): Delete prototype.
	(lock, unlock): Change names.

	* mkcategories.sh (GNATS_ROOT): Replace with substitute string.
	* Makefile.in (all): Add mkcategories.
	(mkcategories): New rule.
	(DISTFILES): Add at-pr.sh, mkcategories.sh, error.c, xmalloc.c,
	gnats.elisp, gnats.texi
	(install): Add chowns as appropriate.
	(*.c dependencies): Modify appropriately, setting all of
	$(SOURCES) dependant upon gnats.h and globals.h.

	* files.h (CU_*, CA*_): Deleted unused macros.

	* globals.h (bool): Made a short, not a char.
	(gnats_max): Deleted.

	* Makefile.in (clean): Also use mostlyclean.  Delete *.dvi and
	mkcategories as well.
	(mostlyclean): Get rid of TeXinfo cruft.
	(realclean): Delete GNATS info files, and processed indices.

	* gnats.els: Rename to gnats.elisp.

Thu Feb 11 21:56:48 1993  Jeffrey Osier  (jeffrey@cygnus.com)

	* created gnats.texi, outline only...details on the way

Thu Feb 11 12:58:55 1993  Tim Wicinski  (tim@cygnus.com)

	* mkcategories: new shell script to create category directories based 
	on categories file.

	* globals.h: remove extern mail_agent since we will now just use a
	#define only for that one. 

	* main.c: ifdef'ed out all unused options. will be removed in the
	next few days barring any unforseen situations. 

	* pr.h: removed an unneeded define, cleaned up the strings some.

	* field.c(create_report): check for file existence here instead of
	everywhere where it gets called. 

	* files.h: removed bogus fields from structures, and changed a few
	defines, cleaned up some comments. 

	* globals.h: changed prototype of SetPRValue.

	* pr.c(SetPRValue): changed return call to be of type bool. Also
	checks when an Enum type is being set, and makes sure it is
	getting set with a correct value.

Thu Feb 11 12:44:18 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* gnats-queue.c (fork_gnats): Don't chdir to QUEUE_DIR.
	(run_gnats): Instead, do it here and opendir on ".".

	* main.c (at_pr): Make local to main, it's never used elsewhere.
	* globals.h (AT_PR, at_pr): Deleted.

	* globals.h (BINDIR): Define just as "/gnats-bin".
	* main.c (main): Build the at_pr name using GNATS_ROOT also.
	* gnats-queue.c (fork_gnats): Likewise.

Thu Feb 11 00:08:57 1993  Tim Wicinski  (tim@cygnus.com)

	* main.c (main): Threw out the options `-T' (trace), `-o'
	(redirected output), and `-p' (print comment).

	* globals.h (NOTIFY, AB, CHECK_IS_REPLY): Deleted old macros.

Wed Feb 10 23:27:11 1993  Tim Wicinski  (tim@cygnus.com)

	* Makefile.in (install): Also create the dir `gnats-queue'.

	* msg.h (X_MODE_STRING, SM_FROM_STRING, RETURN_PATH_STRING,
	RECEIVED_STRING, MSG_ID_STRING, DATE_STRING, FROM_STRING,
	SENDER_STRING, REPLY_TO_STRING, TO_STRING, APPAR_TO_STRING,
	CC_STRING, IN_REP_TO_STRING, SUBJECT_STRING, REFERENCES_STRING,
	COMMENTS_STRING, KEYWORDS_STRING, X_SEND_PR_STRING): Deleted macros.
	* msg.c (initHeader): Replaced macros with real strings.

	* files.c (find_categories/find_submitters): Don't default the
	`notify' field to gnats-admin if it's empty---leave it empty.
	* field.c (notify_responsible): Check if the notify field's empty
	before trying to send mail.

Wed Feb 10 13:42:59 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* gnats-queue.c (fork_gnats): chdir to queue_dir before firing off
	gnats.
	(run_gnats): Unlink the queued file when it's been processed by gnats.

Wed Feb 10 00:11:33 1993  Tim Wicinski  (tim@cygnus.com)

	* misc.c: fixed type with #else stmt.

	* field.c (reply_to_submitter/notify_responsible): 
	* misc.c (open_mail_file):
	* main.c: 
	* globals.h: replaced all references of global variable
	use_bin_mail with #define USE_BIN_MAIL instead. This seems to be
	more of a compile time and not run time feature.

	* field.c: added places when it sends me mail for the time being,
	until we get it all straightened out.

Tue Feb  9 14:32:26 1993  Tim Wicinski  (tim@cygnus.com)

	* pr.c(readPR): totally rewritten in order to make it faster. use
	buffer mgmt instead of lame string handling functions. works fast
	on big files. 

	* pr.h: added those evil and insidious '>' back to the front of
	the PR fields.

	* main.c(main): added third arg to log_msg call. 

	* field.c(gnats): rearranged site debug msg. changed comments.

	* gnats.h: added extern for log_msg.

	* Makefile.in: added install rules (first pass). Sample files and
	man pages need to be added still. 

	* gnats-queue.c: added #define for MAXBSIZ for time being.


Mon Feb  8 11:54:20 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* field.c (gnats): If the bits for MODE aren't defined, force it.  

	* gnats.h (alloca): Undef before defining if __GNUC__.

	* msg.c (readHeader): Call xmalloc instead of alloca.
	* gnats-queue.c (fork_gnats): Likewise.
	(drop_msg): Likewise.

	* gnats-queue.c (run_gnats): Cast strdup to a char*.

	* main.c (main): Don't try to stringify ("foo" "bar" -> "foobar")
	for the usage.
	* pr.c (initPR): Likewise, for AUDIT_TRAIL.

	* at_pr.sh: Renamed to at-pr.sh.
	* Makefile.in (at_pr): Renamed to at-pr.
	(clean): Delete at-pr instead.

	* Makefile.in (gnats-queue): Add compilation rule.

	* Makefile.in (clean): Delete gnats-queue.
	(DISTFILES): Add queue.h.

	* gnats-queue.c (drop_msg): Unlink the queue file from /tmp when
	it's done being moved.

	* gnats-queue.c, queue.h: New files.
	* Makefile.in (gnats-queue): New rule.  Use LIBOBJS.
	(LIBOBJS): Move error.o, xmalloc.o, and version.o to here.
	(OBJECTS): Delete them from here.
	* main.c (main): New arg `f', to receive input from a file.

	* configure.in (AC_DIR_HEADER): Add.

	* gnats.els (GNATS-DB): Deleted variable.
	(edit-pr): Use GNATS-ROOT instead.

	* Makefile.in (GNATS_ROOT, GNATS_ADDR): New vars.
	(.c.o, at_pr, gnats.el): Pass them.
	* gnats.els: New file.
	* config.h (GNATS_ROOT): Deleted.

	* at_pr.sh: New file.
	* Makefile.in (at_pr): New rule.
	(all): Add it to all.
	(clean): Delete at_pr.

	* globals.h (BDAY_START, BDAY_END, BWEEK_START, BWEEK_END): Deleted.
	* btime.c: Moved here.

	* config.h: New file.
	* Makefile.in (DISTFILES): Added it and other headers.
	* field.c, files.c, main.c: Include it.
	* globals.h (GNATS_ROOT, NOTIFY): Move there.
	(CYGNUS_SUPPORT, SUN_CUSTOMER, INDENT): Deleted.
	* main.c (SUN_CUSTOMER): Deleted.

	* globals.h (AT_PR): Deleted.
	* main.c (main): Set it up at run-time.  Rename local `at_pr' to
	`at_notify'.
	(at_pr): Don't init yet.

	* configure.in (AC_REPLACE_FUNCS): Deleted.

	* main.c (version): Output newline.

	* Makefile.in: Add dependencies for misc files.

	* pr.h (PR_type): Create enum instead of defines.
	pr.c (TEXT, MULTI_TEXT, ENUM, INT, RECEIVER): Change uses.
	(PRentry): Change types.

	* field.c (reply_to_submitter): Only use FULLNAME if it's non-null.

	* error.c, xmalloc.c: New files.
	* Makefile.in (SOURCES, OBJECTS): Add them.

	* gnats.h: Add checks for getting string.h/strings.h, getopt, et al.
	* btime.c: Include it.

	* files.c: Include pathmax.h.

	Merge in stuff from src/Makefile.in.
	* Makefile.in (VERSION, SOURCES, OBJECTS): Add vars.
	(DISTFILES): Add SOURCES.

Sat Feb  6 01:19:44 1993  Tim Wicinski  (tim@cygnus.com)

	* field.c (add_to_index): New function which adds new PRs into a
	small index that query_pr can probably use. A definite first pass.

	* gnats.h: Include globals.h.

	* main.c (AT_PR): Changed to `at_pr'.
	* globals.h (AT_PR): Likewise.

	* field.c (get_responsible): Changed fn to return structure
	remote that includes full name of responsible person. This new
	feature will be mailed out to submitters in acknowledgements. 

	* gnats.h: Added new as well as more function prototypes.

	* misc.c: Check system call returns. 

	* main.c: Removed old and crusty variables and defines.

	* globals.h: Removed some old defines and variables that are
	unused.  Added comments describing definable options.

	* files.h: Removed all instances of the word "Customer".
	* files.c: Likewise.
	* field.c (gnats): Changed `Customer' to `Submitter'.  Changed
	handling with respect to get_responsible.  

Fri Feb  5 09:24:54 1993  Tim Wicinski  (tim@cygnus.com)

	* main.c: added code which does checking to see if incoming
	message is a reply to a preevious PR. moves some code from procedure
	gnats() over here. 

	* btime.c: changed contributor address, added small code to remove
	trailing newline from ctime(3C).

	* field.c: rewrite parts of procedure gnats. more checking about
	correct bug category to insert bugs; added procedure append_report
	(used in main); changed ack message sent submitters; removed
	unused variables and cleaned up code to make it meet facist coding
	standards. lots changed here.

	* misc.c,pr.c: changed contributor.

	* files.c: rename of all readFname functions, changed names to
	find_Fname, added procedure get_adm_record that does all file
	parsing. Other cleanup as well.

	* globals.h: removed GNATS_DB, GNATS_ADM, and MAX_ADM_FILES defines,
	added define for NOTIFY. 

	* gnats.h: changed function prototypes for procedures in files.c.

Sun Jan 31 00:17:04 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* pr.c (writePR): If it's a MULTI_TEXT field, output a newline
	before starting to print the field's value out.
	(initPR): A RELEASE is a single TEXT line, not MULTI_TEXT.

	* field.c (get_bug_number): Only try to grab a lock on the lock
	file if it already existed---if we opened for writing, don't bother.

	* configure.in (AC_HAVE_HEADERS): Look for memory.h.

	* btime.c, field.c, files.c, main.c, msg.c, pr.c: Include system.h.
	* main.c: Include gnats.h.

	* gnats.h (xmalloc, xrealloc): Declare.

	* main.c (main): Return void.

	* mkdir.c: Include ansidecl.h.
	(mkdir): Make arg DMODE be mode_t (FIXME).
	* basename.c: Use HAVE_STRING_H, not USG.

	* lib/Makefile.in (.c.o): Look in ../../include.

	* main.c (main): Call openlog with LOG_PID, not LOG_ODELAY.  If
	LOG_USER isn't defined, we've got the old syslog (e.g., Ultrix v3 & 4),
	so don't give openlog the facility argument.  If we don't have
	syslog facilities, don't accept them as possible alternatives for
	error messages.
	(log_level): Only define if HAVE_SYSLOG_H.
	* msg.c, field.c, files.c, pr.c: Include syslog.h.
	* misc.c (log_msg): Don't try to use SYSLOG if it's not there.
	* globals.h (LOG_ERR, LOG_INFO, LOG_DEBUG): Define to 0 if we
	don't have syslog.h.
	(LOGGING): Default to MAIL if they don't have syslog.
	(log_level, LOG_LEVEL): Don't mention (or set) if we don't have syslog.

	* conf.h: Delete.
	* btime.c, field.c, files.c, main.c, misc.c, msg.c, pr.c: Don't
	use it.

	* Makefile.in (distclean, realclean): Add rules to clean top-level.

Sat Jan 30 15:06:07 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* src/Makefile.in (srcdir, VPATH, OBJECTS): Add vars.
	(gnats): Use `OBJECTS', not `OBJS'.
	(LIBIBERTY): Deleted.

	* misc.c: Include system.h.  Wrap HAVE_SYSLOG_H around syslog.h.

	* pathmax.h: New file.

	* configure.in: Use AC_HAVE_HEADERS instead of individual AC_HEADER_CHECKs.
	Use AC_ALLOCA; add AC_OUTPUT; don't use AC_USG.

	* man/Makefile.in: New file.

	* alloca.c, error.c, getopt.c, getopt1.c, getopt.h, system.h: New files.
	* lib/Makefile.in (SOURCES, OBJECTS, DISTFILES): Add them.
	(getopt1.o): New rule.

	Total reorganization, to match other GNU things and use autoconf.
	* Makefile.in: Rewritten.
	* configure.in: Now use autoconf.
	* configure, README, INSTALL, COPYING, COPYING.LIB: New files.
	* lib/{mkdir.c, Makefile.in, basename.c, strstr.c, xmalloc.c}: New files.
	* man/: New dir for manuals (eventually).
	* include/: Deleted, moved headers into src/.
	* misc.c (xmalloc, xrealloc): Deleted, now in libgnats.a.

	* Makefile.in (VERSION): Add variable.
	(version.c): Add rule for creation.
	(SRCS, OBJS): Add version.[co] to lists.
	* globals.h (VERSION): Delete macro.
	(version_string): Add var decl.
	* main.c (version): New fn to print out version_string from version.c.
	* misc.c (version): Delete fn.
	* gnats.h (version): Delete decl.

	* main.c, globals.h: Rename macros from `D_FOO' to just `FOO'.

	* main.c (GNATS_ROOT, GNATS_DB, GNATS_ADM, MAIL_AGENT, BIN_MAIL,
	LOG_LEVEL): Rename to lowercase names.
	(VERSION, GNATS_ADMIN): Delete, use the macros.
	(LOGGING): Renamed to log_method.
	Changed uses in necessary files.
	* globals.h: Change decls.

	* globals.c: Move this stuff into main.c.
	(PENDING, UNKNOWN): Move into gnats.h as macros.
	* Makefile.in (SRCS, OBJS): Delete globals.[co].

	* gnats.h (COL, COLB, ES, NILSTR, NL, QUOTE, SL, SPACE, TAB): Delete.
	Change all files to use the characters, rather than obscuring
	things by using these macros.

	* field.c, files.c, main.c, msg.c, pr.c: Make many functions be
	static.  Include ansidecl.h to get PARAMS; use PARAMS.
	* gnats.h (PROTO): Delete; change uses of PROTO to PARAMS.  Add a
	bunch of prototypes.

	* msg.c (readHeader): Pass LINE into GetToken, and check line against
	'\0', to avoid an unnecessary assignment.

	* btime.c: Include assert.h.

	* misc.c (SKIPWHITESPACE): Wrap uses of `l' with parenthesis.
	Check that `*(l)' isn't a null byte, not `*line'.

	* misc.c (xmalloc, xrealloc): New functions.  Every file uses them
	instead of malloc/realloc now.
	* gnats.h (xmalloc, xrealloc): Add decls/prototypes.

	* field.c: Use `PROTO' for function prototypes.
	* gnats.h (PROTO): Define to include args if __STDC__.

	* btime.c (get_response_time): Bail if response_buf is NULL.


Local Variables:
mode: indented-text
left-margin: 8
fill-column: 74
version-control: never
End:
