Mon Feb 22 09:59:16 1993  James Clark  (jjc at jclark)

	* Version 1.1 released.

	* md1.c (fixdatt): New function.
	(mdnadl): For attlist #notation that occurs after an entity with
	the specified notation has been declared, call fixdatt rather
	that giving an error.
	* sgmlfnsm.h: Declare fixdatt.
	* md2.c (storedatt): Remove call to adlval.
	(mdextid): Precede calls to storedatt with call to adlval.
	* msg.h: Change message 218.

	* sgmls.c (read_line): Cast UINT_MAX to unsigned.

	* Makefile.bcc: Add optimization flags for Borland C++ 3.1.

	* stklen.c: Increase to 14k.

Sat Feb  6 19:29:01 1993  James Clark  (jjc at jclark)

	* etype.h (EMM): New etdmin flag.
	* md1.c (mdelem): Set EMM flag if minus was explicitly specified
	for end tag minimization.
	(etdadl): Give an error if there's a CONREF element and the EMM
	flag was set, instead of checking OMITTAG and the EMO flag.
	(mdelem): Likewise for declared content of EMPTY.

Wed Feb  3 11:08:02 1993  James Clark  (jjc at jclark)

	* unix.cfg: Add LIMITS_H_MISSING define.
	* configure: Handle LIMITS_H_MISSING.
	* std.h: Don't include <limits.h> is LIMITS_H_MISSING is defined.
	In this case guess UINT_MAX, based on sizeof(unsigned int).

Mon Feb  1 21:49:52 1993  James Clark  (jjc at jclark)

	* sgmls.c (read_line): Don't allow buffer length to exceed
	UINT_MAX.
	(E_LINELENGTH): New error.
	* std.h: Include <limits.h>

Sun Jan 31 23:58:55 1993  James Clark  (jjc at jclark)

	* pars1.c (destack): Don't give error message if conrefsw is set.

Sat Jan 30 21:36:36 1993  James Clark  (jjc at jclark)

	* lineout.c (process_document): Add argument that says whether
	document is subdocument.  Don't output appinfo if document is
	subdocument.
	* appl.h: Change declaration.
	* main.c (main): Change caller.

Fri Jan 15 04:30:17 1993  James Clark  (jjc at jclark)

	* Makefile: Add formatted man pages to distribution.  Include
	rules to build them.

	* sgmls.c (RECHAR): Delete definition.

	* appl.h: Delete comma after last enumerator.

Mon Jan 11 09:51:43 1993  James Clark  (jjc at jclark)

	* sgmldecl.c (sdnames): Size of temp buffer should be
	REFNAMELEN+1.

Sun Jan 10 22:37:20 1993  James Clark  (jjc at jclark)

	* rast.c (do_file): Add default case to switch.

Fri Jan  8 09:57:07 1993  James Clark  (jjc at jclark)

	* synrf.c: Delete NONSGML. Add POSTLINK.
	* synxtrn.h: Corresponding changes.

Thu Jan  7 20:00:07 1993  James Clark  (jjc at jclark)

	* rast.c (do_file): Free attributes when skipping subdocument.

	* sgmls.c (sgmls_free): Free entity.u.external.filenames.

	* latin1.c, ebcdic.h (SHIFTNON, UNSHIFTNON): Use simpler
	definitions.

Wed Jan  6 17:36:50 1993  James Clark  (jjc at jclark)

	* pcbrf.c (et0a): Change action for spcr to DAS_.

	* pars2.c (parse): In case ERX_ catch references to entities that
	are not allowed in replaceable character data.
	(parselit): Delete case PIE_. In case DEF_ don't catch references
	to external data entities.

	* md1.c (mdelem): Test for length of rank stem and rank suffix was
	off by 2.

	* pars2.c (parsemd): For case NUM, use NU not NUM for lexical class.

	* md1.c (mdattdef): Uncomment check for ID attribute with default
	value.

Sun Jan  3 20:30:34 1993  James Clark  (jjc at jclark)

	* sgmldecl.h: Delete declaration of appinfo[].

	* sgmldecl.c (sdnames): Return if keyword unrecognized.

	* synxtrn.h: Delete KDTD. Renumber K*.
	* synrf.c: Delete "DTD".

	* sgmldecl.c: Move definition of REFLITLEN to...
	* entity.h:
	* md2.c (mdextid): Length of minimum literal must not exceed
	REFLITLEN.

Sat Jan  2 17:03:11 1993  James Clark  (jjc at jclark)

	* pars1.c (checkdtd): Check for undefined short reference maps if
	-u flag is used.

	* md2.c (mdsrmdef): Don't free the map on error if it was
	previously used in a USEMAP declaration.

Fri Jan  1 19:37:38 1993  James Clark  (jjc at jclark)

	* entgen.c (sysidgen): Return 0 if no non-empty filenames were found.

Thu Dec 31 02:52:38 1992  James Clark  (jjc at jclark)

	* pars2.c (charrefn): Split last part off into...
	(datachar): New function.
	(charrefa): Split part off into...
	(setcurchar): New function.
	(parse): In case NON_, call datachar().
	* sgmlfnsm.h: Declare new functions.

	* sgmls.h: Use separate length for pi.
	* sgmls.c (sgmls_next): Handle this.
	* rast.c (output_processing_instruction): Add length argument.
	(do_file): Change caller.
	* sgmlsasp.c (output_pi): Add length argument.
	(do_file): Change caller.

	* pars2.c (parse): In case NSC_, give an error.
	* pcbrf.c (pcblitc, pcbmds, pcblitv): Use SYS_ action for NSC.
	(pcbmsi): Get rid of NS4 state.  Handle NSC like NON.
	* pars2.c (charrefn): Only potentially confusing characters need
	to be prefixed with DELNONCH.
	* msg.h: Change message 4 so as not to say `in markup'.
	* pars2.c (parse): When handling SYS_, if non-SGML character was
	DELNONCH skip another character.

Wed Dec 30 11:00:15 1992  James Clark  (jjc at jclark)

	* lextoke.h: Add SP class for SPACE.  SEP is now just SEPCHAR.
	* pcbrf.c (pcbval): Change accordingly.  Don't allow RS, RE or SEPCHAR
	during tokenization.
	* lextaba.c (lextoke): Change code for space to SP.
	* pars2.c (parseseq): Test that it's not a space in addition to
	testing that its code is not SEP.
	* sgmldecl.c (sdnaming): Check that class is SP or SEP.

	* sgmlmsg.c: Define HDREE string.
	(printit): Use HDREE string when the current character is EOS.

	* pars2.c (charrefa): Rewrite. If reading from an internal entity,
	need to copy the entity before changing it.
	* source.h (struct source): Add copied member.
	(COPIEDSW): New macro.
	* sgml2.c (entopen): Initialize COPIEDSW.
	(entget): If internal entity was copied, free copy before popping
	SCB stack.

	* entity.h (SHIFTNON, UNSHIFTNON): Move definitions to latin1.h
	* ebcdic.h (SHIFTNON, UNSHIFTNON): Provide appropriate
	definitions.

	* appl.h: Move DELNONCH, DELCDATA, DELSDATA to latin1.h and ebcdic.h.
	* ebcdic.c: Use these.
	* entity.h (struct switches): Remove delnonch, delcdata and
	delsdata members.
	* main.c (swinit): Don't initialize delnonch.
	* sgmlio.c (ioinit): Don't save swp->delnonch.
	(ioread): Use DELNONCH constant.
	* sgmlmsg.c (swdelcdata, swdelsdata, swdelnonch): Deleted.
	(msginit): Don't initialize these.
	(printit): Use DELNONCH constant.  Can now use switch statement.
	(transparm): Use constants for delimiters.
	* sgmldecl.c (sdinit): Use DEL* constants.
	* sgmldecl.c (sdnaming): Use DELNONCH constant.
	* pars2.c (tokdata): Likewise.
	(parselit): Likewise.
	* sgml1.c (sgmlset): Don't initialize nonchbuf.  Don't change
	lexical codes for sw.delnonch.
	* sgmlxtrn.c (nonchbuf): Initialize first character.
	* lextaba.c (lexcnm, lexcon, lexlms): Make code for DELNONCH be
	NSC.
	* synxtrn.h (struct lexcode): Delete lmnsc member.
	* lexrf.c (lex): Change initialization accordingly.
	* lexcode.h: Move definition of NSC to lextaba.c.

	* Get rid of BADCHAR hack by having entity escape magic characters
	with delnonch just as happens in internal entities.
	* sgmldecl.c (sdinit): Don't make BADCHAR a magic character.
	* pars2.c (parse): When handling NON_ don't check if character is
	BADCHAR.  When handling NSC_, give an error if at file level.
	* latin.h, ebcdic.h (BADCHAR): Deleted.
	* ebcdic.c: Don't use BADCHAR.
	* sgmlio.c (ioinit): Don't make BADCHAR bad. Remember
	swp->delnonch in delnonch.
	(iocont): Count a bad character as 2 characters.
	(ioread): Prefix bad character with delnonch.  Make sure there's
	always room for two characters plus end of buffer.
	* source.h (struct source): Add nextchar member.
	(NEXTC): New macro.
	* sgml2.c (scbset): Update NEXTC.
	* sgmlaux.h (struct location): Add nextchar member.
	* sgml1.c (get_location): Update nextchar.
	* sgmlmsg.c (IS_MAGIC): Deleted.
	(printit): Print the real next character if curchar is delnonch.
	* sgmlio.c (isbad): Rename to ismagic.
	* msg.h: Delete message 152.

	* appl.h (ADDNONCH): Move to entity.h.
	* entity.h (struct switches): Delete addnonch member.
	(UNSHIFTNON, SHIFTNON): New macro.
	* main.c (swinit): Don't initialize addnonch.
	* lineout.c (print_string): Use UNSHIFTNON.
	* sgmlmsg.c (transparm): Likewise.
	* sgmldecl.c (sdnaming): Likewise.
	* pars2.c (shiftnon): Deleted.
	* sgmlfnsm.h: Delete prototype.
	* pars2.c (parse, charrefn): Use SHIFTNON macro instead of
	shiftnon function.
	* action.h (NSC_): New action.
	* pars2.c (parse): Handle NSC_.
	* pcbrf.c: Undo change of Jun 10, except to pcbmsi.
	For parse modes which use NON_ action, handle NSC class by using
	NSC_ action and transforming state as for NON class.

Tue Dec 15 10:31:43 1992  James Clark  (jjc at jclark)

	* lineout.c (process_document); Don't define subdoc if suppsw is set.

	* Makefile (OBJS3): Add getopt.o.

	* sgmlio.c (ioclose): Don't call closefile if fp is 0.

Thu Dec  3 09:46:41 1992  James Clark  (jjc at jclark)

	* md1.c (mdattdef): Check that normalized length of CDATA default
	value does not exceed LITLEN.

	* entity.h (struct switches): Add die member.
	* main.c (die): New function.
	(swinit): Initialize die.
	* sgmlmsg.c (msginit): Initialize die.
	(msgprint): Call die for EXITERR errors.

	* main.c (OPTIONS): Rename to options.  Rewrite as an array of
	char so as to avoid duplication.

Tue Dec  1 07:19:47 1992  James Clark  (jjc at jclark)

	* Makefile.bcc: rast needs getopt.obj.

Mon Nov 30 15:52:03 1992  James Clark  (jjc at jclark)

	* sgmldecl.c (charset_map, capset_map, sdfeatures): Fully bracket
	initializer.
	* sgml1.c (sgmltab): Likewise.
	* sgmlxtrn.c (dctab, deftab, dvtab, enttab, exttab, extettab,
	funtab, mstab, pubcltab): Likewise.

Thu Nov 26 11:44:40 1992  James Clark  (jjc at jclark)

	* md2.c (mdentity): Check for duplicate definition and earlier
	usage of default entity after parsing complete definition.

Fri Nov 20 05:19:07 1992  James Clark  (jjc at jclark)

	* sgmlsasp.c: Delete definitions of RECHAR and RSCHAR.  Use
	definitions from config.h.

	* rast.c (output_char): Use definitions of RECHAR, RSCHAR and
	TABCHAR from config.h.

	* lexrf.c (lex): Use GENRECHAR rather than '\b' for genre field.

	* sgmldecl.h (CANON_NONSGML, CANON_DATACHAR): Move definitions
	into ascii.h and ebcdic.h.
	* genlex.c (main): Characters that aren't special in some way need
	to be treated as NONSGML or DATACHAR depending on whether they are
	the number of a shunned character.

Thu Nov 19 06:32:37 1992  James Clark  (jjc at jclark)

	* ecbdic.h: Use a better formal public identifier.

	* cms.cfg (DEFAULT_PATH, PATH_FILE_SEP, SYSID_FILE_SEP,
	MIN_DAT_SUBS_FROM, MIN_DAT_SUBS_TO): Fix definitions.

	* ebcdic.c: Include ebcdic.h and use character definitions that it
	provides.

Tue Nov 17 05:46:34 1992  James Clark  (jjc at jclark)

	* cms.cfg: New file.
	* ebcdic.h: New file.
	* Makefile.cms: New file.
	* genlex.c: New file.
	* ebcdic.c: New file.
	* Makefile (lextabe.c, genlex): New targets.
	* Makefile: Add new files to distribution.

	* lexrf.c: Separate out character set dependent parts into...
	* lextaba.c: New file.
	* lexcode.h: New file. Move definitions needed by lextaba.c and
	lexrf.c here.
	* sgmldecl.c (asciicharset): Move definition into lextaba.c.
	Move definitions of UNKNOWN etc constants into sgmldecl.h.
	* sgmldecl.h: Declare asciicharset.

	* entity.h: Separate character set dependent parts into...
	* latin1.h: New file.
	* *.cfg: Include latin1.h.

	* lexrf.c (lex): Rewrite short reference delimiter strings that use
	RS, RE or TAB so as to use RSCHAR, RECHAR and TABCHAR definitions.

	* lexrf.c (lextran): Don't use character constants.

	* lexrf.c (lextran): Fix entry for character number 172.

Mon Nov 16 12:39:41 1992  James Clark  (jjc at jclark)

	* arc*.c: Rename to *.c.
	* mod*.c: Rename to *.c.
	* Makefile, Makefile.vms, Makefile.bcc: Corresponding changes.

	* msg.h: Make message 58 a warning.  Rewrite message.

Sun Nov 15 11:41:04 1992  James Clark  (jjc at jclark)

	* main.c (munge_program_name): Use isupper() and tolower().

	* main.c (main): Don't allow -a option.

Sat Nov 14 10:34:47 1992  James Clark  (jjc at jclark)

	* lineout.c (attribute_type_string): Don't distinguish ID and
	IDREF attributes from tokenized attributes.
	* sgmls.h (sgmls_attribute_type): Delete SGMLS_ATTR_ID and
	SGMLS_ATTR_IDREF.
	* sgmls.c (parse_attribute, sgmls_free_attribute): Don't handle ID
	and IDREF attribute types.
	* sgmlsasp.c (output_attribute): Don't handle SGMLS_ATTR_ID and
	SGMLS_ATTR_IDREF.
	* rast.c (output_attribute): Likewise.

	* main.c (store_sgmldecl): Handle possibility that SIGTERM is not
	defined.

Thu Nov  5 11:01:35 1992  James Clark  (jjc at jclark)

	* msg.h: In message 3, change `NAMELEN' to  `NAMELEN or LITLEN'.

	* modmd1.c (mdattdef): Handle CDR action when parsing default
	value.

Thu Oct 29 17:19:13 1992  James Clark  (jjc at jclark)

	* lineout.c (output_conforming): Only generate output if !suppsw.

Wed Oct 28 10:29:28 1992  James Clark  (jjc at jclark)

	* rast.c (main): Add -o option to specify output file.  Avoid use of
	temporary file when -o specified.
	(usage): New function.

Sun Oct 25 10:30:18 1992  James Clark  (jjc at jclark)

	* modmd1.c (adlfree): New function.
	(mdadl, mdnadl, mdattdef): Fix some leaks.
	* sgmlfnsm.h: Declare adlfree.

	* main.c (OPTIONS): Correct definitions that apply when
	CANT_REDIRECT_STDERR is defined.

	* Makefile (dist): Fix up the compilation options in
	the Makefile.

Sat Oct 24 14:02:35 1992  James Clark  (jjc at jclark)

	* entity.h: Define STDINNAME.
	* main.c (main): Don't require an argument.
	(make_docent): Treat no arguments as equivalent to `-'.
	* entgen.c (entgen): Don't search for `-'.
	* modsgml2.c (filepend): Pass buffer as argument to
	iopend().
	* sgmlaux.h (iopend): Fix declaration.
	* sgmlio.c (openfile, closefile, isreg): New functions.
	(ioopen): Use openfile. Initialize pendbuf.
	(ioclose): Use closefile.
	(iopend, iocont): Handle unseekable files.
	(ioread): Return the contents of pendbuf if pendbuf is
	non-NULL.  Handle the case where fgetpos fails.
	Use openfile and closefile.
	* unix.cfg, dos.cfg: Add HAVE_SYS_STAT_H configuration option.
	* configure: Handle HAVE_SYS_STAT_H.

Fri Oct 23 11:38:06 1992  James Clark  (jjc at jclark)

	* Makefile.bcc: Handle rast.

	* Makefile (install): Rewrite.

	* sgmls/sgmls.c (unescape1, parse_data): Cast value of escape
	sequence.

	* lineout.h (CONFORMING_CODE): New output command.
	* lineout.c (output_conforming): New function.
	* appl.h: Declare it.
	* main.c (main): Call output_conforming() if appropriate.
	* sgmls.h: New event SGMLS_EVENT_CONFORMING.
	* sgmls.c (sgmls_next): Handle CONFORMING_CODE.
	* sgmlsasp.c (do_file): Handle SGMLS_EVENT_CONFORMING.

	* CHANGES: Rename to
	* NEWS.
	* Makefile: Change definition of MISC accordingly.

	* rast.c: New file.
	* rast.man: New file.
	* Makefile: Handle rast.
	(install.man): Rewrite.

	* main.c (print_caps): Deleted.
	(make_argv): Use -c rather than -z.  Always pass -c to
	subprocesses.
	(main): Delete -c option. Rename -z to -c.
	(OPTIONS, usage): Change accordingly.
	(capsw): Deleted.

Wed Oct 21 20:13:02 1992  James Clark  (jjc at jclark)

	* modpars2.c (attval): Decrement already tokenized value before
	comparing it to a FIXED value.

Tue Oct 20 16:45:34 1992  James Clark  (jjc at jclark)

	* modsgml2.c (filepend): Don't suspend the file if it's already
	suspended.

Sun Oct 18 15:24:13 1992  James Clark  (jjc at jclark)

	* sgmls.pl: Handle f, p, s commands.  Fix handling of S, E, and N
	commands.
	(esc, esc_data): Don't handle \s. Ignore \012.

Sat Oct 17 12:48:56 1992  James Clark  (jjc at jclark)

	* sgmls.c (parse_data): Translate \n into '\015'.
	(unescape_file): New function.
	(sgmls_next, parse_location): Use unescape_file.
	* sgmlsasp.c (output_data_char): New function.
	(output_data, output_pi): Use output_data_char.

	* sgmls.c (parse_data): Don't support \s.
	(unescape1): Likewise.

	* lineout.c (print_string): Don't strip RSs.

	* sgmls.c (add_attribute): New function.
	(sgmls_next): Use add_attribute.

	* lineout.c (process_subdoc): Handle the possibility that `id' is
	0.
	* appl.h (E_SUBDOC): Declare it.
	* main.c (errlist): Add error message for E_SUBDOC.
	* modsgml2.c (entopen): Handle the possibility that etx.x is 0 for
	external entities.
	* modmd1.c (mddtds): If entgen fails, behave as if there was no
	external DTD.
	* modmd2.c (mdentity): Don't give up if entgen fails.
	* msg.h: New message 149, 229.  Make errors 147 and 148 warnings.

	* entgen.c (field): Fix typo in handling of field 'D' for subdocs.

Fri Oct 16 09:55:40 1992  James Clark  (jjc at jclark)

	* sgmls.h (struct sgmls_event): Delete `subdoc' from union.
	(struct sgmls_external_entity): Add pubid and sysid members.
	* sgmls.c (parse_filenames): Deleted.
	(parse_external_entity, parse_subdoc_entity): Don't call
	parse_filenames.
	(parse_notation): Don't parse pubid and sysid.
	(define_external_entity): Fill in pubid, sysid and filenames
	fields from stored values in sp.
	(define_notation): Fill in pubid and sysid fields from stored
	values in sp.
	(sgmls_next): Handle SYSID_CODE, PUBID_CODE and FILE_CODE.
	For {START,END}_SUBDOC_CODE look up the subdoc entity.
	(sgmls_free): Free the pubid, sysid and files members of sp.
	Free the pubid and sysid fields of external entities.
	(struct sgmls): Add files, nfiles, sysid and pubid members.
	(sgmls_create): Initialize them.

Thu Oct 15 10:53:33 1992  James Clark  (jjc at jclark)

	* adl.h (struct ne): Add nepubid and nesysid members.
	(NEPUBID, NESYSID): New macros.
	(NEDCNPUBID, NEDCNSYSID, NEDCNDEFINED): New macros.
	* msg.h: Deleted message 149.
	* entity.h (struct dcncb): Delete dcnid member.  Add sysid and
	pubid members.
	* modmd2.c (mdentity): Fill in nepubid and nesysid.
	(mdnot): Don't call entgen. Fill in sysid, pubid and defined
	members of dcb.
	* entgen.c (nentgen): Deleted.
	(entgen): Don't call nentgen.
	(field): When checking for Y substitution storage class must be <=
	* lineout.h (PUBID_CODE, SYSID_CODE, FILE_CODE): New codes.
	* lineout.c (process_document): Output a definition for a
	subdocument entity before processing it.
	(print_id): Rewrite.
	(output_external_entity, output_subdoc): Add two additional
	arguments.  Change printing of external identifiers.
	(output_notation): Delete `id' argument. Add two additional
	arguments.  Change printing of external identifiers.
	(define_external_entity, handle_single_token): Change callers.
	(print_filename): Don't use \s.
	* modpars2.c (aenttst): Use NEDCNDEFINED rather than NEDCNID.
	* modsgml2.c (entopen): Likewise.
	* modpars1.c (checkdtd): Use `defined' member of dcncb in place of
	`dcnid'.
	* traceset.c (tracedcn): Don't use `dcnid' member.

	* modsgml1.c (sgmlend): Merge loops. Divide maxsubcap values by
	cappoints values.
	* main.c (write_caps): Use RACT format.
	(get_subcaps): Read new format.

Wed Oct 14 09:54:19 1992  James Clark  (jjc at jclark)

	* modmd2.c (mdentity): Free pne after errors 147 or 148.

	* modmd2.c (mdnot): Free ntx on error.

Mon Sep 28 13:05:35 1992  James Clark  (jjc at jclark)

	* Version 1.0 released.

Fri Sep 25 11:17:34 1992  James Clark  (jjc at jclark)

	* Makefile.vms: New file.

	* modpars1.c (parsepro): Set rc for STE_ case.

	* modmd2.c (mdentity): For the default entity copy the system and
	public identifiers.

	* modmd2.c (mdentity): Free pne if estore != ESN.

Thu Sep 24 13:39:01 1992  James Clark  (jjc at jclark)

	* source.h (struct entity): Add dflt member.
	* modsgml2.c (usedef): Set ecb->dflt.
	* modmd2.c (mdentity): Check whether earlier existing definition
	of entity was defaulted. If so, give a warning and remove this
	definition.
	* msg.h: New message 228.

Wed Sep 23 12:14:44 1992  James Clark  (jjc at jclark)

	* modpars2.c (attval): Don't pass attribute value as argument to
	error 67.
	* msg.h: Don't use attribute value in error message.

Fri Sep 11 15:32:30 1992  James Clark  (jjc at jclark)

	* sgmlio.c (ioread): Set f->fp to 0 after closing it if there is
	no next file.
	(iopend): Don't call fclose if f->fp is 0.

Mon Aug 31 11:06:57 1992  James Clark  (jjc at jclark)

	* Makefile (config.h): Don't use `export'.

Fri Aug 21 15:12:48 1992  James Clark  (jjc at jclark)

	* modsgml2.c (entopen): For ESX and ESC return ENTDATA even if
	entity is empty.
	* lineout.c (print_data): If n == 0, don't ignore it if it's sdata.

Tue Aug 18 11:30:38 1992  James Clark  (jjc at jclark)

	* modsgml2.c (entref): Use error 35 if it's a parameter entity.

Mon Aug 17 12:53:48 1992  James Clark  (jjc at jclark)

	* source.h (union etext): Delete etd member.

	* Makefile: Include sgml-mode.el.

Thu Aug 13 15:04:47 1992  James Clark  (jjc at jclark)

	* sgmldecl.c (sdcsdesc): Give a warning for an unknown designating
	escape sequence.
	(sgmlwrsd): Use the system character set as the document character
	set.
	(DUMMY_CHARSET): Deleted.
	* msg.h: New message 227.

	* test: Put out and err files in separate directories.

	* main.c (main): Ignore -a.
	(usage): Don't mention -a.
	(swinit): Set swambig to 1.
	(build_subargv): Don't pass -a.

Wed Aug 12 22:02:24 1992  James Clark  (jjc at jclark)

	* action.h (STE_): New action.
	* arcpcbrf.c (es7a): Change action for nms and tagc from PEP_ to STE_.
	* modpars1.c (parsepro): Handle STE_.
	* modsgml1.c (sgmlnext): Start the document element for DCE_ or MSS_.

Thu Aug  6 16:42:37 1992  James Clark  (jjc at jclark)

	* modpars2.c (parseval): If a number token is terminated by a name
	character, give error 17.

Wed Jul 29 01:49:20 1992  James Clark  (jjc at jclark)

	* modpars1.c (startdtd): Allocate an extra character for nmbuf.
	* modmd2.c (mdentity): Check that length of parameter entity name
	does not exceed NAMELEN - 1.  Pass NAMELEN to parsemd when
	parsing parameter entity name.

	* msg.h: New message 225.
	* modserv.c (sandwich): Move to...
	* modmd2.c (sandwich): Return 0 if the result is too long.
	* modmd2.c (mdentity): Give an error if the result was too long
	after adding bracketing delimiters.

	* msg.h: New message 224.
	* modmd1.c (mdattdef): It is an error if the value returned by
	vallen exceeds LITLEN.
	* modpars2.c (attval): Likewise.

	* sgmls.c (unescape1): If s does not contain a backslash, return
	the length of s.

Tue Jul 28 18:35:54 1992  James Clark  (jjc at jclark)

	* action.h (PENR): New action.
	* modpars2.c (parsemd): Handle PENR.
	* arcpcbrf.c (pr21a): Change actions for ee, com, pero from PCI_
	to PENR.
	(sp21, tk21): After ee, state is TK1.

	* modpars2.c (parsegrp, parsengrp): Detect duplicates.

	* modpars1.c (parsepro): Handle EE_.

Thu Jul 23 12:50:34 1992  James Clark  (jjc at jclark)

	* modmd1.c (mdattdef): If anmtgrp returns an error and adlim <
	GRPCNT, report that ATTCNT not GRPCNT was exceeded.

Mon Jun 29 00:46:09 1992  James Clark  (jjc at jclark)

	* sgmldecl.c (systemcharset): New charset.
	(charset_map): By default assume the system character set is ISO
	Latin-1.
	(nlextoke, nlextran): New variables.
	(setnonsgml): Rename to...
	(setlexical): Handle characters made significant by NAMING
	section.  Use nlextoke and nlextran to munge lexical tables.
	(sgmldecl): Call setlexical.
	(sdpubsyntax): Delete call to setnonsgml().
	(sdshunchar): Delete calls to setnonsgml().
	(sdnaming): Redo parsing of naming classes.
	(sgmlwrsd): Generate NAMING section from lextoke and lextran.
	Use system character set as syntax reference character set.

	* msg.h: Remove trailing period from message 218.

Sun Jun 28 15:59:25 1992  James Clark  (jjc at jclark)

	* modpars2.c (tokdata): Insert missing parentheses around
	`parmlen -= 2'.

Sat Jun 20 10:09:39 1992  James Clark  (jjc at jclark)

	* Makefile (depend): Use sed { command.

	* Makefile: Pass PREFIX to configure.
	* configure: Edit DEFAULT_PATH using PREFIX.

Mon Jun 15 19:41:55 1992  James Clark  (jjc at jclark)

	* configure: More elaborate test for HAVE_EXTENDED_PRINTF.

Fri Jun 12 13:20:49 1992  James Clark  (jjc at jclark)

	* context.c (testend): Set andoptsw to 1 after ending a group.

Wed Jun 10 16:49:50 1992  James Clark  (jjc at jclark)

	* arcpcbrf.c (pcbconm): New state NS0.
	(et0, da0, da1): After NSC state changes to NS0.
	(pcbmsrc): New state NS0.
	(et30, da30): After NSC state changes to NS0.
	(pcbmsc): New state NS2.
	(et32, da32): After NSC state changes to NS2.
	(pcbmsi): New state NS4.
	(et34, me34, me35, es34, md34): After NSC state changes to NS4.

	* lineout.c (print_string): Don't recognize character preceded by
	DELNONCH as DELCDATA or DELSDATA.

Tue Jun  9 21:17:15 1992  James Clark  (jjc at jclark)

	* modpars1.c (parsepro): Call setdtype() when EOD_ encountered.
	Don't call setdtype() or checkdtd() if we gave an error message
	for the EOD_.

Sun Jun  7 09:57:32 1992  James Clark  (jjc at jclark)

	* configure: When determining void_ret, use a typedef in order to
	catch compilers that can't handle this typedef.

	* replace.c (hash): Cast enumeration type to int.
	* sgmls.c (error): Likewise.
	* sgmldecl.h: Use #define rather than enum to define *CAP and Q*
	constants.
	* sgmlmsg.c: Likewise for HDR*.

Fri May 22 13:31:58 1992  James Clark  (jjc at jclark)

	* sgmldecl.c (bufsalloc, bufsrealloc): Allocate entbuf here.
	* modpars1.c (commbufs): Don't allocate entbuf here.

Wed May 20 11:55:42 1992  James Clark  (jjc at jclark)

	* Makefile (config.h): Depends on configure and unix.cfg.

	* configure: Pipe yes into man.

	* arclexrf.c: Don't include stdio.h.  Use 0 instead of NULL.

	* unixproc.c: Include standard header files before std.h.

	* std.h: Reorder definitions so that all standard headers are
	included before conditional definitions of SEEK_SET etc.

Mon May 18 15:38:35 1992  James Clark  (jjc at jclark)

	* modpars2.c (charrefn): Return DAF_ instead of DAS_.

Mon May 18 08:37:23 1992  James Clark  (jjc at jclark)

	* configure: Catch signals when testing for extended printf.

Sun May 17 09:49:14 1992  James Clark  (jjc at jclark)

	* modmd1.c (mdadl, mdelem): Don't dereference nmgrp[0] if it is NULL.

	* replace.c (parse_error): Declare as NO_RETURN.

	* context.c (copypos): Cast unsigned char to int in comparison.
	* modmd1.c (mdelem): Likewise.
	* modmd2.c (storedatt): Likewise.
	* modpars2.c (parsenm): Likewise.
	(s2valnm): Likewise.
	* sgmlxtrn.[ch]: Make Tstart an int.
	* context.c: Don't cast Tstart to int.
	* modpars2.c (shiftnon): Cast unsigned char to unsigned in modulus
	expression.
	* context.c (HITSET, HITOFF): Cast `n' to unsigned in shift
	expression.

	* arclexrf.c: Avoid use within comments of character sequences
	that will be interpreted as trigraphs.

	* std.h: Don't include getopt.h.
	* configure: Don't handle HAVE_GETOPT_H.
	* *.cfg: Delete HAVE_GETOPT_H.
	* getopt.c, main.c, sgmlsasp.c: Include getopt.h.
	* getopt.h: Don't use prototypes.

	* msgcat.h: Don't use prototypes.

Sat May 16 12:15:43 1992  James Clark  (jjc at jclark)

	* entgen.c (nentgen): Treat empty system/public identifiers as
	missing.

Fri May 15 23:51:10 1992  James Clark  (jjc at jclark)

	* std.h: Declare errno in case <errno.h> doesn't.

Tue May 12 18:58:54 1992  James Clark  (jjc at jclark)

	* *.cfg (HAVE_GETOPT_H): New define.
	* configure: Handle HAVE_GETOPT_H.
	* std.h: Include getopt.h.
	* getopt.c, main.c, sgmlsasp.c: Don't include getopt.h.

	* configure: Fixes for Ultrix.

	* entgen.c (entgen): Cast f->fpisysis to char * in argument to
	strchr.

	* sgmlsasp.c (error): Define as NO_RETURN.

Mon May 11 08:54:06 1992  James Clark  (jjc at jclark)

	* Version 0.8 released.

	* Makefile.bcc (OBJS1): Add exclude.obj.

Sat May  9 10:26:16 1992  James Clark  (jjc at jclark)

	* dos.cfg: Add CANT_REDIRECT_STDERR.
	* main.c: Add -f option if CANT_REDIRECT_STDERR is defined.

	* adl.h (NEDCNADL): Change dcnadl to adl.

	* entity.h (struct dcncb): Add entsw member.
	* modmd1.c (mdnadl): Check that an entity with this notation has
	not already been declared.
	* modmd2.c (mdextid): Set the entsw field of the notation.
	* msg.h: New message 218.

	* msg.h: Improve message 192.

	* msg.h: Improve message 78.

	* modpars1.c (checkdtd): Check for undefined notations even if
	sw.undef not specified.
	* msg.h: Change type of 192 to 'W'.

	* modmd2.c (mdextid): Separate copying of attribute list into
	storedatt.  Call this also if there was no data attribute
	specification list but this notation does have an attribute list.
	(storedatt): New function.  Don't increase ds.attgcnt.
	* modpars2.c (parseatt): Separate initialization of ad into
	initatt.  No need to copy al: this is done in storedatt.
	(initatt): New function.
	* sgmlfnsm.h: Declare storedatt and initatt.

Fri May  8 13:00:56 1992  James Clark  (jjc at jclark)

	* sgmldecl.c: Use ISO 8879:1986 instead of ISO 8879-1986.
	Also recognize the latter but give an error message.
	(sdfixcolon): Rename to sdfixstandard.
	* msg.h: Change message 163 accordingly.

	* modpars2.c (adlval): Don't dereference newetd if it's NULL.

	* entgen.c (entgen): Initialize sysidsrch.  Don't always call
	sysidgen() if there's a system identifier.
	(field): Use %E for escape sequence. %S gives system identifier.

Wed May  6 21:40:25 1992  James Clark  (jjc at jclark)

	* sgmldecl.c (sdtranschar): Cast arguments to ltous to long.

	* msgcat.c: Conditionalize use of prototypes on USE_PROTOTYPES not
	__STDC__.

Tue May  5 00:24:39 1992  James Clark  (jjc at jclark)

	* lineout.c (process_subdoc): Only call get_subcaps() if
	subprocess exited successfully.

	* msg.h: New message 217.
	* exclude.c (excktok): Use message 217 instead of 41. Second
	parameter is current gi not gi that does excluding.

	* modpars1.c (iopend): Save offset into line.  Don't seek to
	middle of line.
	(iocont): Seek to beginning of line, then skip to middle of line
	using saved offset.
	(struct iofcb): Delete penderr and sverrno.  New pendoff member.

	* modpars1.c (parsecon): An RE that would be ignored can force a
	start tag.

Mon May  4 23:26:21 1992  James Clark  (jjc at jclark)

	* unix.cfg (FPOS_MISSING): New define.
	* configure: Handle FPOS_MISSING.
	* std.h: Provide fpos_t, fgetpos, fsetpos if FPOS_MISSING.
	* sgmlio.c (iopend, iocont, ioread): Use fsetpos/fgetpos rather
	than fseek/ftell. Use penderr to indicate that iopend() failed.
	(struct iofcb): Make off an fpos_t. Add penderr member.

Sun May  3 09:41:05 1992  James Clark  (jjc at jclark)

	* sgmlmsg.c (printit): Don't rely on return value of fprintf.

Wed Apr 29 00:03:42 1992  James Clark  (jjc at jclark)

	* modpars1.c (destack): Undo Apr 26 change.
	* exclude.c: New file.
	* msg.h: New message 216.
	* Makefile: Add exclude.c.
	* modpars1.c (stack): Call exclude().
	* sgmlfnsm.h: Declare exclude().
	* modpars1.c (stag): Don't give errors here for invalid exclusions.

	* ambig.c (listambig): Clear marks afterwards.

	* synxtrn.h: Don't use an enum for the key indices.

Tue Apr 28 09:22:43 1992  James Clark  (jjc at jclark)

	* vms.cfg: New file.
	* Makefile (MISC): Include vms.cfg.

	* portproc.c (run_process): Free the right thing.

	* Makefile (OBJS2): Add getopt.o.

	* modsgml1.c (sgmltab): Undo change of April 13. When pending RE
	is followed by another RE that is ignored, output the first RE
	immediately.

Sun Apr 26 11:36:49 1992  James Clark  (jjc at jclark)

	* modpars1.c (destack): When element ends without required element,
	check whether required element has been excluded.

Tue Apr 21 12:39:42 1992  James Clark  (jjc at jclark)

	* entity.h (struct switches): Add swundef member.
	* main.c (swinit): Initialize swundef.
	(OPTIONS): Add u.
	(main): Support -u.
	(usage): Mention -u.
	* modpars1.c (checkdtd): New function.
	(parsepro): Call checkdtd.
	* msg.h: New messages 142 and 190.

Mon Apr 20 15:09:40 1992  James Clark  (jjc at jclark)

	* modmd1.c (mdadl): Only call etdadl if the element has already
	been defined.
	(etdadl): No need to check that p->etdmod is non-NULL.

Thu Apr 16 12:56:15 1992  James Clark  (jjc at jclark)

	* main.c (main): Implement -i.
	(swinit): Initialize includes.
	* entity.h (struct switches): New includes member.
	* modpars1.c (pentname, doincludes): New functions.
	(startdtd): Call doincludes.
	(endprolog): Call doincludes if there was no DTD.
	* msg.h: New message 138.

Wed Apr 15 15:58:53 1992  James Clark  (jjc at jclark)

	* traceset.c (tracemap): Deleted.
	* trace.h (TRACEMAP): Deleted.
	* modserv.c (mapsrch): Don't use TRACEMAP.
	* modsgml2.c (ptrsrch): Likewise.

	* trace.h, traceset.c *.cfg: Include tracing is TRACE is defined,
	rather than if FINAL is not defined.
	* entity.h: Include trace and ptrace in struct switched only if
	TRACE is defined.
	* main.c (main, swinit, build_subargv): Support -x and -y only if
	TRACE is defined.
	(xrealloc): New function.
	* appl.h: Declare xrealloc.

	* traceset.c (tracemod): Calculate size of pg correctly.

Tue Apr 14 13:47:21 1992  James Clark  (jjc at jclark)

	* action.h: Get rid ETGP_. Renumber accordingly.
	* modsgml1.c (sgmltab): Get rid of column for ETGP_.

	* modpars2.c (parseseq): Rewrite.

	* modpars2.c (s2valnm): Cosmetic changes.

	* modpars2.c (parsetkn): Rewrite.  Don't store length ahead of
	name.
	(parseatt): Don't call dellen.
	(mdattdef): Likewise.
	(charrefn): Number doesn't have length byte.
	* modmd1.c (mdelem): ranksuff doesn't have length byte.
	* modserv.c (dellen): Deleted.
	* sgmlfnsm.h (dellen): Delete declaration.
	* sgmldecl.c: Numbers no longer have length bytes.

	* modpars2.c (parse): Use NAMELEN rather than 8 when parsing
	number in numeric character reference.

Mon Apr 13 23:21:45 1992  James Clark  (jjc at jclark)

	* modsgml1.c (sgmltab): Add two new states to handle the case
	where the pending RE has been followed by an RE that was ignored.

Wed Apr  8 10:59:48 1992  James Clark  (jjc at jclark)

	* modsgml1.c (sgmltab): In state NR1, hold on to REF_ as in state
	DA1.

	* Makefile (install, install.man): New targets.

	* modsgml1.c (sgmlact): When popping the pcbsgml stack, change the
	state of the new top of stack pcb as if there had been a
	processing instruction or markup declaration.

Tue Apr  7 13:55:17 1992  James Clark  (jjc at jclark)

	* configure: New file.
	* Makefile: Add configure to distribution.
	(config.h): Build using configure.
	* unix.cfg: Some minor cleanup to work better with configure.
	Move things that can't be auto-configured to top.

Sun Apr  5 20:53:42 1992  James Clark  (jjc at jclark)

	* main.c (main): Call MAIN_HOOK if it's defined.

	* Makefile: Add thinkc.cfg to MISC.

	* getopt.c: Include getopt.h.

	* sgmlio.c (nextstr): Make declaration a prototype.

Wed Apr  1 09:30:33 1992  James Clark  (jjc at jclark)

	* main.c (usage): Mention -p.

Sun Mar 29 15:47:44 1992  James Clark  (jjc at jclark)

	* sgmldecl.c (sgmldecl): Use separate buffer to parse closing >.
	Return non-zero if there was some appinfo.
	(sdappinfo): Don't save appinfo.  Delete appinfo array.
	(sgmlappinfo): Deleted.
	(sgmlwrsd): Always write out APPINFO NONE.
	* sgmlmain.g (sgmlappinfo): Delete declaration.
	* sgmlfnsm.h (sgmldecl): Change return type to int.
	* action.h (APP_): New action.
	* modpars1.c (parsepro): Return APP_ after parsing SGML
	declaration if there was some appinfo.
	* sgmlmain.h (SGMLAPP): New event.
	(ADATA, ADATALEN): New macros.
	* modsgml1.c (sgmlnext): Return SGMLAPP for APP_.
	* lineout.h: Define APPINFO_CODE.
	* lineout.c (process_document): Handle SGMLAPP.
	(output_appinfo): New function.
	* sgmls.c (sgmls_next): Handle APPINFO_CODE.
	* sgmls.h (sgmls_event_type): Add SGMLS_EVENT_APPINFO.
	(sgmls_event): Add appinfo field to union.
	* sgmlsasp.c (do_file): Ignore SGMLS_APPINFO.

Fri Mar 27 11:18:06 1992  James Clark  (jjc at jclark)

	* Version 0.7 released.

	* modsgml2.c (scbset): Check that es >= 0.

	* sgmldecl.c (sgmlappinfo): New function.
	* sgmlmain.h: Declare it.

	* lineout.c (output_internal_entity): Distinguish CDATA and SDATA
	entities with a keyword rather than with \|.
	* sgmls.c (parse_internal_entity): Grok this.
	Rename E_ENTITYTYPE to E_BADEXTERNAL.
	Change error message for E_BADINTERNAL.
	(unescape): Split off part into
	(unescape1): New function.
	* sgmls.pl: Grok new I format.

	* sgmlio.c (nifopen): New function.
	(FOPENR): Define as nifopen if HAVE_O_NOINHERIT is defined.
	* dos.cfg: Define HAVE_NO_INHERIT.

	* stklen.c: New file.
	* Makefile.bcc: Compile stklen.c.
	* Makefile: Include stklen.c in distribution.

	* main.c (main): New -p option.

	* modpars1.c (parsepro): Give an error for R/CDATA marked section
	in the DTD subset.
	* msg.h: Use message 135 for this.

	* modpars1.c (common): Rename to commbufs. Change callers.
	* sgmlfnsm.h: Change declaration.

	* sgmlsasp.c (main): New -n option.
	(fold_general_names): New variable.
	* sgmlsasp.h (fold_general_names): Declare it.
	* replace.c (scan_name): Fold name to upper case only if
	fold_general_names is non-zero.

Thu Mar 26 12:39:24 1992  James Clark  (jjc at jclark)

	* modpars1.c (setdtype): Don't give message about the document
	type element's not being declared if we already gave an error
	message about there not being a doctype declaration.
	(parsepro): In onlypro mode, call setdtype.

Wed Mar 25 11:13:18 1992  James Clark  (jjc at jclark)

	* sgmldecl.c (sdquantity): Eliminate unnecessary inner
	redeclaration of i.

	* sgmldecl.c (sdnaming): Eliminate unnecessary assignment to i.

	* sgmls.c (parse_data): Eliminate unnecessary assignment to start.

	* main.c (make_argv): Eliminate unnecessary increment of i.

	* entgen.c (entgen): Eliminate unnecessary assignment to buf.

	* modpars2.c (antvget): Make advn local to block in which it is
	used. Eliminate unnecessary assignment.

	* modpars2.c (alperm): Eliminate unnecessary assignment to alperm.

	* modpars1.c (parsecon): Eliminate unnecessary assignment to pcb.

	* context.c (newtoken): Make Psave and rc local to block in which
	it is used. Eliminate unnecessary assignments.

	* Cast some arguments of xrealloc, memcpy, MEMZERO to UNIV.

	* tools.c (VP): New macro.
	* sgmlsasp.h (VP): New macro.
	* appl.h (appl_error):
	* main.c (fatal):
	* replace.c (parse_error):
	* sgmlmsg.c (xfprintf): Use VP for prototypes of varargs functions.

Mon Mar 23 13:57:55 1992  James Clark  (jjc at jclark)

	* sgmlxtrn.c (savedpos): New variable.
	* sgmlxtrn.h: Declare it.
	* modpars1.c (endprolog): Separate allocation of struct mpos's
	into...
	(newmpos): New function.
	(endprolog): Allocate savedpos.
	* context.c (context): If there's an applicable inclusion, save
	the current position in savedpos.  Don't return RCPEX unless the
	element is valid in this model only as an inclusion; in this case,
	restore the saved position.

Sun Mar 22 10:34:54 1992  James Clark  (jjc at jclark)

	* entity.h (struct switches): Add onlypro member.
	* main.c (swinit): Initialize onlypro.
	* modpars1.c (parsepro): If onlypro switch is set, don't give an
	error for EOD after DTD subset is finished, and also return EOD at
	end of prolog.

Sat Mar 21 19:27:59 1992  James Clark  (jjc at jclark)

	* etype.h (TXOPT, TXREP, TXOREP): New ttype flags to support dump.c.
	* modpars2.c (parsemod, parsegcm): Set TX* flags when occurrence
	indicator is specified explicitly.

	* modmd2.c (mdentity): Build the entity text for ESS and ESE
	types. Handle ESS and ESE like other internal entity types.
	(tagtext, entfix): Deleted.
	* sgmlxtrn.c (tagtext, entfix): Delete declarations.
	* modpars1.c (shortref): Don't handle ENTEGI, ENTSGI. Delete
	stagrc variable.
	* modpars2.c (parse): Likewise. Delete stagrc variable.
	* modsgml2.c (entopen): Handle ESS and ESE normally.
	* traceset.c (traceecb): Likewise.
	* source.h (ENTEGI, ENTSGI): Deleted.
	(ENTDATA, ENTPI): Renumber.

Mon Feb 24 16:12:59 1992  James Clark  (jjc at jclark)

	* context.c (testend): Insert brackets around && within || to keep
	gcc 2 quiet.

	* traceset.c: Add some casts to keep gcc 2's -Wformat happy.

Fri Feb 21 12:21:05 1992  James Clark  (jjc at jclark)

	* lineout.c (process_subdoc): Forget the current filename after
	processing subdoc.

	* main.c (build_subargv): Pass on -l.

Thu Feb 20 11:48:06 1992  James Clark  (jjc at jclark)

	* action.h (MSP_): New action.
	* arcpcbrf.c (md7a): Change action for MSO from LAF_ to MSP_.
	* modpars1.c (parsepro): Handle MSP_.  For MSS_ return DCE_.
	* modsgml1.c (sgmlnext): Change handling of MSS_ in the prolog.

	* modserv.c (hout): Use a struct hash **.  Had bug when removing
	first element in chain.

Tue Feb 18 11:11:35 1992  James Clark  (jjc at jclark)

	* sgmlxtrn.c: Don't declare array sizes unnecessarily. Insert
	newlines in license.

	* msg.h: Give errors about unsupported features a `U' type code.
	* sgmlsmsg.c: Use a different header for `U' type messages.

Fri Feb 14 11:41:51 1992  James Clark  (jjc at jclark)

	* sgmls.c (parse_data): Don't use strchr.

	* replace.c (hash): Change hashing function. Do modulus in hash().
	Make return type int.  Change callers.

	* sgmls.h, sgmls.c, sgmlsasp.c: Redo error handling so as not to use
	setjmp.
	* std.h: Don't include <setjmp.h>.

	* source.h (ENTHASH):
	* etype.h (ETDHASH):
	* adl.h (IDHASH): Bump up values.

	* modserv.c (hash): Use better hashing function.

	* modserv.c (idget): Deleted.
	* sgmlfnsm.h: Delete declaration.

	* momd11.c (mdelem, mdadl):
	* modmd2.c (mdsrmuse): Don't allocate nmgrp
	* modmd1.c (mdnadl, mdelem): Don't allocate nnmgrp.
	* modpars2.c (parsemod): Don't allocate gbuf.
	* modmd2.c (mdelem): Don't allocate nmbuf
	* modmd2.c (mdextid): Don't allocate sysibuf, pubibuf.
	* sgmldecl.c (bufsalloc, bufsrealloc): Handle only scbs and tbuf.
	* modpars1.c (parsepro): Call startdtd() before mddtds.
	(startdtd): New function. Allocate nmgrp, nnmgrp, gbuf, nmbuf,
	pubibuf, sysibuf.
	(common): New function.  Allocate al, lbuf, entbuf.
	(endprolog): Free buffers allocated in startdtd().  Call common()
	if it hasn't already been called.

Thu Feb 13 10:42:26 1992  James Clark  (jjc at jclark)

	* modsgml2.c (entref): Handle the case where the entity has been
	used in a shortref mapping declaration, but has not been defined.

	* Redo tracing code.

	* traceset.c (traceecb): Return if p is NULL.
	* modsgml2.c (entfind): Call traceecb even if p is NULL.

	* sgmlincl.h: Always include trace.h.

	* traceset.c (estype1, estype2): Make them local static variables
	in traceecb.
	* trace.h (estype1, estype2): Declarations deleted.

	* sgmlxtrn.[ch] (pifldlen): Deleted.
	* modmd2.c (pubfield): Additional argument that gets length of
	field.
	(parsefpi): Change callers.  Don't use pifldlen.

	* modpars2.c (antvget): Pass pointer which receives value.
	(parseatt): Pass pointer to antvget() to receive value.
	* sgmlxtrn.[ch]: Delete antvptr.

	* sgmlxtrn.[ch] (pvalptr): Deleted.
	* modpars2.c (parseval): Don't set pvalptr.
	(attval):
	* modmd1.c (mdattdef):
	* modmd2.c (tagtext): Use last argument passed to parseval
	instead of pvalptr.

Tue Feb 11 13:23:03 1992  James Clark  (jjc at jclark)

	* modpars1.c (endprolog): tag::tpos needs to be GRPLVL+2 long.

	* entity.h (MAXNAMELEN): Move into sgmldecl.c.

	* modmd1.c (mdelem): Use lbuf for rank suffix. Use tbuf for
	comgibuf.

	* modmd2.c (mdsrmuse): Store short reference name in lbuf.
	Simplify accordingly.

	* modmd2.c (mdentity): Use external nmbuf instead of ename.
	Allocate nmbuf if necessary.  Only needs to be NAMELEN+2 bytes
	long.
	* sgmlxtrn.[ch]: Declare nmbuf.
	* modpars1.c (endprolog): Free nmbuf.

	* modmd2.c (mdentity): Get rid of pname.

	* modsgml2.c (usedef):
	* modmd2.c (mdentity, mdnot):
	* modmd1.c (mddtds):
	* entgen.c (nentgen, field): Don't include length byte in fpinm.
	* modmd2.c (mdextid):
	* modmd2.c (field): Don't include length byte in fpinedcn.

	* ambig.c (ambig, ambigfree): Don't allocate memory all in one chunk.

	* modmd2.c (mdsrmuse): Point subdcl to somewhere that won't get
	overwritten.

	* sgmldecl.c (newkey): Make size of names REFNAMELEN+1,
	(sdnames): Don't allow name to be specified as parameter literal.
	Install names at end.
	(sdxsyntax): Don't install names.
	(sgmlwrsd): Output new names as names not literals.
	* synxtrn.h (key):
	* arcsynrf.c (key): Make size of names REFNAMELEN+1.
	* sgmldecl.c (REFNAMELEN): Move to entity.h.

	* sgmldecl.c (bufsrealloc): Handle the possibility that NAMELEN >=
	LITLEN.

	* namelen.h: Deleted.
	* entity.h: Define MAXNAMELEN explicitly.  Don't include namelen.h.

	* sgmls.c, sgmls.h, sgmlsasp.c, sgmlsasp.h, replace.c, replace.h:
	Avoid depending on any upper limit to NAMELEN.

Mon Feb 10 11:07:24 1992  James Clark  (jjc at jclark)

	* lineout.c (define_entity): Have single argument including length
	and EOS.
	(handle_single_token): Change accordingly.
	(handle_token_list): Temporarily make the token look like a name.

	* sgmlxtrn.[ch] (entbuf): Change to a pointer.
	* sgmldecl.c (bufsalloc, bufsrealloc): Allocate entbuf.

	* sgmlxtrn.[ch] (dtype): Change to a pointer.
	* modmd1.c (mddtds): Dynamically allocate dtype.
	* modpars1.c (setdtype): If dtype is NULL, point it to indefetd.

	* modmd1.c (mdelem): Use nnmgrp for holding exception name group
	lists.  Allocate nnmgrp if necessary.
	* modpars2.c (parsegrp): Additional tbuf argument. Use this as
	name buffer rather than local array.
	* modparse2.c (parsengrp): Similarily.
	* Change callers.

	* modmd2.c (mdsrmdef): Avoid use of sname buffer. Free srhptr when
	cleaning up.

	* modpars2.c (parsegcm): Use tbuf instead of local array.

	* modserv.c (savenm): New function.
	* adl.h (struct ad): Make adname a pointer.
	* modmd1.c (mdadl, mdnadl, anmtgrp): Don't parse names directly
	into adname.  Parse into a buffer and then save with savenm.

	* entity.h (struct hash, struct dcncb):
	* adl.h (struct id):
	* etype.h (struct etd):
	* source.h (struct entity, struct srh):
	* modserv.c (hin):

	* sgmlaux.h (struct error): Make subdcl a pointer.
	* modsgml2.c (mderr, errorinit): Corresponding changes.
	* sgmlmsg.c (printit): Pass empty string if e->subdcl is NULL.

	* sgmlmain.h (struct rcbtag): Make curgi a pointer.
	* modsgml1.c (sgmlnext): Corresponding changes.

        * entity.h (struct fpi): Make fpinm a pointer. Delete fpinml.
	* modmd2.c (mdextid): Don't copy ename.
	* modsgml2.c (usedef): Likewise.
	* entgen.c (field): Don't use fpinml.

	* entity.h (struct fpi): Make fpinedcn a pointer.
	* modmd2.c (mdextid):
	* entgen.c (field): Corresponding changes.

	* lineout.c (process_document): Fix so that it compiles if
	!SUPPORT_SUBDOC.

	* sgmls.c: Don't include setjmp.h.

	* sgmlmsg.c: Avoid use of printf("%*s").

Sun Feb  9 13:18:10 1992  James Clark  (jjc at jclark)

	* ambig.c (struct contoken): Change type of size to UNCH.

	* sgmldecl.c (sdquantity): If specified quantity limit is too big
	use biggest allowed.

	* modmd1.c (mdadl, mdelem, mdsrmuse): Make nmgrp external
	variable.  Allocate if necessary.
	(mdnadl): Rename nmgrp to nnmgrp. Make it an external variable.
	Allocate if necessary.
	* sgmlxtrn.c (nmgrp, nnmgrp): New variables.
	* entity.h (MAXGRPCNT): Move into sgmldecl.c.
	* modpars1.c (endprolog): Free nmgrp, nnmgrp, gbuf.
	* sgmldecl.h (GRPCNT): Get it from sd.
	* context.h: New file.
	* traceset.c, context.c: Move common macros into context.h.
	* Makefile: Include context.h in HDRS.
	* etype.h (struct mpos): Make h a unsigned long *.
	(HITCLEAR): New macro.
	* context.c (ANYHIT, HITSET, HITON, HITOFF): New macros.
	Fix operations on H to use these macros.
	(offbit, allhit): Change long to unsigned long *.
	(anyhit): New function.
	* traceset.c (tracehits): New function.
	(tracegi, traceend): Use tracehits.
	* modpars1.c (stack): Use HITCLEAR to clear hit bits.
	(endprolog): Allocate space for hit bits. Set grplongs.
	* sgmlxtrn.c (grplongs): New variable.

	* modpars1.c (endprolog): New function.
	(parsepro): Call endprolog.
	* ambig.c (ambigfree): New function.
	* modpars1.c (stack): Move allocation of tags and scbsgml into
	endprolog.

	* ambig.c: Dynamically allocate struct contoken's.
	(struct contoken): Use pointers rather than arrays for first and
	last.
	(newcontoken, freecontoken): New functions.
	(andgroup): Dynamically allocate nullablefirst.
	(MAXSTATES): Use GRPGTCNT rather than MAXGRPGTCNT.
	* entity.h (MAXGRPGTCNT): Move to sgmldecl.c.
	* ambig.c (listmerge): Use mergebuf.
	(follow): Make it an UNCH **.
	(ambig): Allocate follow and mergebuf if necessary.
	* sgmlxtrn.[ch] (gbuf): Make it a pointer.
	* modpars2.c (parsemod): Allocate gbuf if necessary.

	* etype.h (struct tag): Make tpos a pointer.
	* modpars1.c (stack): Allocate tpos members.
	* entity.h (MAXGRPLVL): Move to sgmldecl.c.  Increase to MAXGRPGTCNT.

	* context.c (TOKENHIT): Don't use intermediate variable.

Fri Feb  7 09:14:02 1992  James Clark  (jjc at jclark)

	* Version 0.6 released.

Thu Feb  6 10:16:57 1992  James Clark  (jjc at jclark)

	* Add casts so that it compiles with `typedef char *UNIV;'.

	* action.h (GTR_): New action.
	* modpars1.c (parsecon): Handle GTR_.
	* arcpcbrf.c (sp0a): Change action for EOB from GET_ to GTR_.

	* modpars1.c (parsepro): Increment sgmlsw in MDC_ and PIS_ actions.

	* Remove unnecessary #undefs.

	* Use (UNCH *)0 instead of NULL.

	* Delete multiple pass support.

	* process.c: Rename to ...
	* unixproc.c: New file.
	* dosproc.c, portproc.c: New files.

	* sgmldecl.c (sdcolon): Don't give an error for 8879:1986.

Wed Feb  5 10:59:21 1992  James Clark  (jjc at jclark)

	* modserv.c (rmalloc): Change return type to UNIV.

Mon Feb  3 13:27:29 1992  James Clark  (jjc at jclark)

	* arcpcbrf.c (et32a): Change action for msc from DAS_ to LAS_.

	* lextoke.h:
	* modsgml1.c (sgmlset):
	* modpars2.c (s2valnm):
	* arcpcbrf.c (pcbval):  Remove DEL class.
	* modmd1.c (mdattdef):
	* modpars2.c (parseatt):
	* sgmlmsg.c (parms):
	* modsgml2.c (pcbtab):
	* synxtrn.h:
	* arcpcbrf.c (pcblitt): Use new pcb for tokenized attributes.
	* modpars2.c (parselit): Handle DEF_ differently for tokenized
	attributes.
	* modpars2.c (tokdata): New function.
	* sgmlfnsm.h: Declare it.

Sun Feb  2 17:49:47 1992  James Clark  (jjc at jclark)

	* lineout.c (print_string): Fix bug in DELNONCH handling.

Fri Jan 31 17:51:15 1992  James Clark  (jjc at jclark)

	* entgen.c (nsysidgen): Deleted.
	(nentgen): New function.
	(entgen): Use nentgen for notation identifiers.
	(genext, ext): Omit entries for notations.
	(field): Change calculation for accessing genext.
	* sgmls.h (struct sgmls_notation): Delete id field. Add sysid and
	pubid fields.
	* sgmls.c (parse_notation): Support new N syntax.

Thu Jan 30 13:28:33 1992  James Clark  (jjc at jclark)

	* entgen.c: Include sgmlaux.h after unistd.h.

	* modmd2.c (mdextid): Increase ds.attdef by sum of normalized
	lengths of explicitly specified data attributes.

	* entity.h (struct switches): New nopen member.
	* modsgml2.c (entopen): Use nopen to check that maximum allowed
	number of open subdocument entities is not exceeded.
	* main.c (main): Support -o.
	(swinit): Initialize nopen.
	(build_subargv): Pass on incremented -o option.

Wed Jan 29 12:53:39 1992  James Clark  (jjc at jclark)

	* unix.cfg, entgen.c (DEFAULT_PATH): Don't use %L.

	* replace.c (load_replacement_file): Split off allocation into...
	(make_replacement_table): New function.
	(define_replacement): Ignore duplicates.
	* replace.h: Change declarations.
	* sgmlsasp.c (main): Use this to support multiple replacement
	files.

Mon Jan 27 16:35:03 1992  James Clark  (jjc at jclark)

	* context.c (newtoken): Fix computation of nextand.

Sun Jan 26 23:11:23 1992  James Clark  (jjc at jclark)

	* main.c: Cleanup temporary files on exit or signal.

	* main.c: Pass -z option to subdoc processes. Read capacity usage
	after process completes. Write capacity usage to file if specified
	by -z option.
	* modsgml1.c (sgmlsubcap): New function.
	(sgmlend): Take account of subdocument capacity usage.

	* sgmldecl.c: Remove support for passing SGML declarations through
	the environment.
	* main.c, lineout.c: Remove support for outputting environment.
	* sgmls.c, sgmls.h: Delete support for V command.

	* main.c: Write SGML declaration to temporary file. Pass this as
	first file to subdoc processes.
	* sgmldecl.c (sgmlwrsd): New function.

	* Rename RESOLVE_SUBDOC to SUPPORT_SUBDOC.
	* lineout.c: Always resolve subdoc references.
	* sgmldecl.c: Initialize SUBDOC to NO if !SUBDOC_SUPPORT.
	* main.c, appl.h (subdocsw): Deleted.

	* lineout.c: Resolve subdocuments even if suppsw.

	* momd1.c (anmtgrp): Make adn a UNS *.
	* sgmlfns.h: Change declaration.
	* adl.h (struct ad): Make adnum a UNS.
	* adl.h (struct ad): Make adlen a UNS.

	* entity.h (struct fpi): Use UNS rather than UNCH for lengths.

	* Use MAXNAMELEN rather than NAMELEN for size of arrays.
	* namelen.h: New file.
	* Use MAXGRPCNT rather than GRPCNT for size of arrays.
	* etype.h (struct tag): Use MAXGRPLVL instead of GRPLVL for size
	of tpos array.
	* entity.h: Remove definitions of ENTCASE, NAMECASE, and most
	quantity limits.
	* sgmldecl.h: Redefine thse to pick up values specified in SGML
	declaration.
	* entity.h (MAXGRPCNT, MAXGRPLVL, MAXGRPGTCNT, MAXNAMELEN): New
	definitions.
	* modpars1.c (parsecon):
	* modpars2.c (parseatt): Don't pass tbuflim.
	* sgmldecl.c: Implement parsing of non-public syntax sections.

	* modserv.c (ntoa): Use sprintf.
	* sgmlxtrn.[ch] (ntoabuf): Deleted.

	* sgmldecl.c: Remove extended reference syntax.

Sun Jan 19 13:38:24 1992  James Clark  (jjc at jclark)

        * modpars1.c (parsepro): Don't take tbuf as an argument.
        Change callers and declaration.
	* sgmldecl.c (sgmldecl): Don't take tbuf as an argument. Change
	callers and declaration.

	* modmd2.c (mdextid):
	* entity.h (struct fpi): Use pointers for fpisysis and fpipubis.
	No need for fpipubsw and fpisyssw.
	* entgen.c (field, entgen): Corresponding changes.
	* sgmlxtrn.h (sysibuf, pubibuf): Declare.
	* sgmlxtrn.[ch] (sysibuf, pubibuf): Define.
	* modmd2.c (mdexitid): Initialize these if necessary.

	* entgen.c (field, entgen, mindatcpy): Avoid using static buffer
        in field.

        * sgmlmsg.c (elttrace): Avoid using buffer.  Change HDRELT string
	accordingly.

	* sgmlxtrn.c: Change big arrays into pointers.
	* sgmlxtrn.h: Change declarations accordingly.
	* sgmldecl.c (sdinit, bufsalloc, bufsrealloc): New functions.
	* modpars1.c (stack): Allocate scbsgml and tags if necessary.

	* sgmlaux.h: Include sgmldecl.h.
	* sgmlincl.h: Don't include sgmldecl.h.
	* entgen.c (field, entgen): Use ENTCASE and NAMECASE to determine
	folding of names.

Fri Jan 17 18:30:07 1992  James Clark  (jjc at jclark)

	* msg.h: Avoid dependencies on reference quantity set.

Thu Jan 16 10:12:17 1992  James Clark  (jjc at jclark)

	* Rename strlsave to savestr.

	* modpars2.c (parselit, parseval, adlval, vallen, attval, parseatt):
	* modserv.c (replace, strlsave, sandwich):
	* sgmldecl.h (struct sgmldecl):
	* sgmldecl.c (sdversion, sdappinfo, sdfixcolon, sdpubcapacity,
	sdpubsyntax, sdcharset):
	* lineout.c (define_entity, handle_token_list,
	handle_single_token):
	* modsgml1.c (sgmlnext):
	* modsgml2.c (entopen):
	* modmd2.c (mdsrmdef, parsefpi, tagtext, entfix, mdextid):
	* entity.h (struct fpi):
	* entgen.c (entgen, field):
	* adl.h (struct ad):
	* modserv.c (dellen):
	* modmd1.c (mdattdef): Change representation of literals not to
	have initial length byte.  Change representation of token list or
	CDATA attributes (but not single token attributes) not to have
	initial length byte.

Mon Jan 13 10:38:18 1992  James Clark  (jjc at jclark)

	* sgmlxtrn.h (gbuf): Make size GRPGTCNT+3.
	* modpars2.c (parsemod): Don't count outermost model in
	gbuf[0].tu.tnum.
	* modmd1.c (mdelem): Change calculation of size of cmod and of
	modcnt accordingly.
	* ambig.c (MAXSTATES): Change to GRPGTCNT+2.

	* Version 0.5 released.

	* modmd1.c (mdelem): Outermost group doesn't count towards modcnt.

Sun Jan  5 10:51:05 1992  James Clark  (jjc at jclark)

	* ambig.c: New file.
	* etype.h (struct etd): Add mark field.
	* modpars2.c (parsemod): Possibly call ambig().
	* entity.h (struct switches): Add swambig member.
	* main.c (main, usage, build_subargv): Handle -a option.
	(swinit): Initialize swambig.

Wed Dec 11 14:01:06 1991  James Clark  (jjc at jclark)

	* modmd1.c (mdadl): Don't call etdadl() if alperm is 0.

	* context.c, modpars1.c: Move definitions of RC* into ...
	* etype.h

	* context.c (newtoken): Make sure Tstart is unhit.

Thu Dec  5 10:30:16 1991  James Clark  (jjc at jclark)

	* process.c (run_process): Use vfork() if available. Call buildenv
	before forking and then cleanup in parent.  Use _exit() if execvp
	fails.
	* unix.cfg: Add HAVE_VFORK and HAVE_VFORK_H.

	* std.h: Delete definition of isascii.

Tue Nov 19 08:42:41 1991  James Clark  (jjc at jclark)

	* lineout.c (print_data): Don't split up data.
	(data_count): Rename to have_data.

	* context.c (context): Handle the case where there's a hit in a
	plus group, but the current element has ended.

Thu Nov  7 09:38:14 1991  James Clark  (jjc at jclark)

	* source.h, sgmlaux.h, sgmlmain.h, modsgml1.c, lineout.c: Use
	unsigned long to hold line number.

Wed Nov  6 11:28:50 1991  James Clark  (jjc at jclark)

	* std.h: Add declaration of strerror.
	* sgmlmsg.c: Delete declaration of strerror.

	* msg.h: Improve message 134. Delete messages 135 and 137.

Tue Nov  5 10:13:54 1991  James Clark  (jjc at jclark)

	* arcpcbrf.c (et0a): Change action for sep (TAB) from NOP_ to DAS_.

Mon Nov  4 15:28:40 1991  James Clark  (jjc at jclark)

	* sgmls.h: Rename to lineout.h.

Sat Nov  2 09:06:09 1991  James Clark  (jjc at jclark)

	* msg.h: In message 133, s/comment/markup declaration/.

	* arcpcbrf.c (et7a): Use EE_ rather than EOF_ on EE.
	* modpars1.c (parsepro): Give an error message on EOD_.
	* msg.h: Use message 127 for this.

	* modpars2.c (charrefa): Decrement RCNT if the character is RS.

	* modpars1.c (parsepro): Give an error if the DTE_ is not at level
	0, and do not terminate the DTD.
	* msg.h: Use message 143 for this.

	* msg.h: Delete message 143.

Fri Nov  1 08:58:26 1991  James Clark  (jjc at jclark)

	* modmd2.c (mdsruse): Use message number 142 when an associated
	element type is specified and the declaration is not in the DTD.
	Use message 28 if an associated element type is not specified and
	the declaration is in the DTD. Use message 126 if something other
	than an associated element or MDC is specified and the declaration
	is not in the DTD.

	* msg.h: Delete message 138. This error is caught in parsefpi().

	* msg.h: Delete message 140.  Not used anywhere.

	* modpars2.c (parsegcm): When GRPGTCNT is exceeded use message
	number 114.

	* msg.h: Don't abbreviate attribute as att in messages 72 and 151.

	* msg.h: s/not declared minimizable/not minimizable/

	* modmd2.c (mdsrmdef): Give an error if concrete syntax does not
	support short references.
	* msg.h: New message 198.

	* modpars2.c (adlval): If SHORTTAG is NO and OMITTAG is NO, do not
	allow an unimpliable attribute value specification to be omitted.
	* msg.h: New message 197.

	* msg.h: Improve message number 84.

	* modpars2.c (parseatt): If SHORTTAG is NO, do not allow an
	undelimited attribute value (ie an attribute value specification
	that is not an attribute value literal).
	* msg.h: New message 196.

	* modpars2.c (parseatt): If SHORTTAG is NO, do not allow
	attribute name to be omitted.
	* msg.h: New message 195.

	* modpars2.c (parseatt): No need to have prototype definition.

	* modpars1.c (parsetag): If SHORTTAG is NO, do not allow
	unclosed tag or null start tag.
	* msg.h: New messages 193 and 194.

Thu Oct 31 10:51:54 1991  James Clark  (jjc at jclark)

	* sgmldecl.c (noemptytag): New function.
	(sdimply, sdfeatures): Call noemptytag() if the SHORTTAG feature
	is NO.

	* sgmldecl.c (sdimply): Store value of SHORTTAG environment
	variable in sd.shorttag.

	* modmd1.c (mdattdef): Declared value of data attribute cannot be
	ID.
	* msg.h: Use message 144 for this.

	* msg.h: Delete message 144.

	* modpars1.c (parsecon): Handle DCE_ action by switching to
	pcbconm and repeating current character.  Move code that was
	target of goto.

	* Makefile: Add ChangeLog to the list of files to go in the
	distribution.

	* unix.cfg: Mention that defining HAVE_CAT requires use of
	/usr/xpg2bin/cc on a Sun.

	* modpars1.c (destack): Don't give an error when a required tag
	was not specified if conrefsw is set.
	(parsecon): Clear conrefsw only after calling destack().

	* sgmldecl.c (envcharset): Skip any white space before digits
	after doing sscanf.

	* main.c (subdocsw): Initialize to 1.

	* Started using ChangeLog at version 0.3.
