Sat Dec 19 08:21:34 1992  Francois Pinard  (pinard at icule)

	* Version 1.0.3 released to <prep.ai.mit.edu>.  This is still a
	beta release for the future GNU m4 version 1.1.

	* lib/alloca.c: New, from elsewhere.
	* lib/Makefile.in: Distribute it.  Define and use $(ALLOCA).

	* m4.h: Do not define index/rindex if already defined.  If
	FALSE/TRUE are already defined, do not redefine them, but merely
	define boolean typedef to int.

	* Makefile.in: Use $(DEFS) while compiling ansi2knr.
	* ansi2knr.c: Rewrite #ifdef HAVE_STRING_H || STDC_HEADERS,
	because some C compilers do not like connectives with #ifdef.
	* m4.h: Define `volatile' only if __GNUC__, instead of once for
	__GNUC__ and once for __STDC__.
	* lib/regex.h: Leave const alone, AC_CONST will take care of it.

	* checks/Makefile.in: Use .all_stamp instead of $(CHECKS) for
	Makefile dependencies.  Without it, make keeps destroying and
	remaking $(CHECKS) in a loop (why?).  Distribute .all_stamp.

	* m4.h, m4.c, builtin.c, output.c: Change all divertion/DIVERTION
	to diversion/DIVERSION, this was a spelling error.

	* m4.c: Declare version[], remove #include "version.h".
	* version.h: Deleted.
	* Makefile.in: Remove references to version.h.

	* output.c (shipout_text): Centralize all `#line NUM ["FILE"]'
	production, by using a simpler and more robust algorithm.  This
	solves the problem of synclines sometimes written in the middle of
	an output line.  Delete sync_line() and output_lines variable.
	* m4.h: Remove sync_line prototype and output_lines declaration.
	* input.c (next_char), output.c (shipout_text): Remove references
	to output_lines.
	* input.c (push_file, pop_file): Merely put the value -1 in
	output_current_line instead of calling sync_line, for delaying a
	single `#line NUM FILE' before next output line.  Do not test
	for sync_output, because this is unnecessary clutter.
	* output.c (make_divertion, insert_divertion): Idem.
	* input.c: Rename must_advance_line to start_of_input_line, for
	consistency.

	* debug.c (trace_header): Select a new debug line format, which
	better complies with GNU standards for formatting error messages.
	With option `-dfl', M-x next-error might be used on the output.
	* m4.c (vmesg): Adjust format of error output to GNU standards.
	* m4.texinfo: Adjust examples for `make check' to work.

	* m4.h, builtin.c, debug.c, input.c, macro.c, path.c: Use upper
	case for enum debug_info constants, which were all lower case.

	* builtin.c (m4_regexp, m4_patsubst): Use re_search instead of
	re_search_2.
	* lib/regex.[ch]: Use new version from textutils 1.3.6, with some
	collected patches.  I tried a few times using newer regex.[ch], it
	mysteriously stopped aborting with this one.  Insecure feeling...
	* lib/Makefile.in: Distribute regex.[ch].old, just in case!

Fri Dec 18 11:08:03 1992  Francois Pinard  (pinard at icule)

	From David MacKenzie <djm@eng.umd.edu>:
	* m4.c: Change `--no-warnings' to `--silent'.

	From David MacKenzie <djm@eng.umd.edu>:
	* m4.c: Put all M4OPTS code upon IMPLEMENT_M4OPTS control, and
	leave it off for now.  See comment in m4.c for justification.

	* configure.in: Replace AC_USG by AC_HAVE_HEADERS(string.h).
	* m4.h, ansi2knr.c, lib/regex.h: Replace USG by HAVE_STRING_H.

	* Makefile.in: Add a new `info' goal.  Use macro MAKEINFO.

	* Makefile.in: Ensure recursive cleaning is done before local
	cleaning for all clean goals.

	* builtin.c (ntoa): Ensure the value is always interpreted as a
	signed quantity, whatever the radix is.

Wed Nov 18 07:57:19 1992  Jim Meyering  (meyering@idefix)

	* builtin.c, format.c, input.c: Split long lines.
	* m4.c: Use typedef macro_definition instead of struct
	macro_definition.
	* symtab.c: Use typedef symbol instead of struct symbol.

Tue Nov 17 01:58:40 1992  Francois Pinard  (pinard at icule)

	* all: Remove all trailing whitespace, in code and comments.

	* configure.in: Find some awk.
	* Makefile.in: Add $(AWK) to MDEFINES.
	* checks/Makefile.in: Transmit $(AWK) to get_them.
	* checks/get_them: Use $AWK instead of gawk.  Add a close in the
	awk script when switching files, because without this, mawk runs
	out of file descriptors.

Mon Nov 16 20:42:56 1992  Francois Pinard  (pinard at icule)

	From Jim Meyering <meyering@cs.utexas.edu>:
	* Makefile.in (realclean): Delete m4.info*.

	* Makefile.in: Adjust and link with checks/Makefile.
	* checks/Makefile.in: New.
	* configure.in: Output checks/Makefile.

	* checks/get_them: Have the dnl header of each test more
	recognizable by next-error, also use a better message.

Mon Nov 16 07:48:52 1992  Jim Meyering  (meyering@idefix)

        * m4.h [__GNUC__]: Use __volatile__ instead of `volatile.'
        And use that only if __GNUC__ since we're using it's GCC-specific
        semantics that tell the compiler the associated function doesn't
        return.

        * builtin.c (substitute): Don't use character as an array index.
        (dumpdef_cmp): Make formal arguments `const void *' to avoid
        warnings with gcc -W -Wall on systems with qsort prototype.
        (m4_errprint): Cast obstack_finish to `char *' to avoid warnings
        from gcc -W -Wall.

        * eval.c (most functions): Add parentheses to assignments used
        as truth values go avoid warnings from gcc -Wall.

	* input.c, m4.c, output.c, path.c, symtab.c: Declare static
	any functions that don't need external scope.

	* builtin.c, debug.c, format.c, m4.c, m4.h, macro.c, symtab.c
	(many functions and arrays): Declare `const.'

Sun Nov 15 09:42:09 1992  Francois Pinard  (pinard at icule)

	* all: Rename nil to NULL, using the declaration from <stdio.h>,
	removing the declaration from m4.h.  Also rename false to FALSE
	and true to TRUE.

	* lib/Makefile.in (Makefile): New goal.

	From Jim Meyering <meyering@cs.utexas.edu>:
	* Makefile.in, lib/Makefile.in: Add a .c.o rule, so CFLAGS is not
	so heavily loaded.  It gets more easily overridable, calling make.

	* Makefile.in (dist): Get .fname from the current directory name,
	instead of from version.h.  I need updating many files manually,
	when the version changes, version.h is just one of them.

Sat Nov 14 11:01:20 1992  Francois Pinard  (pinard at icule)

	From Tom McConnell <tmcconne@sedona.intel.com>:
	* m4.h: Remove the tag `boolean' on the enum introducing typedef
	`boolean'.  This tag conflicts with <sys/types.h> on SVR4.

Fri Nov 13 00:12:50 1992  Francois Pinard  (pinard at icule)

	* m4.texinfo: Correct the examples for 33.divert, 38.divnum,
	39.cleardiv, which were describing missing or spurious newlines.
	Modify examples 52.eval, 53.esyscmd and 54.sysval so the results
	do not depend on machine word size, `/bin/false' implementation,
	or `wc' output format.  `make check' is more dependable, now.

	* checks/check_them: Summarize the failed tests by listing their
	name, at end.  If none, issue `All checks successful'.  Output
	`Checking' instead of `Input file:'.

	* checks/get_them, checks/check_them: Reindented.

	* Makefile.in (dist): chmod a+r before making the tar file.

Thu Nov 12 14:42:57 1992  Francois Pinard  (pinard at icule)

	* builtin.c (m4_dnl): Diagnose any parameter to `dnl'.

	* input.c (next_token): Reinitialize token_buttom just after using
	it as a watermark with obstack_free.  Or else, a future token, big
	enough for triggering reallocation of the obstack chunk, could
	void the initialized value of token_buttom, later causing panic in
	obstack_free.  Rename token_buttom to token_bottom everywhere.

	From Richard Stallman <rms@prep.ai.mit.edu>:
	* m4.h: Before declaring errno, first include <errno.h> and
	ensure that it does not define errno.

Wed Nov 11 17:40:35 1992  Francois Pinard  (pinard at icule)

	* builtin.c: Define and use DECLARE macro for builtins.

	* builtin.c (m4_ifelse): Avoid any diagnostic when exactly one
	argument, this is a common idiom for introducing long comments.

	* builtin.c (m4_ifelse): If 3n + 2 arguments, diagnose missing
	arguments.  The last argument was silently ignored.

	* m4.c (cmd_error): Add a missing semicolon before va_end().

Tue Nov 10 08:57:05 1992  Francois Pinard  (pinard at icule)

	* Makefile.in: Now handle protoized sources.  Define and use U.
	Compile and use ansi2knr with old compilers.  Update DISTFILES.
	Add `aclocal.m4' to `configure' dependencies.
	* ansi2knr.c: New, from Ghostscript distribution.
	* configure.in: Define U through FP_PROTOTYPES for old compilers.
	Add AC_ISC_POSIX, AC_CONST, AC_SIZE_T.
	* aclocal.m4: New, provide FP_PROTOTYPES.
	* m4.h: Conditionnaly protoized through Args, save for varags.
	* builtin.c: Protoized.  Then:
	Include <sys/types.h> if size_t is not defined, before "regex.h".
	(m4_ifelse): Fetch built-in name properly for diagnostic.
	(m4_dumpdef): Remove wrong (char *) cast calling dump_symbol.
	(m4_regexp): Add const to `msg' declaration.
	(m4_patsubst): Add const to `msg' declaration.
	* debug.c: Protoized, save for varargs.
	* eval.c: Protoized.
	* format.c: Protoized.
	* input.c: Protoized.
	* m4.c: Protoized, save for varargs.  Then:
	(xfree): Accept void * instead of char *.
	(xmalloc): Return void * instead of char *.
	(xrealloc): Accept and return void * instead of char *.
	* macro.c: Protoized.
	* output.c: Protoized.
	* path.c: Protoized.  Then cast some (char *) over xmalloc's.
	* symtab.c: Protoized.

Fri Nov  6 02:05:21 1992  Francois Pinard  (pinard at icule)

	* m4.texinfo: Remove directory from diagnostics in 30.include,
	51.eval, 56.errprint and 57.m4exit tests.

	* m4.h: Remove declarations for int or void system functions, they
	cause more conflicting trouble than they make good.

	* configure.in: Avoid configuration header file.  Add some tests.
	* m4.h: Remove #include "config.h".
	* Makefile.in, lib/Makefile.in: Implement Autoconf interface.
	Then, rewritten for better compliance with GNU standards.

Thu Nov  5 12:37:13 1992  Francois Pinard  (pinard at icule)

	* format.c (format): Avoid syntax error if not HAVE_EFGCVT,
	because of a misplaced #endif.

	* Many *.[hc] files: Correct intra-line spacing here and there,
	according to GNU indent 1.6 advice.
	
	From Jason Merrill <jason@jarthur.claremont.edu>:
	* configure.in: New, using Autoconf 1.2.
	* m4.h: Reverse NO_MEMORY_H to NEED_MEMORY_H.
	* Delete old configure.in, configure, etc/configure.in,
	etc/configure, lib/configure.in, lib/configure and config/*.

	From Jason Merrill <jason@jarthur.claremont.edu>:
	* symtab.c (hash): Change (char) NULL to '\0'.

	* Delete .vers, etc/newdist.sh, etc/newvers.sh and
	etc/nextvers.sh.  Version numbers will be edited `by hand'.
	* version.h: De-automatize, force value in.

	From David MacKenzie <djm@eng.umd.edu>:
	* m4.c: Changes in order to use a newer getopt.h.

	* checks/: New name for examples/.
	* checks/get_them: New location for etc/get_examples.
	* checks/check_them: New location for etc/check_examples.
	* Makefile.in, checks/get_them, checks/check_them: Adjust.
	* lib/vfprintf.c: New location for etc/vfprintf.c.
	* Delete empty etc/.
	* examples/: New name for test/.

Tue Mar 10 00:29:46 1992  Francois Pinard  (pinard at icule)

	* Makefile.in (check): Add m4 as dependency.

	From David Mackenzie <djm@eng.umd.edu>:
	* m4.c: Accept --no-warnings instead of --no_warnings, and
	--no-gnu-extensions instead of --no_gnu_extensions.  Make the
	usage message more informative.

Mon Mar  9 14:53:40 1992  Francois Pinard  (pinard at icule)

	* etc/check_examples: New name for check_examples.sh.
	* etc/get_examples: New name for get_examples.sh.
	* Makefile.in, etc/Makefile.in: Use new names.

	* Makefile.in: Transmit $(CC) while making in lib.

	* Many *.[hc] files: GNU indent'ed, with further fine tuning of
	code disposition by hand.

Sun Mar  8 11:01:55 1992  Francois Pinard  (pinard at icule)

	From Richard Stallman <rms@prep.ai.mit.edu>:
	* m4.h: Delete definitions for abort() and exit().

	From Hal Peterson <hrp@cray.com>:
	* config/hmake-unicos, config/s-unicos.h: New files.

	From Michael Fetterman <mafetter@ichips.intel.com>:
	* eval.c (exp_term): Have N^0 return 1.

	From Mike Lijewski <lijewski@theory.tc.cornell.edu>:
	* eval.c, input.c, m4.h: Remove last comma in enums.

	* Transfer of maintenance duties from Rene' to Franc,ois.

Thu Oct 24 15:18:46 1991  Rene' Seindal (seindal at diku.dk)

	* Version 1.0.  Many thanks to those, who provided me with bug
	reports and feedback.

	* Uses GNU configure, taken from the gdb distribution.

	* Uses GNU getopt(), with long option names.

	* The -Q/+quiet option is added, which suppresses warnings about
	missing or superflous arguments to built-in macros.

	* Added default options via the M4OPTS environment variable.

	* The built-in format can now be configured to use sprintf as
	the formatting engine, for systems without [efg]cvt(3).

	* GNU library code is moved to the ./lib subdirectory; other
	utility files are now in ./etc.

	* Several minor bugs have been fixed.

Fri Jul 26 15:28:42 1991  Rene' Seindal (seindal at diku.dk)

	* Fixed various bugs.  Version 0.99, manual 0.09.  Many thanks to
	Francois Pinard <pinard@iro.umontreal.ca> and Roland H. Pesch
	<pesh@cygnus.com> for providing me with reports.

	* The builtins incr and decr are now implemented without use of
	eval.

	* The builtin indir is added, to allow for indirect macro calls
	(allows use of "illegal" macro names).

	* The debugging and tracing facilities has been enhanced
	considerably.  See the manual for details.

	* The -tMACRO option is added, marks MACRO for tracing as soon
	as it is defined.

	* Builtins are traced after renaming iff they were before.

	* Named files can now be undiverted.

	* The -Nnum option can be used to increase the number of
	divertions available.

	* Calling changecom without arguments now disables all comment
	handling.

	* The function m4_patsubst() is now consistently declared
	static.

	* A bug in dnl is fixed.

	* A bug in the multi-character quoting code is fixed.

	* Several typos in the manual has been corrected.  More probably
	persist.

	* The m4.info file is now installed along with the program.

Thu Nov 15 21:51:06 1990  Rene' Seindal (seindal at diku.dk)

	* Updated and enhanced version.  Version 0.75, manual 0.07.

	* Implemented search path for include files (-I option and
	M4PATH envronment variable).

	* Implemented builtin "format" for printf-like formatting.

	* Implemented builtin "regexp" for searching for regular
	expressions.

	* Implemented builtin "patsubst" for substitution with regular
	expressions.

	* Implemented builtin "esyscmd", which expands to a shell
	commands output.

	* Implemented "__file__" and "__line__" for use in error
	messages.

	* Implemented character ranges in "translit".

	* Implemented control over debugging output.

	* Implemented multi-character quotes.

	* Implemented multi-character comment delimiters.

	* Changed predefined macro "gnu" to "__gnu__".

	* Changed predefined macro "unix" to "__unix__", when the -G
	option is not used.  With -G, "unix" is still defined.

	* Changed "shift", "$@" and "$*" to not insert spaces afters
	commas.

	* Added program name to error messages.

	* Fixed two missing null bytes bugs.

Mon Jan 22 21:08:52 1990  Rene' Seindal (seindal at diku.dk)

	* Initial beta release.  Version 0.50, manual 0.05.
