2014-05-13  Eric Blake  <eblake@redhat.com>

	doc: fix line-wrapped macro definitions
	* doc/m4.texi: Drop bogus @c.
	Reported by Marijn Schouten, fix by Patrice Dumas copied from
	autoconf code base.

2014-02-05  Vitezslav Crhonek  <vcrhonek@redhat.com>  (tiny change)

	main: diagnose unsupported --word-regexp
	* src/m4.c (long_options): Don't allow long option if short option
	is rejected.

2014-01-01  Eric Blake  <eblake@redhat.com>

	maint: bump copyright year
	* all files: Version control now has a commit in 2014.
	* gnulib: Update to latest.

2013-11-08  Eric Blake  <eblake@redhat.com>

	build: fix regression for DragonFly BSD
	* gnulib: Update to latest gnulib, for fpending fix.

2013-09-24  Eric Blake  <eblake@redhat.com>

	build: improve default build for non-gcc
	* gnulib: Update to latest gnulib.
	* configure.ac (gl_WARN_ADD): Drop flags now guaranteed by gnulib.
	(--enable-gcc-warnings): Set default based on a tarball-only file,
	rather than whether .git exists.
	* THANKS: Update.

2013-09-15  Gary V. Vaughan  <gary@gnu.org>

	configury: specify subdir-objects for future automake releases.
	Latest automake warns about future incompatibility if
	subdir-objects is not specified by AM_INIT_AUTOMAKE.
	* configure.ac (AM_INIT_AUTOMAKE): Add subdir-objects.

	bootstrap: require newer texinfo release.
	* bootstrap.conf (buildreq): Bump required makeinfo binary
	release number to 4.13 to support --bulid-dir option.

	bootstrap: don't double-specify --no-changelog to gnulib-tool.
	* bootstrap.conf (gnulib_tool_option_extras): Rename from
	this...
	(gnulib_tool_options): ...this, and append options rather than
	overwrite.

	bootstrap: sync with upstream.
	* gl/build-aux/bootstrap.in, gl/build-aux/extract-trace,
	gl/build-aux/funclib.sh, gl/build-aux/options-parser: Update
	from upstream to pick up recent improvements.
	* bootstrap: Regenerate.

2013-08-17  Michael Witten  <mfwitten@gmail.com>  (tiny change)

	Clean up documentation
	* doc/m4.texinfo: Note that m4 is mostly compatible with SVR4.

2013-08-17  Eric Blake  <eblake@redhat.com>

	maint: update to latest gnulib
	* gnulib: Update to latest, for various fixes.

2013-04-18  Eric Blake  <eblake@redhat.com>

	maint: update to latest gnulib
	* gnulib: Update to latest, for regex fixes.

2013-03-15  Eric Blake  <eblake@redhat.com>

	build: avoid test failure on HPUX
	* doc/m4.texi (Command line files): Skip tests on systems where it
	is impossible to start with stdin/out closed.
	Reported by Gary V. Vaughan.

2013-03-12  Eric Blake  <eblake@redhat.com>

	maint: update to latest gnulib
	* gnulib: Update to latest, for mingw compile fixes.

2013-03-11  Eric Blake  <eblake@redhat.com>

	build: fix large diversions on mingw
	* gl/lib/clean-temp.c.diff: New file.
	* NEWS: Mention the fix.

2013-03-08  Gary V. Vaughan  <gary@gnu.org>

	bootstrap: remove reintroduced CVS cruft.
	* bootstrap.conf (m4_ignore_gnulib_ignore): Remove.
	The code this was factored from was removed between making the
	bootstrap branch, and merging, so this function is actually
	obsolete.

	maint: automake 1.11.5 and earlier generate insecure dist
	rules.
	* configure.ac (AM_INIT_AUTOMAKE): Require 1.11.5 or newer.

2010-09-17  Gary V. Vaughan  <gary@gnu.org>

	bootstrap: upgrade to canonical upstream version.
	* bootstrap.conf: New file to configure gnulib bootstrap.
	* gl: New gnulib overrides directory.
	* gl/modules/bootstrap, gl/modules/extract-trace,
	gl/modules/funclib.sh, gl/modules/inline-source,
	gl/modules/options-parser: Import canonical bootstrap modules.
	* gl/build-aux/bootstrap.in, gl/build-aux/extract-trace,
	gl/build-aux/funclib.sh, gl/build-aix/inline-source,
	gl/build-aux/options-parser: Import module implementations.
	* bootstrap: Regenerate.
	* m4/gnulib-cache.m4: Regenerate.

2013-01-02  Eric Blake  <eblake@redhat.com>

	maint: automake recommends *.texi now
	* doc/m4.texinfo: Move...
	* doc/m4.texi: ...here, for the eventual automake 1.14.
	* HACKING: Reflect the rename.
	* doc/Makefile.am (info_TEXINFOS): Likewise.
	* checks/Makefile.am ($(srcdir)/stamp-checks): Likewise.

2013-01-01  Eric Blake  <eblake@redhat.com>

	maint: bump copyright year
	* all files: Version control now has a commit in 2013.

	maint: update to latest gnulib
	* gnulib: Update to latest, for rational range regex, build fixes,
	copyright update.
	* NEWS: Document this.

2012-12-22  Eric Blake  <eblake@redhat.com>

	maint: enable tight_scope syntax check
	* src/Makefile.am (m4_SOURCES): Move m4.h...
	(noinst_HEADERS): ...into separate listing for syntax check.
	* src/m4.h: Add 'extern' to function declarations.
	(expansion_level): Declare extern variable here...
	* src/debug.c: ...not here.

	maint: move syntax check exemptions into cfg.mk
	* .x-sc_prohibit_tab_based_indentation: Delete file.
	* .x-update-copyright: Likewise.
	* Makefile.am (syntax_check_exceptions): Delete rule.
	* cfg.mk (exclude_file_name_regexp): Move exemptions here.
	(local-checks-to-skip): Re-enable copyright check.

	build: update to latest gnulib
	* gnulib: Update to latest.

2012-11-19  Eric Blake  <eblake@redhat.com>

	build: avoid problematic gcc 4.4 warnings
	* configure.ac (nw): Disable gcc warnings that cause build
	failures under RHEL 6.3.
	* gnulib: Update to latest.

2012-11-14  Paul Eggert  <eggert@cs.ucla.edu>

	doc: improve prehistory discussion
	* doc/m4.texinfo (History): Describe M6 and related processors.
	From a suggestion by Doug McIlroy in
	<http://lists.gnu.org/archive/html/m4-discuss/2012-05/msg00004.html>.
	Also, improve citation quality by giving URLs and so forth.

2012-09-21  Eric Blake  <eblake@redhat.com>

	maint: drop more CVS cruft
	* bootstrap (Version control): Don't generate .cvsignore or
	prepopulate m4/.gitignore.
	* .gitignore: Allow m4/gnulib-cache.m4 manually.

2012-09-06  Eric Blake  <eblake@redhat.com>

	maint: enable gcc warnings during git development
	* configure.ac (gl_gcc_warnings): Alter default based on environment.

2012-09-05  Stefanno Lattarini  <stefano.lattarini@gmail.com>  (tiny change)

	maint: convert the last hand-written Makefile to automake
	* checks/Makefile.in: Rename ...
	* checks/Makefile.am: ... like this, and simplify and adjust to
	make it proper as Automake input.

2012-09-04  Eric Blake  <eblake@redhat.com>

	maint: merge gitignore files
	* build-aux/.gitignore: Delete.
	* checks/.gitignore: Likewise.
	* doc/.gitignore: Likewise.
	* examples/.gitignore: Likewise.
	* src/.gitignore: Likewise.
	* .gitignore: Cover rules from deleted files.

	maint: drop CVS cruft
	* .cvsignore: Remove.
	* build-aux/.cvsignore: Likewise.
	* checks/.cvsignore: Likewise.
	* doc/.cvsignore: Likewise.
	* examples/.cvsignore: Likewise.
	* src/.cvsignore: Likewise.

	build: add more compiler checking
	* configure.ac (nw): Turn on some warnings that no longer trigger
	a gcc warning, or where we reduce the scope of unwarned code.
	* src/m4.h (progname): Drop redundant declaration.
	* src/builtin.c (includes): Use header for program_name.

	build: pick up latest gnulib fixes
	* gnulib: Update to latest.
	* m4/gnulib-cache.m4: Regenerate.
	* missing: Break symlink in order to work around automake version
	mismatch issue.
	* .gitignore: Update.
	* .cvsignore: Likewise.

	build: mark several pure functions
	* src/m4.h (M4_GNUC_PURE): New macro.
	* src/m4.c (fault_handler): Mark pure.
	* src/builtin.c (find_builtin_by_addr, find_builtin_by_name):
	Likewise.
	* src/symtab.c (hash): Likewise.

2012-09-01  Eric Blake  <eblake@redhat.com>

	build: silence gcc warning
	* configure.ac (M4_cv_gcc_pragma_push_works): New test.
	(-Wformat-nonliteral): Disable for older gcc.
	* src/format.c (expand_format): Mark our only uses of nonliteral
	format as being safe.

	doc: fix misuse of @xref
	* doc/m4.texinfo (Inhibiting Invocation): Reword.

2012-07-21  Eric Blake  <eblake@redhat.com>

	bootstrap: avoid undefined variables
	* bootstrap (func_fatal_error, func_usage, func_help)
	(func_version): Use constants, not undefined variables; propagate
	any write failures.
	(func_missing_arg): Drop duplicate declaration.  Preinitialize
	exit_cmd.
	Reported by Stefano Lattarini.

2012-06-26  Eric Blake  <eblake@redhat.com>

	build: get missing from automake, not gnulib
	* build-aux/missing: Break link to gnulib.
	* .gitignore: Reflect this.

2012-06-25  Eric Blake  <eblake@redhat.com>

	maint: update copyright year
	* all files: Run 'make update-copyright'.

	build: deal with newer glibc vs. FORTIFY_SOURCE
	* configure.ac (FORTIFY_SOURCE): Make conditional on optimization.

2011-05-02  Eric Blake  <eblake@redhat.com>

	build: pick up latest gnulib fixes
	* gnulib: Update to latest, for fclose improvements.

2011-04-30  Eric Blake  <eblake@redhat.com>

	build: improve SIGPIPE emulation on mingw
	* gnulib: Update to latest.
	* m4/gnulib-cache.m4: Import sigpipe module, drop strtol.

2011-04-29  Eric Blake  <eblake@redhat.com>

	m4_defn: avoid compiler warning
	* src/builtin.c (m4_defn): Nuke redundant condition.

	m4_error: fix missing va_end
	* src/m4.c (m4_error, m4_error_at_line): Add missing va_end.

2011-03-01  Eric Blake  <eblake@redhat.com>

	Release Version 1.4.16.
	* gnulib: Update to latest.
	* NEWS: Mention the release.
	* src/builtin.c (m4_defn): Silence spurious -Wstrict-overflow
	warnings from gcc 4.5.1 at -O2.

2011-02-28  Eric Blake  <eblake@redhat.com>

	index: fix typo in previous commit
	* doc/m4.texinfo (Index macro): Actually expose the bug.

2011-02-26  Eric Blake  <eblake@redhat.com>

	index: fix another regression from faulty strstr
	* gnulib: Update to latest, for strstr fix.
	* doc/m4.texinfo (Index macro): Test for the bug.
	* NEWS: Document the fix.
	* THANKS: Update.
	Reported by Mike Stump, with additional analysis from Ralf
	Wildenhues and Jim Meyering.

2011-02-07  Eric Blake  <eblake@redhat.com>

	maint: speed up configure, using latest gnulib
	* gnulib: Update to latest.
	* m4/gnulib-cache.m4: Import fclose and rename modules.
	* configure.ac (gl_ASSERT_NO_GNULIB_POSIXCHECK): Speed up normal
	configure runs (and document how to rerun GNULIB_POSIXCHECK).
	* HACKING: Document GNULIB_POSIXCHECK.

	maint: update http git cloning instructions
	* HACKING: Git http doesn't like the redirect at git.sv.gnu.org.
	* THANKS: Update.
	Reported by Mike Dupont.

2011-02-01  Eric Blake  <eblake@redhat.com>

	maint: update to latest gnulib
	* gnulib: Update to latest.
	* m4/gnulib-cache.m4: Regenerate.
	* src/builtin.c (m4_ifelse): Use STREQ.

2011-01-25  Eric Blake  <eblake@redhat.com>

	maint: reflect recent copyright assignments
	* AUTHORS: Update.

2011-01-03  Eric Blake  <eblake@redhat.com>

	maint: update copyright year
	* gnulib: Update to latest.
	* m4/gnulib-cache.m4: Regenerate.
	* all other files: Run 'make update-copyright'.

	maint: document use of copyright ranges
	* README: Copy coreutils wording for allowing copyright year
	ranges.  Also mention libsigsegv 2.9.
	* cfg.mk (UPDATE_COPYRIGHT_USE_INTERVALS): Now that GNU Coding
	Standards permit it, prefer shorthand copyright.
	* HACKING: Update libsigsegv preference.
	* NEWS: 1.4.16 will be in 2011.
	* doc/m4.texinfo (History): Likewise.

2010-12-31  Eric Blake  <eblake@redhat.com>

	main: avoid leaking string on Haiku
	* src/m4.c (main): Avoid leak when SIGBUS == SIGSEGV.
	* THANKS: Update.
	Reported by Scott McCreary.

2010-12-24  Eric Blake  <eblake@redhat.com>

	build: pull in various gnulib fixes
	* gnulib: Update to latest.
	* m4/gnulib-cache.m4: Reflect spawn-pipe module name change.
	* src/builtin.c (includes): Likewise.
	(define_user_macro): Alter comment to appease syntax-check.
	* src/input.c (pop_wrapup): Likewise.
	* src/output.c (undivert_all): Likewise.
	* cfg.mk (local-checks-to-skip): Skip new rule.

	maint: reflect recent copyright assignment
	* AUTHORS: Add Raphael Poss.

2010-10-21  Eric Blake  <eblake@redhat.com>

	build: work around glibc and libsigsegv bugs
	* gnulib: Update to latest.
	* m4/gnulib-cache.m4: Regenerate.
	* docs/m4.texinfo (Index macro): Expose strstr bug.
	* NEWS: Mention fixes.

	docs: mention more history
	* doc/m4.texinfo (History): Add upcoming 1.4.16 release.

2010-08-31  Eric Blake  <eblake@redhat.com>

	Release Version 1.4.15.
	* gnulib: Update to latest.
	* NEWS: Mention the release.

2010-08-30  Eric Blake  <eblake@redhat.com>

	Clean up compiler warnings.
	* src/builtin.c (m4_patsubst): Drop dead store.
	* src/eval.c (unary_term): Likewise.
	* src/input.c (match_input): Likewise.  Also drop useless casts to
	void.
	* src/symtab.c (symtab_debug): Drop useless casts.

	Test previous commit.
	* doc/m4.texinfo (Format): Add a test.
	* NEWS: Document the fix.
	* THANKS: Update.

2010-08-30  Carlo Teubner  <carlo.teubner@gmail.com>  (tiny change)

	Avoid a crash with bad format string.
	* src/format.c (expand_format): Fix off-by-one error.

2010-08-30  Eric Blake  <eblake@redhat.com>

	Document recent bug fixes.
	* NEWS: Add some entries.
	* gnulib: Update to latest, for more AIX fixes.

2010-07-30  Eric Blake  <eblake@redhat.com>

	Update to newer gnulib.
	* gnulib: Update to latest, for strtod fix.
	* src/Makefile.am (m4_LDADD): Update link libraries accordingly.
	* cfg.mk (local-checks-to-skip): Skip broken check.
	* doc/m4.texinfo: Drop all use of @acronym{}.
	* THANKS: Update.
	Reported by Rainer Tammer.

2010-06-04  Eric Blake  <eblake@redhat.com>

	Reflect recent copyright assignment.
	* AUTHORS: Add David Warme.

	Update to newer gnulib.
	* gnulib: Update to latest, and include C++ tests.
	* configure.ac (gl_CXX_CHOICE_DEFAULT_NO): Make default for C++
	tests be disabled...
	* Makefile.am (DISTCHECK_CONFIGURE_FLAGS): ...but run them when
	building package.
	* m4/gnulib-cache.m4: Regenerate.
	* build-aux/.cvsignore: Likewise.
	* build-aux/.gitignore: Likewise.

	Fix build on newer glibc.
	* src/m4.h (includes): Add <sys/stat.h>.
	* THANKS: Update.
	Reported by Todd Rinaldo.

2010-03-02  Giuseppe Scrivano  <gscrivano@gnu.org>  (tiny change)

	Support bootstrap --gnulib-srcdir=DIR.
	* bootstrap: Add --gnulib-srcdir option, which overrides
	GNULIB_SRCDIR, for consistency with gnulib bootstrap.

2010-02-24  Eric Blake  <eblake@redhat.com>

	Release Version 1.4.14.
	* gnulib: Update to latest.
	* README: Increase libsigsegv recommendation.
	* HACKING: Likewise.  Tweak release instructions.
	* NEWS: Mention the release.

	Improve parsing example.
	* doc/m4.texinfo (Input processing): Double-quote argument to
	translit, for robustness.
	* THANKS: Update.
	Reported by Chris Penev.

2010-01-29  Eric Blake  <ebb9@byu.net>

	Document upcoming release.
	* gnulib: Update to latest.
	* doc/m4.texinfo (History): Mention 1.4.14.

2010-01-06  Eric Blake  <ebb9@byu.net>

	Use correct license on auxiliary documentation.
	* gnulib: Update to latest.
	* AUTHORS: Use GFDL 1.3, not 1.2.
	* BACKLOG: Likewise.
	* README: Likewise.
	* THANKS: Likewise.
	* TODO: Likewise.
	* NEWS: Place under GFDL.
	* cfg.mk (old_NEWS_hash): Update.

2010-01-05  Eric Blake  <ebb9@byu.net>

	Remove more TAB characters.
	* THANKS: Use space for alignment.
	* bootstrap: Likewise.
	* checks/stackovf.test: Likewise.
	* configure.ac: Likewise.
	* src/builtin.c: Likewise.  Also update some stale comments.
	* src/debug.c: Likewise.
	* src/eval.c: Likewise.
	* src/format.c: Likewise.
	* src/freeze.c: Likewise.
	* src/input.c: Likewise.
	* src/m4.c: Likewise.
	* src/m4.h: Likewise.
	* src/macro.c: Likewise.
	* src/output.c: Likewise.
	* src/path.c: Likewise.
	* src/symtab.c: Likewise.

	Clarify minimum bootstrap requirements.
	* bootstrap: Avoid out-of-date duplicated data.

	Security fix by requiring newer automake features.
	* configure.ac (AM_INIT_AUTOMAKE): Add dist-xz, color-tests,
	parallel-tests, and silent-rules.
	(AC_PREREQ): Bump autoconf requirement to 2.62, per automake.
	* HACKING: Update minimum requirements.
	* NEWS: Document the fix.

	Drop hard-coding of GPG id.
	* gnulib: Update to latest.
	* m4/gnulib-cache.m4: Regenerate.
	* cfg.mk (gpg_key_ID): Delete, now that maint.mk provides a
	sensible default.
	(update-copyright-env): Don't let environment interfere with wrap
	column.

2010-01-01  Eric Blake  <ebb9@byu.net>

	Update copyright year.
	All files impacted, via 'make update-copyright'.  Additionally:
	* .gitignore: Ignore backup files.

2009-12-29  Eric Blake  <ebb9@byu.net>

	Document new indentation policy.
	* HACKING: Document indentation policy.
	* .x-sc_prohibit_tab_based_indentation: New file.
	* cfg.mk (sc_prohibit_tab_based_indentation): New rule.
	* Makefile.am (syntax_check_exceptions): New macro.
	(EXTRA_DIST): Distribute exception files, and .prev-version.

	Switch to indentation by space, not tab.
	* .gitmodules: Convert leading tabs to spaces.
	* TODO: Likewise.
	* bootstrap: Likewise.
	* c-boxes.el: Likewise.
	* checks/check-them: Likewise.
	* checks/get-them: Likewise.
	* checks/stackovf.test: Likewise.
	* configure.ac: Likewise.
	* src/builtin.c: Likewise.
	* src/debug.c: Likewise.
	* src/eval.c: Likewise.
	* src/format.c: Likewise.
	* src/freeze.c: Likewise.
	* src/input.c: Likewise.
	* src/m4.c: Likewise.
	* src/m4.h: Likewise.
	* src/macro.c: Likewise.
	* src/output.c: Likewise.
	* src/path.c: Likewise.
	* src/symtab.c: Likewise.

	Update to latest gnulib.
	* gnulib: Update.
	* m4/gnulib-cache.m4: Import xoset.
	* src/output.c (includes): Ensure that gnulib oset usage will
	call xalloc_die on memory failure.
	* build-aux/.cvsignore: Regenerate.
	* build-aux/.gitignore: Likewise.

2009-11-28  Eric Blake  <ebb9@byu.net>

	Work around BSD getopt bug.
	* gnulib: Update.
	* doc/m4.texinfo (Command line files): Add test.

	Use fastmap for better regex performance.
	* src/input.c (word_start): Delete.
	(pop_wrapup): Free memory on exit.
	(set_word_regexp): Compile a fastmap instead.
	(peek_token, next_token): Use the fastmap.

2009-11-26  Eric Blake  <ebb9@byu.net>

	Ignore write failures before stack overflow exit.
	* m4/gnulib-cache.m4: Import ignore-value module.
	* src/m4.c (fault_handler): Use it to avoid compiler warning.

2009-11-25  Eric Blake  <ebb9@byu.net>

	Allow use of compiler warnings.
	* m4/gnulib-cache.m4: Import manywarnings module.
	* configure.ac (WERROR_CFLAGS, WARN_CFLAGS): New variables.
	* src/Makefile.am (AM_CFLAGS): Use them.
	* Makefile.am (DISTCHECK_CONFIGURE_FLAGS): Turn on warnings during
	distcheck.
	* src/m4.h (M4_GNUC_NORETURN): New macro.
	(trace_post): Delete unused parameter.
	* src/m4.c (usage): Mark as noreturn.
	(main): Remove unused parameter.
	* src/debug.c (trace_post): Likewise.
	(trace_pre): Cover all enum values.
	* src/symtab.c (lookup_symbol): Likewise.
	* src/builtin.c (define_macro, m4_dumpdef): Likewise.
	(m4_define, m4_undefine, m4_pushdef, m4_popdef, m4_sysval)
	(m4_divert, m4_undivert, m4_dnl, m4_changequote, m4_changecom)
	(m4_changeword, m4_syscmd, m4_include, m4_sinclude, m4_m4exit)
	(m4_debugmode, m4_debugfile, m4_placeholder): Mark unused
	parameters.
	(mkstemp_helper): Use parameter.
	(substitute): Avoid signed vs. unsigned comparison.
	* src/format.c (arg_int, arg_long, arg_double): Likewise.
	* src/input.c (next_token): Likewise.
	* src/output.c (freeze_diversions): Likewise.
	(m4_tmpname): Allow C++ compilation.
	* src/freeze.c (produce_frozen_state, GET_NUMBER): Use correct
	type.
	* src/macro.c (call_macro): Cover all enum values.
	(expand_macro): Update caller.
	* src/path.c (m4_fopen): Remove unused parameter.
	(m4_path_search): Update caller.

	Silence syntax-check warnings.
	* src/m4.h (STREQ): New macro.
	* src/builtin.c (find_builtin_by_name): Use it.
	* src/input.c (set_word_regexp): Likewise.
	* src/m4.c (process_file): Likewise.
	(main): Consistently spell warning, and mark output strings.
	Avoid unsafe parsing functions.
	(process_file): Mark output strings.
	* src/output.c (make_diversion): Likewise.
	* src/format.c (arg_int, arg_long, arg_double): New helpers.
	(ARG_INT, ARG_LONG, ARG_DOUBLE): Use them to detect parse errors.
	* BACKLOG: Avoid whitespace problems.
	* TODO: Likewise.
	* HACKING: Likewise.
	* examples/esyscmd.m4: Likewise.
	* examples/file.m4: Likewise.
	* examples/fstab.m4: Likewise.
	* examples/patsubst.m4: Likewise.

	Use gnulib maintainer-makefile module.
	* m4/gnulib-cache.m4: Import maintainer-makefile module.
	* cfg.mk (local-checks-to-skip): Drop changelog-check; add
	sc_cast_of_x_alloc_return_value.
	(gnulib_dir, gnu_rel_host, url_dir_list): Delete; provided by
	maint.mk.
	(config_h_header, old_NEWS_hash): New macros.
	* .prev-version: New file.
	* maint.mk: Remove from version control; use gnulib instead.
	* .gitignore: Update.
	* HACKING: Update.

	Update from gnulib.
	* gnulib: Update.
	* m4/gnulib-cache.m4: Use --makefile-name.
	* lib/Makefile.am: Wrap the gnulib-generated file.
	* tests/Makefile.am: Likewise.
	* .gitignore: Track our wrappers.
	* doc/m4.texinfo (Improved capitalize): Fix typo.

2009-10-05  Eric Blake  <ebb9@byu.net>

	Update from gnulib.
	* gnulib: Update.
	* m4/gnulib-cache.m4: Import gnu-web-doc-update module.
	* build-aux/.gitignore: Ignore new file.
	* build-aux/.cvsignore: Likewise.

2009-08-20  Eric Blake  <ebb9@byu.net>

	Update from gnulib.
	* gnulib: Update.
	* AUTHORS: Mention recent copyright assignment.

2009-08-17  Eric Blake  <ebb9@byu.net>

	Enhance test with closed descriptors.
	* doc/m4.texinfo (Command line files): Enhance test from
	2009-07-20 to actually test the bug being fixed.

	Update copyright year.
	* AUTHORS: Run UPDATE_COPYRIGHT_FORCE=1 make update-copyright.
	* BACKLOG: Likewise.
	* Makefile.am: Likewise.
	* TODO: Likewise.
	* acinclude.m4: Likewise.
	* c-boxes.el: Likewise.
	* cfg.mk: Likewise.
	* checks/Makefile.in: Likewise.
	* checks/check-them: Likewise.
	* checks/stackovf.test: Likewise.
	* doc/Makefile.am: Likewise.
	* examples/Makefile.am: Likewise.
	* src/Makefile.am: Likewise.
	* src/debug.c: Likewise.
	* src/eval.c: Likewise.
	* src/freeze.c: Likewise.
	* src/m4.h: Likewise.
	* src/macro.c: Likewise.
	* src/path.c: Likewise.
	* src/symtab.c: Likewise.

	Prepare to bulk update copyright year.
	* gnulib: Update.
	* m4/gnulib-cache.m4: Import update-copyright and vc-list-files
	modules.
	* maint.mk: Fix copyright.
	(build_aux, VC_LIST, VC_LIST_EXCEPT, update-copyright): New macros
	and rules borrowed from gnulib.
	* cfg.mk (update-copyright-env): Enforce longhand behavior.
	* .cvsignore: Reflect these changes.
	* .gitignore: Likewise.
	* .x-update-copyright: New file.

2009-08-14  Eric Blake  <ebb9@byu.net>

	Explicitly request GNU getopt extensions.
	* gnulib: Update.
	* m4/gnulib-cache.m4: Use getopt-gnu, not obsolete getopt module.

2009-07-22  Eric Blake  <ebb9@byu.net>

	Fix testsuite on Solaris.
	* doc/m4.texinfo (Command line files): Tolerate different spelling
	of EBADF.
	* src/builtin.c (m4_esyscmd): Clear errno before reaping.

2009-07-21  Eric Blake  <ebb9@byu.net>

	Fix testsuite on mingw.
	* gnulib: Update.

2009-07-20  Eric Blake  <ebb9@byu.net>

	Pick up gnulib fixes for sub-process execution.
	* gnulib: Update.
	* doc/m4.texinfo (Command line files): Add test; regression
	introduced 2009-03-05.
	* NEWS: Document the change.

	Avoid cygwin 1.7 crash with closed stdout.
	* gnulib: Update.
	* doc/m4.texinfo (Command line files): Add test; regression
	introduced 2008-07-17.
	* NEWS: Document the change.

	A status of 127 does not always imply esyscmd failure.
	* src/builtin.c (m4_esyscmd): Silence gnulib message; regression
	introduced 2009-03-05.
	* doc/m4.texinfo (Sysval): Test this.
	* NEWS: Document the change.

2009-06-25  Eric Blake  <ebb9@byu.net>

	Fix description of limits on diversions.
	* doc/m4.texinfo (Diversions): Fix grammar.  Be less pessimistic
	about limitations.
	* THANKS: Update.
	Reported by Elias Benali.

2009-06-17  Eric Blake  <ebb9@byu.net>

	Update to latest gnulib.
	* gnulib: Import fixes for Interix compilation.
	* THANKS: Update.
	Reported by Jay Krell.

2009-05-22  Eric Blake  <ebb9@byu.net>

	Update to latest gnulib.
	* gnulib: Import fixes for AIX compilation.
	* THANKS: Update.
	Reported by Jens Rehsack.

2009-04-13  Eric Blake  <ebb9@byu.net>

	Fix GFDL usage.
	* doc/m4.texinfo (copying): Complete transition to GFDL 1.3,
	started 2008-12-12.
	Reported by Santiago Vila.

2009-04-01  Eric Blake  <ebb9@byu.net>

	Release Version 1.4.13.
	* NEWS: Mention the release.

2009-03-31  Eric Blake  <ebb9@byu.net>

	Tweak submodule instructions.
	* HACKING: Improve directions.
	* gnulib: Update to latest version.

2009-03-23  Eric Blake  <ebb9@byu.net>

	Don't force file overwrites during bootstrap.
	* bootstrap: Ensure that rerunning bootstrap doesn't alter tree.

	Drop dist-lzma, now that xz replaces lzma.
	* configure.ac (AM_INIT_AUTOMAKE): Drop dist-lzma.  Until a stable
	automake release includes dist-xz, the release process will just
	manually create a .xz tarball.
	* gnulib: Update to latest gnulib.

2009-03-19  Eric Blake  <ebb9@byu.net>

	Exploit git submodule by adding appropriate symlinks.
	* bootstrap: No longer copy files from gnulib.
	* COPYING: Change to symlink pointing into gnulib.
	* INSTALL: Likewise.
	* build-aux/compile: Likewise.
	* build-aux/config.guess: Likewise.
	* build-aux/config.sub: Likewise.
	* build-aux/depcomp: Likewise.
	* build-aux/install-sh: Likewise.
	* build-aux/mdate-sh: Likewise.
	* build-aux/missing: Likewise.
	* build-aux/texinfo.tex: Likewise.
	* .cvsignore: Reflect these changes.
	* .gitignore: Likewise.
	* build-aux/.cvsignore: New file.
	* build-aux/.gitignore: Likewise.

2009-03-18  Eric Blake  <ebb9@byu.net>

	Make gnulib a git submodule.
	* .gitmodules: New file.
	* gnulib: Record which version of gnulib has been tested.
	* bootstrap: Aid in submodule usage.
	* cfg.mk (gnulib_dir): Alter default location of gnulib.
	* HACKING: Mention how to use submodule.

	Use latest compile script, even with stable automake.
	* bootstrap: Also sync build-aux/compile.

2009-03-12  Eric Blake  <ebb9@byu.net>

	Fix awk script portability.
	* checks/get-them: In gsub, properly escape {.  Close all files
	before exiting.
	Reported by Gary V. Vaughan.

2009-03-05  Eric Blake  <ebb9@byu.net>

	Allow configuration choice in syscmd shell.
	* configure.ac (SYSCMD_SHELL): New test.
	* src/builtin.c (m4_syscmd, m4_esyscmd): Use it to avoid
	hard-coding the shell location.
	* doc/m4.texinfo (Syscmd, Esyscmd): Document this.
	* README: Document new configure option.
	* NEWS: Likewise.

	Remove cruft now that gnulib modules do the work.
	* configure.ac (M4_cv_func_system_consistent): Delete.
	* src/builtin.c (M4SYSVAL_EXITBITS, M4SYSVAL_TERMSIGBITS):
	Delete.

	Use gnulib pipe module instead of popen(3).
	* m4/gnulib-cache.m4: Import pipe and wait-process modules.
	* src/builtin.c (m4_esyscmd): Rewrite with pipe module.
	Resolves a failure on AIX, reported by Gary V. Vaughan.

	Use gnulib execute module instead of system(3).
	* m4/gnulib-cache.m4: Import execute module.
	* src/builtin.c (m4_sysval): Move computation...
	(m4_esyscmd): ...into caller.
	(m4_syscmd): Rewrite with execute module.
	Resolves a failure on AIX, reported by Gary V. Vaughan.

2009-03-03  Eric Blake  <ebb9@byu.net>

	Try to tolerate spaces in directory names in testsuite.
	* doc/m4.texinfo (Diversions, Using frozen files): Provide shell
	quoting, in case __program__ contains spaces.

	Improve web-manual maintainer rule.
	* maint.mk (web-manual): Work with VPATH builds.  Factor
	package-specific detail...
	* cfg.mk (manual_title): ...to new variable.

2009-02-26  Eric Blake  <ebb9@byu.net>

	Make bootstrap easier on Solaris.
	* bootstrap: Add GNULIB_SRCDIR.  Useful when a wrapper script
	gnulib-tool exists earlier on the path to work around /bin/sh
	failure in parsing $GNULIB_SRCDIR/gnulib-tool.

2009-02-19  Eric Blake  <ebb9@byu.net>

	Fix regression in translit.
	* src/builtin.c (m4_translit): Use correct comparison.
	* doc/m4.texinfo (Translit): Enhance test.

	Speed up input engine, by searching for quotes by buffer.
	* src/input.c (struct input_block): Add end pointer to string.
	(push_string_finish, push_wrapup): Populate it.
	(next_token): For quotes, attempt a buffer search.
	* NEWS: Document this.

2009-02-18  Eric Blake  <ebb9@byu.net>

	Speed up translit when from argument is short.
	* m4/gnulib-cache.m4: Import memchr2 module.
	* src/builtin.c (m4_translit): Use memchr2 when possible.
	* doc/m4.texinfo (Translit): Add tests.
	* NEWS: Document this.

	Update copyright year.
	* THANKS: Mention 2009 in copyright year.

	Prefer buffer over byte operations.
	* src/format.c (expand_format): Use strchr for speed.
	* src/builtin.c (substitute, expand_user_macro): Likewise.

	Speed up esyscmd with buffer reads.
	* src/builtin.c (m4_esyscmd): Read blocks directly into obstack,
	rather than repeatedly reading bytes.  Detect read errors.

	Avoid risk of stack overflow.
	* src/output.c (insert_file): Avoid stack allocation of large
	buffer.
	(freeze_diversions): Avoid spurious semicolon.

2009-02-16  Eric Blake  <ebb9@byu.net>

	Avoid test failure due to different errno.
	* doc/m4.texinfo (Using frozen files): Ignore stdout, since
	hardened systems can prevent attempts to read /.
	* THANKS: Update.
	Reported by Ronny Peine, in Gentoo bug 259184.

	Avoid tests that make no sense, because m4 is single-threaded.
	* m4/gnulib-cache.m4: Avoid lock-tests and tls-tests.

2009-02-12  Eric Blake  <ebb9@byu.net>

	Avoid quadratic code when walking definition stack.
	* examples/stack_sep.m4: Use linear, not quadratic
	implementation.
	* doc/m4.texinfo (Improved copy): Fix documentation and add test,
	based on recent autoconf bug fix.

2009-01-24  Eric Blake  <ebb9@byu.net>

	Add URLs to --help output.
	* src/m4.c (usage): Use enhanced version-etc features.

2009-01-02  Eric Blake  <ebb9@byu.net>

	Use nicer email address in web manual.
	* maint.mk (web-manual): Use new option in gendocs.sh.

	Nuke xdelta diffs at release time; no one reported using them.
	* maint.mk (got-xdelta, delta-xdelta): Delete.
	* HACKING: Likewise.

2009-01-01  Eric Blake  <ebb9@byu.net>

	Update copyright year.
	* NEWS: M4 1.4.13 will occur in 2009.
	* doc/m4.texinfo (History): Likewise.

2008-12-24  Eric Blake  <ebb9@byu.net>

	Prepare for eventual release.
	* doc/m4.texinfo (History): Mention 1.4.13.

2008-12-22  Eric Blake  <ebb9@byu.net>

	Make --debugfile argument optional.
	* src/builtin.c (m4_debugfile): Make error message consistent.
	* src/m4.c (long_options): Make the argument optional, to allow
	setting debug file back to stderr.
	(main): Make --debugfile order-dependent.
	(usage): Document this.
	* doc/m4.texinfo (Debugging options): Likewise.
	* NEWS: Likewise.

	Use @var correctly.
	* doc/m4.texinfo (Operation modes, Preprocessor features)
	(Limits control, Frozen state, Debugging options): Use lower case
	names in @var.
	(Improved copy): Use @code, not @var, as appropriate.

2008-12-18  Eric Blake  <ebb9@byu.net>

	Document optimized forloop.
	* doc/m4.texinfo (Improved forloop): Mention alternate style that
	avoids define overhead.
	* examples/forloop3.m4: New file.
	* examples/Makefile.am (EXTRA_DIST): Distribute it.

	Deal with M4 1.4.x limitation on builtin tokens.
	* doc/m4.texinfo (Composition): Mention limitation on curry.
	(Improved copy): New node.
	* examples/stack_sep.m4: New file.
	* examples/Makefile.am (EXTRA_DIST): Distribute it.

	Document copy composite using stack_foreach and curry.
	* doc/m4.texinfo (Stacks): New node, to document pushdef stack
	manipulation.
	(Ifelse): Move define_blind...
	(Composition): ...to this new node.  Document currying, then use
	it to implement copy and rename.
	* examples/curry.m4: New file.
	* examples/stack.m4: Likewise.
	* examples/Makefile.am (EXTRA_DIST): Distribute them.

2008-12-17  Eric Blake  <ebb9@byu.net>

	Don't override signal handlers installed by c-stack.
	* src/m4.c (main): Reorder installation of signal handlers, so we
	don't trash a SIGBUS handler installed by c-stack.  Also provide a
	SIGSEGV fallback, for platforms where c-stack combined with
	libsigsegv uses something lower level than SIGSEGV.

2008-12-12  Eric Blake  <ebb9@byu.net>

	Double size of temp file cache.
	* src/output.c (tmp_file, tmp_file_owner): Split...
	(tmp_file1, tmp_file2, tmp_file1_owner, tmp_file2_owner): ...into
	two variables.
	(tmp_file2_recent): New variable.
	(m4_tmpopen, m4_tmpclose, m4_tmpremove, m4_tmprename)
	(output_exit): Adjust callers.

	Use fewer seeks on cached files.
	* src/output.c (m4_tmpfile): Use write, not append mode.
	(m4_tmpopen): Add parameter to decide when to skip seeks.
	(m4_tmprename, make_diversion, insert_diversion_helper)
	(freeze_diversions): Adjust callers.

	Cache most recently spilled diversion.
	* src/output.c (tmp_file, tmp_file_owner): New variables, for
	1-deep cache of spilled diversions.
	(m4_tmpfile): Open in append mode, since we might revisit
	diversion without closing it now.
	(m4_tmpopen): Check cache first.
	(m4_tmpclose): Update cache, rather than closing.  Add parameter.
	(m4_tmpremove): Close cache before removing.
	(m4_tmprename): Deal with open files when renaming.
	(output_exit): Close cache before exiting.
	(make_room_for, make_diversion, insert_diversion_helper): Adjust
	callers.
	* configure.ac (RENAME_OPEN_FILE_WORKS): New configure test.

	Correctly track size of in-memory diversions.
	* src/output.c (insert_diversion_helper): Correctly track total
	in-memory diversion size after undivert.

	Avoid quadratic behavior for some cases of divert/undivert.
	* src/output.c (struct m4_diversion): Improve comments.
	(m4_tmpname, make_diversion): Strengthen preconditions.
	(m4_tmprename): New function.
	(output_init, output_exit): Move after internal functions.
	(make_room_for): Don't bother copying uninitialized bytes.
	(insert_diversion_helper): Transfer metadata, rather than copying
	contents, when undiverting into a previously unused diversion.
	* src/m4.h (includes): Add assert.h.
	* doc/m4.texinfo (Diversions): Add test.
	(Undivert): Enhance test.
	* NEWS: Document the speedup.

2008-12-12  Eric Blake  <ebb9@byu.net>

	Upgrade to FDL 1.3, keep COPYING in repository.
	* Makefile.am (MAINTAINERCLEANFILES): Don't remove COPYING.
	* .cvsignore: Don't ignore it.
	* .gitignore: Likewise.
	* COPYING: Store in repository, per automake 1.10.2
	recommendation.
	* m4/gnulib-cache.m4: Replace fdl module with fdl-1.3.
	* doc/m4.texinfo (GNU Free Documentation License): Upgrade
	license.
	* doc/Makefile.am (m4_TEXINFOS): Likewise.
	* NEWS: Mention the documentation license change.

2008-10-10  Eric Blake  <ebb9@byu.net>

	Release Version 1.4.12.
	* NEWS: Mention the release.

2008-10-06  Eric Blake  <ebb9@byu.net>

	Work around Solaris' sed inability to process NUL.
	* checks/check-them (SED): Allow user to override.

2008-09-25  Eric Blake  <ebb9@byu.net>

	Tweak error message on command line failure.
	* src/m4.c (process_file): Match wording of include builtin.
	* src/freeze.c (produce_frozen_state): Likewise.
	* m4/gnulib-cache.m4: Regenerate.
	* doc/m4.texinfo (Command line files, Using frozen files): Update
	tests accordingly.

2008-09-24  Eric Blake  <ebb9@byu.net>

	Unify error handling for reading directories.
	* src/path.c (m4_path_search): Factor open attempts...
	(m4_fopen): ...into new function, to reject directories.
	* doc/m4.texinfo (Include): Document that directories cannot be
	input files.

	Avoid bugs on platforms that mishandle trailing /.
	* m4/gnulib-cache.m4: Import fopen module.
	* doc/m4.texinfo (Command line files, Include): Add tests.
	(Using frozen files): This test now works on mingw.
	* checks/check-them (examples): Expand xerr to allow ignoring
	error output because of differences in platform errno values.

2008-09-22  Eric Blake  <ebb9@byu.net>

	Support alternate path separator.
	* m4/gnulib-cache.m4: Import dirname and filenamecat modules.
	* src/m4.h (includes): Add headers.
	* src/path.c (m4_path_search): Avoid literal use of '/' as path
	separator and when detecting absolute paths.

2008-09-16  Eric Blake  <ebb9@byu.net>

	Fix bootstrap for Solaris /bin/sh.
	* bootstrap: Avoid shell quoting pitfall.

2008-09-01  Eric Blake  <ebb9@byu.net>

	Fix building with -DDEBUG=1.
	* src/input.c (lex_debug) [DEBUG_INPUT]: Fix compilation failure.
	* src/symtab.c (symtab_debug) [DEBUG_SYM]: Likewise.
	* src/m4.c (includes) [DEBUG_STKOVF]: Likewise.
	Reported by Tom G. Christensen.

2008-09-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Typos in source code comments.
	* src/builtin.c: Fix typos in comments.
	* src/input.c: Likewise.

2008-08-29  Eric Blake  <ebb9@byu.net>

	Fix manual date information.
	* doc/m4.texinfo: UPDATED refers to the day the manual was built,
	not the release date of M4.
	Based on a bison patch by Akim Demaille.

2008-08-27  Eric Blake  <ebb9@byu.net>

	Fix typo.
	* doc/m4.texinfo (Invoking m4): 'm4 -d+f' is not supported in this
	branch.

2008-08-25  Eric Blake  <ebb9@byu.net>

	Update recommendation now that libsigsegv 2.6 is released.
	* NEWS: Recommend libsigsegv 2.6+.
	* README: Likewise.

2008-08-21  Eric Blake  <ebb9@byu.net>

	Fix crash with traced defn(undef), regression from 2007-08-09.
	* src/builtin.c (m4_defn): Handle traced but undefined macros.
	* doc/m4.texinfo (Trace): Test it.
	* NEWS: Document it.

2008-08-18  Eric Blake  <ebb9@byu.net>

	Fix crash with 'm4 -N9', regression from 2006-09-14.
	* src/m4.c (main): Add missing break.
	* NEWS: Document it.

2008-08-15  Eric Blake  <ebb9@byu.net>

	Documentation updates.
	* doc/m4.texinfo (History): Mention 1.4.12.
	(Builtin): Enhance regression tests.
	(Debug Levels): Mention effect of -l.  Enhance regression tests.
	(Incompatibilities): Fix typo, and mention trace output.
	(Improved capitalize): Simplify example.

	Avoid compiler warning.
	* src/builtin.c (m4_ifelse): Avoid unused variable.
	* THANKS: Update.
	Reported by Tom G. Christensen.

	Improve 'git diff' of manual source.
	* .gitattributes (*.texi*): Add diff attribute.
	* bootstrap: Tell git how to use it.
	Inspired by Jim Meyering's similar patch for coreutils.

2008-08-11  Eric Blake  <ebb9@byu.net>

	Avoid triggering OS/2 bug in testsuite.
	* doc/m4.texinfo (Mkstemp): Don't assume test(1) status is 1.
	Reported by Elbert Pol.

2008-08-03  Eric Blake  <ebb9@byu.net>

	Increase ulimit stack value to be larger than SIGSTKSZ.
	* checks/stackovf.test (tmpfile): Use 300K rather than 50K, since
	at least OpenBSD's sh died early from an undersized stack limit.

2008-07-17  Eric Blake  <ebb9@byu.net>

	Remove redundant examples/stackovf.sh.
	* examples/stackovf.sh: Delete, now that checks has better
	version.
	* examples/Makefile.am (EXTRA_DIST): Don't distribute it.

2008-07-17  Eric Blake  <ebb9@byu.net>

	Adjust to c-stack changes in gnulib.
	* src/Makefile.am (m4_LDADD): Use libsigsegv when available and
	necessary, via LIBCSTACK.
	* src/m4.c (main) [DEBUG_STACKOVF]: Make it easier to test fault
	handlers.
	* checks/stackovf.test: New file.
	* checks/Makefile.in (CHECKS): Add stackovf.test, and factor...
	(DOC_CHECKS): ...generated documentation tests into new macro.
	(DISTFILES): Distribute stackovf.test.
	* checks/check-them: Special-case stackovf.test.
	* NEWS: Enhance the NEWS item for -L improvements.
	* README: Mention the optional dependency.
	* HACKING: Mention maintenance burden added by libsigsegv.

2008-06-21  Eric Blake  <ebb9@byu.net>

	Use new sigaction module.
	* m4/gnulib-cache.m4: Import sigaction module.
	* src/m4.c (main): Drop signal() calls.

2008-06-18  Eric Blake  <ebb9@byu.net>

	Also trap SIGILL, SIGFPE, SIGBUS.
	* m4/gnulib-cache.m4: Import strsignal module.
	* src/m4.c (main): Register more handlers, and prefer sigaction
	when available.
	(SIGBUS, NSIG): Provide fallback when lacking.
	(signal_message): New variable, to keep async-safety.
	(fault_handler): Display faulting signal description.
	* configure.ac (gl_DISABLE_THREADS): Request gnulib modules to
	optimize for single-threaded operation.

2008-06-06  Eric Blake  <ebb9@byu.net>

	Inform users what to do in case of programmer error.
	* src/m4.h (EXIT_INTERNAL_ERROR): New macro.
	* configure.ac (AC_TYPE_SIGNAL): Delete, now that we assume C89.
	* src/m4.c (fault_handler): New method.
	(program_error_message): New variable, for async-safety.
	(main): Print bug reporting address rather than dump core on any
	failed assertions or detected non-stack-overflow faults.

2008-06-06  Eric Blake  <ebb9@byu.net>

	Replace stackovf with gnulib c-stack.
	* m4/gnulib.cache.m4: Import c-stack module.
	* configure.ac (AC_CHECK_HEADERS_ONCE): Remove check for
	siginfo.h, sys/wait.h.
	(AC_CHECK_TYPES): Likewise for siginfo_t.
	(AC_CHECK_MEMBERS): Likewise for sa_sigaction, ss_sp.
	(AC_CHECK_FUNCS_ONCE): Likewise for sigaction, sigaltstack,
	sigstack, sigvec, strerror.
	(M4_cv_use_stackovf): Likewise for stack overflow detection.
	* src/Makefile.am (m4_SOURCES): Don't build stackovf.c.
	* src/stackovf.c: Delete.
	* src/m4.h (setup_stackovf_trap): Delete.
	* src/m4.c (stackovf_handler): Delete.
	(main): Use c_stack_action instead of setup_stackovf_trap.  If
	stack overflow is detectable, don't limit -L artificially.
	(usage): Document unlimited default on supported systems.
	* doc/m4.texinfo (Limits control): Document new default nesting
	limit.
	* NEWS: Document this change.

2008-07-30  Eric Blake  <ebb9@byu.net>

	Avoid regressions in trace and comment output.
	* doc/m4.texinfo (Trace): Add test.
	(Comments): Likewise.

2008-07-28  Eric Blake  <ebb9@byu.net>

	Optimize iteration examples.
	* examples/forloop2.m4: Avoid excess indir, by passing current
	counter value as parameter.
	* examples/foreachq3.m4: Avoid unneeded ifelse, by injecting an
	ignored argument.
	* doc/m4.texinfo (Improved forloop, Improved foreach): Update the
	documentation to match.

2008-07-26  Eric Blake  <ebb9@byu.net>

	Give example for O(n) foreach on m4 1.4.x.
	* examples/foreachq4.m4: New file.
	* examples/Makefile.am (EXTRA_DIST): Distribute it.
	* doc/m4.texinfo (Improved foreach): Document linear foreach with
	m4 1.4.5 and greater.

2008-07-17  Eric Blake  <ebb9@byu.net>

	Fix missing copyright notices.
	* acinclude.m4: Add copyright license details.
	* c-boxes.el: Likewise.
	* checks/get-them: Likewise.
	* checks/check-them: Likewise.

2008-07-13  Eric Blake  <ebb9@byu.net>

	Add -g/--gnu command line argument.
	* src/m4.c (usage): Mention the new option.
	(long_options, OPTSTRING): Add new option.
	(main): Use it.
	* NEWS: Document this addition.
	* doc/m4.texinfo (Limits control): Likewise.
	(Incompatibilities): Mention future use of POSIXLY_CORRECT.
	* THANKS: Update.
	Reported by Joel E. Denny.

2008-07-11  Eric Blake  <ebb9@byu.net>

	Avoid bogus whitespace in @ovar, @dvar.
	* doc/m4.texinfo (ovar, dvar): Add @c.
	Based on patch by Ralf Wildenhues to Autoconf manual.

2008-06-16  Eric Blake  <ebb9@byu.net>

	Add missing const qualifications.
	* src/builtin.c (builtin_tab): Declare array elements as const.

2008-06-03  Eric Blake  <ebb9@byu.net>

	Use progname module rather than rolling our own program_name.
	* m4/gnulib-cache.m4: Import progname module.
	* src/m4.c (program_name): Replace...
	(main): ...with a call to set_program_name.

2008-06-02  Eric Blake  <ebb9@byu.net>

	Allow autobuild usage.
	* m4/gnulib.cache: Import autobuild module.

2008-05-23  Eric Blake  <ebb9@byu.net>

	Make closing files be consistent.
	* src/freeze.c (reload_frozen_state): Use close_stream.
	Reported by Jean-Charles Longuet.

2008-05-22  Eric Blake  <ebb9@byu.net>

	Don't allow failure to freeze give exit status of 0.
	* src/freeze.c (produce_frozen_state): Guarantee non-zero exit on
	fopen failure.
	* doc/m4.texinfo (Using frozen files): Test the fix.
	* THANKS: Update.
	Reported by Jean-Charles Longuet.

2008-05-09  Eric Blake  <ebb9@byu.net>

	Improve error message when frozen file is invalid.
	* src/freeze.c (reload_frozen_state): Track current line.
	[GET_STRING]: New helper macro.

2008-05-09  Eric Blake  <ebb9@byu.net>

	Detect integer overflow when loading frozen file.
	* src/m4.h (includes): Add limits.h.
	(_): Define as a no-op placeholder for now.
	* src/freeze.c (reload_frozen_state) [GET_NUMBER]: Rewrite to fail
	immediately on overflow.
	Reported by Jim Meyering.

2008-05-07  Eric Blake  <ebb9@byu.net>

	Fix traceon regression introduced 2006-06-06.
	* src/builtin.m4 (traceon): Only perform insertion if lookup
	fails.
	* doc/m4.texinfo (Trace): Test for the bug.
	* NEWS: Document it.

2008-05-03  Eric Blake  <ebb9@byu.net>

	Document define_blind.
	* doc/m4.texinfo (Ifelse): Add a new composite macro.
	* THANKS: Update.
	Suggested by Mike R.

2008-04-24  Eric Blake  <ebb9@byu.net>

	Add debugmode test.
	* doc/m4.texinfo (Debug Levels): Test -di behavior.
	(Changeword, Location): Correct examples.
	* checks/check-them (examples): Update to account for recommended
	location for running tests.
	* doc/m4.texinfo (Debug Levels): Test this behavior.

2008-04-21  Eric Blake  <ebb9@byu.net>

	Fix spelling of attribution to Christopher Strachey.
	* doc/m4.texinfo (History, Inhibiting Invocation): Fix typo.
	* THANKS: Update.
	Reported by Fernando Carrijo.

2008-04-17  Eric Blake  <ebb9@byu.net>

	Fix buildbot failure.
	* doc/m4.texinfo (Diversions): Consume all of m4's output, in case
	SIGPIPE is ignored.
	* THANKS: Update.
	Detected by Bob Proulx's buildbot.

2008-04-17  Eric Blake  <ebb9@byu.net>

	Avoid gcc shadowing warnings.
	* src/builtin.c (m4_format): s/format/expand_format, so local
	variables can be named format.
	* src/format.c (format): Rename...
	(expand_format): ...to this, and avoid the name index.
	* src/input.c (push_file): Avoid the name close.
	* src/m4.h (expand_format): Adjust prototype.
	* src/output.c (threshold_diversion_CB): Avoid the name div.

2008-04-15  Eric Blake  <ebb9@byu.net>

	Another 'make installcheck' fix.
	* doc/m4.texinfo (Diversions): s/m4/__program__/ in case
	--program-prefix was active.

2008-04-11  Eric Blake  <ebb9@byu.net>

	Ensure --program-prefix doesn't regress.
	* Makefile.am (DISTCHECK_CONFIGURE_FLAGS): Enforce change from
	2008-03-10 by testing it at 'make distcheck' time.

2008-04-11  Eric Blake  <ebb9@byu.net>

	Improve OS/2+emx build.
	* src/m4.h [__EMX__]: OS/2 does not have a Unix-compatible
	system(3), no matter what other macros it pre-defined.
	* doc/m4.texinfo (Mkstemp): Rework test to avoid globbing failure
	on OS/2.
	* src/builtin.c (predefined_tab): Ensure all possible system
	identifiers are defined, not just the first; the testsuite will
	catch if multiple identifiers mistakenly made it through.
	* THANKS: Update.
	Reported by Elbert Pol.

2008-04-09  Eric Blake  <ebb9@byu.net>

	Remove redundant configure macros.
	* configure.ac (AC_CANONICAL_BUILD, AC_CANONICAL_HOST)
	(AC_SYS_LARGEFILE, AC_TYPE_SIZE_T): Delete, since gnulib does
	this.
	(AC_CHECK_HEADERS_ONCE): Remove limits.h.

2008-08-07  Bruno Haible  <bruno@clisp.org>  (tiny change)

	Run m4 tests prior to gnulib unit tests.
	* Makefile.am (SUBDIRS): Swap order of directories.

2008-04-02  Eric Blake  <ebb9@byu.net>

	Release Version 1.4.11.
	* NEWS: Mention the release.

	Prepare for release.
	* maint.mk (alpha): Check for PREV_VERSION setting sooner, and
	remove tag operation.
	(version-check): Enhance this check.
	(prev-tarball): Depend on version-check.
	(this-vc-tag): Delete, and mention need to run tag...
	* HACKING: ...here, prior to make maintainer-distcheck.
	Update the instructions to match this particular release process.
	* Makefile.am (.version, announcement): Allow for VPATH build.
	* cfg.mk (gnulib_dir): Likewise.
	* doc/Makefile.am ($(srcdir)/m4.1): Include release number in man
	page.

2008-04-01  Eric Blake  <ebb9@byu.net>

	Speed up index builtin.
	* m4/gnulib-cache: Import strstr module.
	* NEWS: Mention the speedup.

2008-03-29  Eric Blake  <ebb9@byu.net>

	Fix testsuite on mingw, OpenBSD.
	* src/format.c (ARG_DOUBLE): Use strtod, not atof.
	* src/Makefile.am (m4_LDADD): Use POW_LIB when needed.
	* doc/m4.texinfo (Format): Add hex-float support.
	* NEWS: Document this.

2008-03-27  Eric Blake  <ebb9@byu.net>

	Pull other useful doc fixes from branch-1.6.
	* doc/m4.texinfo (Arguments): Enable test of
	--warn-macro-sequence.
	(Defn): Test length of builtin token.
	(Builtin, Ifelse, Changequote): Add more regression tests.

2008-03-27  Eric Blake  <ebb9@byu.net>

	Add test for divert bug on 2007-05-28, patched 2007-07-21.
	* doc/m4.texinfo (Diversions): Add test.

2008-03-24  Eric Blake  <ebb9@byu.net>

	Pull GNUmakefile from gnulib.
	* m4/gnulib-cache.m4: Import gnumakefile module.
	* GNUmakefile: Remove from version control; supplied by gnulib
	instead.
	* configure.ac (AC_INIT): Track intra-release version with
	git-version-gen.
	(AC_CONFIG_LINKS): Let gnulib do this now.
	* Makefile.am (distclean-local): Likewise.
	(EXTRA_DIST): Likewise.  Also handle renamed files.
	* (.version, dist-hook): Improve version handling.
	* Makefile.cfg: Rename...
	* cfg.mk: ...to this.
	* Makefile.maint: Rename...
	* maint.mk: ...to this.
	(ME, makefile-check, m4-check): Use new macro instead of
	hard-coded name.
	* HACKING: Mention that maintainer rules should now work in VPATH
	builds.

2008-03-15  Eric Blake  <ebb9@byu.net>

	Document join, in order to fix bug in m4wrap example.
	* doc/m4.texinfo (Improved m4wrap): New node.
	(Defn, Location): Enhance tests.
	(Shift): Document the composite macro join.
	(Incompatibilities): Move documentation of LIFO vs. FIFO...
	(M4wrap): ...here, to match improved example.

2008-03-10  Eric Blake  <ebb9@byu.net>

	Allow 'make installcheck' with './configure --program-prefix'.
	* checks/Makefile.in (program_transform_name): New macro.
	(installcheck): Use it to transform name of m4 before testing.
	* checks/check-them (m4): Add -m option, to allow testing m4 by a
	different name.
	* checks/get-them: Allow xout and xerr notation.

2008-02-25  Eric Blake  <ebb9@byu.net>

	Improve release process.
	* configure.ac (AM_INIT_AUTOMAKE): Increase requirement, and add
	dist-lzma.
	* HACKING: Update for git release procedures.
	* Makefile.cfg: New file.
	* GNUmakefile: Use it.
	* Makefile.maint (gzip_rsyncable, GZIP_ENV, GIT, VC, VC-tag)
	(VERSION_REGEXP, this-vc-tag, my_distdir, null_AM_MAKEFLAGS)
	(TMPDIR, gnulib-version): New macros, borrowed from coreutils.
	(makefile-check, news-date-check, changelog-check, m4-check)
	(vc-diff-check, maintainer-distcheck, vc-dist, my-distcheck)
	(announcement, alpha, beta, major): New rules, borrowed from
	coreutils.
	(TEXI2HTML, cvs-release, update-timestamps, cvs-news, cvs-commit)
	(cvs-dist): Delete.
	* Makefile.am (EXTRA_DIST): Distribute new file.

2008-02-19  Eric Blake  <ebb9@byu.net>

	Clean up foreach example.
	* doc/m4.texinfo (Foreach, Improved foreach): Document another
	shortcoming in foreach.m4.

2008-02-16  Eric Blake  <ebb9@byu.net>

	Add regression test for multi-character quote recursion.
	* examples/foreach2.m4: Use $0 rather than spelling out name.
	* examples/foreachq2.m4: Likewise.
	* examples/forloop2.m4: Likewise.
	* examples/hanoi.m4: Likewise.
	* examples/trace.m4: Likewise.
	* doc/m4.texinfo (Improved forloop): Document advantage of $0.
	(Improved foreach): Adjust dump from file.

2008-02-13  Eric Blake  <ebb9@byu.net>

	Fix texinfo grammar.
	* doc/m4.texinfo (Incompatibilities): Use @. after capital.
	(History): Use @: after abbreviations.
	(M4exit): Use correct Latin abbreviation.

2008-02-11  Eric Blake  <ebb9@byu.net>

	Document behavior of __gnu__().
	* doc/m4.texinfo (Platform macros): Enhance test.
	(Macro expansion): New test.

2008-01-31  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* checks/Makefile.in: Use @SET_MAKE@, and use @SHELL@ rather
	than hard-coding /bin/sh.
	* THANKS: Update.
	Reported by Lawson Chan.

2007-12-13  Paolo Bonzini  <bonzini@gnu.org>  (tiny change)

	* doc/m4.texinfo (Inhibiting Invocation): Fix quoting of a quoting
	example.
	* THANKS: Update.
	Reported by Giovanni Toffetti.

2007-12-07  Eric Blake  <ebb9@byu.net>

	Minor security fix: Quote output of mkstemp.
	* src/builtin.c (mkstemp_helper): Produce quoted output.
	* doc/m4.texinfo (Mkstemp): Update the documentation and tests.
	* NEWS: Document this change.

2007-12-04  Eric Blake  <ebb9@byu.net>

	Fix builds with OpenBSD make.
	* doc/Makefile.am (HELP2MAN): New macro.
	(man_MANS, m4.1): Fix rules for building m4.1 into srcdir.
	* README: Update copyright.
	* HACKING: Mention help2man and makeinfo dependencies.

2007-11-22  Eric Blake  <ebb9@byu.net>

	Security fix: avoid arbitrary code execution with 'm4 -F'.
	* src/freeze.c (produce_frozen_state): Never pass raw file name as
	printf format.
	* NEWS: Document this fix.

2007-11-07  Eric Blake  <ebb9@byu.net>

	* doc/m4.texinfo (Pseudo Arguments): Test more corner cases.

2007-11-05  Eric Blake  <ebb9@byu.net>

	Use build-aux directory.
	* configure.ac (PACKAGE, VERSION): Delete, since Automake does
	this now.
	(AC_CONFIG_AUX_DIR): Add, with auxiliary files in build-aux
	instead of the top level.
	(AC_INIT_AUTOMAKE): Increase requirement, and add dist-lzma.
	* Makefile.am (EXTRA_DIST): Gnulib now manages gendocs.sh.
	* bootstrap: Adjust accordingly.
	* m4/gnulib-cache.m4: Add --aux-dir option.
	* doc/Makefile.am (m4.1): Rewrite rule to use build-aux/missing.

2007-10-31  Eric Blake  <ebb9@byu.net>

	Test more corner cases.
	* doc/m4.texinfo (Changecom, Pseudo Arguments): Beef up tests.
	(Improved foreach): Document alternate foreachq style.

2007-10-28  Eric Blake  <ebb9@byu.net>

	More test coverage for autoconf usage patterns.
	* doc/m4.texinfo (Inhibiting Invocation, Pseudo Arguments)
	(Builtin): Add new undocumented tests.
	(Shift): Document cond macro, and add new test.

2007-10-27  Eric Blake  <ebb9@byu.net>

	Document one use of changequote(`(',`)').
	* doc/m4.texinfo (Changequote): Add new test, based on recent
	autoconf addition of m4_expand.

2007-10-22  Eric Blake  <ebb9@byu.net>

	Never let printf failures go undetected.
	* m4/gnulib-cache.m4: Import announce-gen, git-version-gen,
	intprops, strtod, and xprintf modules.  Remove deprecated free
	module.  Replace vasprintf-posix and xvasprintf with
	xvasprintf-posix.
	* src/m4.h: Include xprintf.h.
	* src/builtin.c (ntoa): Export.
	(m4_errprint): Adjust all *printf callers.
	* src/debug.c (debug_message_prefix, trace_format): Likewise.
	* src/freeze.c (produce_frozen_state): Likewise.
	* src/input.c [DEBUG_INPUT]: Likewise.
	* src/m4.c (usage): Likewise.
	* src/m4.h (DEBUG_PRINT1, DEBUG_PRINT3, DEBUG_MESSAGE)
	(DEBUG_MESSAGE1, DEBUG_MESSAGE2): Likewise.
	* src/output.c (shipout_text, freeze_diversione): Likewise.
	* src/path.c [DEBUG_INCL]: Likewise.
	* src/stackovf.c (process_sigsegv) [DEBUG_STKOVF]: Likewise.
	* src/symtab.c [DEBUG_SYM]: Likewise.

2007-10-17  Eric Blake  <ebb9@byu.net>

	Fix 'm4 -F file -t undefined'.
	* src/freeze.c (produce_frozen_state): Avoid core dump.
	* doc/m4.texinfo (Using frozen files): Test for the bug.
	* NEWS: Mention the fix.

2007-10-09  Eric Blake  <ebb9@byu.net>

	Avoid regexp regression.
	* doc/m4.texinfo (Regexp, Patsubst): Test \ expansion.

2007-10-02  Eric Blake  <ebb9@byu.net>

	Add more examples and tests.
	* doc/m4.texinfo (Patsubst): Use the examples directory.  Also
	document shortfall.
	(Improved capitalize): New node.
	(Index macro, Regexp): Test more code paths.
	* examples/capitalize.m4: Update to match manual.
	* examples/capitalize2.m4: New file.
	* examples/foreachq3.m4: Likewise.
	* examples/join.m4: Likewise.
	* examples/loop.m4: Likewise.
	* examples/wraplifo.m4: Likewise.
	* examples/wraplifo2.m4: Likewise.
	* examples/Makefile.am (EXTRA_DIST): Distribute new files.

2007-09-24  Eric Blake  <ebb9@byu.net>

	Create .gitignore alongside .cvsignore.
	* bootstrap (LC_ALL): Set up front.
	(version control) Borrow idea from head, to avoid churn in
	m4/.*ignore files modified by gnulib-tool.

2007-09-13  Eric Blake  <ebb9@byu.net>

	* AUTHORS: Fix typo.

2007-09-07  Eric Blake  <ebb9@byu.net>

	* AUTHORS: Simplify, to match libtool and autoconf layout.
	* THANKS: Sync with head.

2007-08-10  Eric Blake  <ebb9@byu.net>

	* doc/m4.texinfo (Compatibility): Sync with head.

2007-08-10  Konrad Schwarz  <konrad.schwarz@siemens.com>  (tiny change)
	and Eric Blake  <ebb9@byu.net>

	* doc/m4.texinfo (Defn): Update wording.

2007-08-09  Eric Blake  <ebb9@byu.net>

	POSIX requires defn(`a',`b') to concatenate definitions.
	* src/builtin.c (m4_defn): Allow multiple arguments, but warn if
	trying to mix a builtin with anything else.
	* doc/m4.texinfo (Defn): Document a use for this POSIX
	requirement.
	(Incompatibilities): Update to match current status.
	* NEWS: Document this change.
	* THANKS: Update.
	Reported by Konrad Schwarz.

2007-08-04  Eric Blake  <ebb9@byu.net>

	Normalize all GPL license notices.
	* GNUmakefile: Update license wording.
	* Makefile.am: Likewise.
	* Makefile.maint: Likewise.
	* bootstrap: Likewise.
	* commit: Likewise.
	* configure.ac: Likewise.
	* checks/Makefile.in: Likewise.
	* doc/Makefile.am: Likewise.
	* examples/Makefile.am: Likewise.
	* src/Makefile.am: Likewise.
	* src/builtin.c: Likewise.
	* src/debug.c: Likewise.
	* src/eval.c: Likewise.
	* src/format.c: Likewise.
	* src/freeze.c: Likewise.
	* src/input.c: Likewise.
	* src/m4.c: Likewise.
	* src/m4.h: Likewise.
	* src/macro.c: Likewise.
	* src/output.c: Likewise.
	* src/path.c: Likewise.
	* src/stackovf.c: Likewise.
	* src/symtab.c: Likewise.

2007-07-21  Eric Blake  <ebb9@byu.net>

	Fix regression on NetBSD from 2007-05-28.
	* src/output.c (m4_tmpopen): Explicitly reset append-mode stream
	position to byte 0.
	* NEWS: Document this fix.
	* THANKS: Update.
	Reported by Thomas Klausner.

2007-07-20  Eric Blake  <ebb9@byu.net>

	Fix 'make distcheck' issues.
	* Makefile.am (EXTRA_DIST): No need to distribute
	gpl-3.0.texi.diff anymore.
	* m4/gnulib-cache.m4: Update to latest gnulib.

2007-07-14  Eric Blake  <ebb9@byu.net>

	Reflect upstream license .texi changes.
	* doc/m4.texinfo (Copying): Rename node...
	(GNU General Public License): ...to this.
	(GNU Free Documentation License): Adjust node location.
	* local/doc/gpl-3.0.texi.diff: Remove file.

2007-07-10  Eric Blake  <ebb9@byu.net>

	Start 1.4.10a.
	* configure.ac (AC_INIT): Bump version number.
	* NEWS: Start changes since 1.4.10.
	* doc/m4.texinfo (History): Mention 1.4.11.
	(Copying This Package, Copying This Manual): Add index entries.
	* local/lib/version-etc.c.diff: Delete, now that gnulib has been
	updated.
	* Makefile.am (EXTRA_DIST): Remove dead file.

2007-07-09  Eric Blake  <ebb9@byu.net>

	Release Version 1.4.10.
	* doc/Makefile.am (m4_TEXINFOS): Distribute gpl-3.0.texi.
	* Makefile.am (EXTRA_DIST): Distribute gnulib diffs.
	* configure.ac (AC_INIT): Bump version number.
	* NEWS: Describe changes since 1.4.9.

	* src/format.c: Missed a GPLv3 conversion.

	Avoid undefined behavior of %.*c in printf.
	* src/format.c (format): Special case %c.
	* TODO: Document that more remains to be done.
	* NEWS: Document the fix.

2007-07-05  Eric Blake  <ebb9@byu.net>

	Fix up gnulib-tool usage.
	* m4/gnulib-cache.m4: Change local-dir to local, not `.'.
	* version-etc.c.diff: Move to...
	* local/lib/version-etc.c.diff: ...here.
	* gpl-3.0.texi.diff: Move to...
	* local/doc/gpl-3.0.texi.diff: ...here.

2007-07-04  Eric Blake  <ebb9@byu.net>

	Upgrade to GPL version 3 or later.
	* bootstrap: Pick up GPLv3.
	* m4/gnulib-cache.m4: Augment with 'gnulib-tool
	--local-dir=. --import gpl-3.0'.
	* doc/m4.texinfo (Copying This Package): New appendix.
	* NEWS: Mention this change.
	* README: Mention why some files still claim to be version 2.
	* version-etc.c.diff: New file, to make sure --version claims
	correct GPL version.  Temporary until gnulib makes move.
	* gpl-3.0.texi.diff: New file, to allow inclusion of GPLv3 as
	appendix, rather than section, of the manual.
	* GNUmakefile: Update to new license.
	* Makefile.am: Likewise.
	* Makefile.maint: Likewise.
	* commit: Likewise.
	* configure.ac: Likewise.
	* checks/Makefile.in: Likewise.
	* doc/Makefile.am: Likewise.
	* examples/Makefile.am: Likewise.
	* src/Makefile.am: Likewise.
	* src/builtin.c: Likewise.
	* src/debug.c: Likewise.
	* src/eval.c: Likewise.
	* src/freeze.c: Likewise.
	* src/input.c: Likewise.
	* src/m4.c: Likewise.
	* src/m4.h: Likewise.
	* src/macro.c: Likewise.
	* src/output.c: Likewise.
	* src/path.c: Likewise.
	* src/stackovf.c: Likewise.
	* src/symtab.c: Likewise.

2007-06-26  Eric Blake  <ebb9@byu.net>

	* m4/gnulib-cache.m4: Augment with 'gnulib-tool --import assert'.

2007-06-26  Karl Berry  <karl@freefriends.org>  (tiny change)

	Match Free Software Directory categories.
	* doc/m4.texinfo (dircategory): Update.

2007-05-31  Eric Blake  <ebb9@byu.net>

	* src/output.c (output_text): Fix regression from 2007-05-28.
	* doc/m4.texinfo (History): Mention 1.4.10.
	(Format): Make testsuite output easier to debug.

2007-05-29  Eric Blake  <ebb9@byu.net>

	Start 1.4.9c.
	* configure.ac (AC_INIT): Bump version number.
	* NEWS: Start changes since 1.4.9b, and fix typo.

	Beta Release Version 1.4.9b.
	* configure.ac (AC_INIT): Bump version number.
	* NEWS: Describe changes since 1.4.9.

	Improve format support.
	* m4/gnulib-cache.m4: Augment with 'gnulib-tool --import
	vasprintf-posix'.
	* src/format.c (format): Parse %'hhd, %a, %A.  Avoid calling
	printf with too few arguments, as in format(%*.*d,-1,-1,1).
	* doc/m4.texinfo (Format): Expand tests, and improve
	documentation.
	* NEWS: Document this change.

2007-05-28  Eric Blake  <ebb9@byu.net>

	Fix large diversion corner cases, including 1.4.8 regression.
	* src/output.c (m4_tmpfile, m4_tmpopen): Simplify use of errno.
	(make_room_for): Use NULL, not 0, for pointers.
	(insert_diversion_helper): Avoid using rewind.
	(freeze_diversions): Allow freezing large diversions.
	* NEWS: Document this fix.

	Also run gnulib unit tests during make check.
	* m4/gnulib-cache.m4: Augment with 'gnulib-tool
	--tests-base=tests --with-tests'.
	* configure.ac (AC_CONFIG_FILES): Build gnulib testdir.
	* Makefile.am (SUBDIRS): Run gnulib tests before ours.

2007-05-25  Eric Blake  <ebb9@byu.net>

	Backport prompts in examples from head.
	* src/macro.c (expand_macro): Shorten message.
	* doc/m4.texinfo (Manual, Command line files, Comments)
	(Inhibiting Invocation, Macro Arguments, Macro expansion, Indir)
	(Builtin, Shift, Forloop, Foreach, Dumpdef, Trace, Debug Levels)
	(Debug Output, Include, Format, Syscmd, Mkstemp, Location)
	(Using frozen files, Improved forloop, Improved foreach): Add
	prompts to examples.
	* checks/get-them: Ignore prompts in examples.

	Fix sync line interaction with multiline comments.
	* doc/m4.texinfo (Other Incompatibilities): Add example, and
	document bug in --syncline/divert interaction.
	(Preprocessor features): Augment test.
	* src/m4.h (output_text): Export.
	(shipout_text, next_token): Add parameter.
	* src/freeze.c (reload_frozen_state): Don't interfere with
	synclines when reloading state.
	* src/output.c (output_text): Export.
	(shipout_text): Take new parameter for start line of token.
	Output at most one syncline per token.
	* src/input.c (next_token): Report line where multiline tokens
	start.
	* src/macro.c (expand_input, expand_token, expand_argument):
	Adjust callers so that line is passed from input to output.
	* NEWS: Document this fix.
	Reported by Sergey Poznyakoff.

	Test -s in testsuite.
	* doc/m4.texinfo (Preprocessor features): Add a test.
	* checks/get-them: Support extra options in testsuite.
	* checks/check-them (examples): Use extra options.
	* THANKS: Update.
	Reported by Sergey Poznyakoff.

2007-05-24  Eric Blake  <ebb9@byu.net>

	Support POSIX flush semantics on all platforms.
	* m4/gnulib-cache.m4: Remove closeout, and augment with
	'gnulib-tool --import closein fflush'.
	* src/m4.h (includes): Use closein, not closeout.
	* src/m4.c (main): Ensure stdin is flushed when not all input is
	consumed.
	(process_file): No return needed.
	* src/debug.c (debug_flush_files): Rely on gnulib module, rather
	than excluding mingw.
	* NEWS: Document this change.

	Work around cygwin and mingw fseeko bugs.
	* m4/gnulib-cache.m4: Augment with 'gnulib-tool --import fseeko'.
	* src/debug.c (debug_flush_files): Prefer fseeko over fseek.

2007-04-25  Eric Blake  <ebb9@byu.net>

	Fix negative division within eval, regression of 2007-01-06.
	* doc/m4.texinfo (Eval): Catch this bug.
	* src/eval.c (mult_term): Fix it.
	* NEWS: Document this.
	* THANKS: Update.
	Reported by Cesar Strauss.

2007-04-23  Eric Blake  <ebb9@byu.net>

	Start 1.4.9a.
	* configure.ac (AC_INIT): Bump version number.
	* NEWS: Start changes since 1.4.9.

2007-03-23  Eric Blake  <ebb9@byu.net>

	Release 1.4.9:
	* configure.ac (AC_INIT): Bump version number.
	* NEWS: Describe changes since 1.4.8b.

2007-03-16  Eric Blake  <ebb9@byu.net>

	* doc/m4.texinfo (Mkstemp): Tweak wording.
	* src/output.c (output_init): Adjust to latest gnulib.

2007-03-15  Eric Blake  <ebb9@byu.net>

	Avoid Tandem/NSK's broken long long (without a symmetric unsigned
	long long, it confuses gnulib).
	* configure.ac (AC_TYPE_LONG_LONG_INT): Declare long long broken
	if unsigned long long doesn't work.
	* THANKS: Update.
	Reported by Matthew Woehlke.

2007-03-07  Eric Blake  <ebb9@byu.net>

	* AUTHORS: Update.
	* doc/m4.texinfo: Minor tweaks, avoid makeinfo warning.

2007-03-01  Eric Blake  <ebb9@byu.net>

	* doc/m4.texinfo: Pick up more index entries from head.  Follow
	more texinfo recommendations.
	(Sysval): Improve tests.

	Avoid overfull \vbox warning from texinfo, due to indices that
	weren't quite big enough to split across page boundaries.
	* doc/m4.texinfo: Add lots of concept index entries.
	(Concept Index): Move to be last, as recommended by texinfo
	manual.
	(Define, Arguments, Pseudo Arguments): Add more function entries.

2007-02-28  Eric Blake  <ebb9@byu.net>

	* doc/m4.texinfo (Eval): Clean up wording to reflext POSIX XCU ERN
	137.
	(Pseudo Arguments): Add useful example.

	* doc/m4.texinfo (Pushdef, Incompatibilities): Clean up wording to
	reflect POSIX XCU ERN 118.

	* src/m4.h (DEFAULT_MACRO_SEQUENCE): Factor out from...
	* src/m4.c (usage): ...here,...
	* src/builtin.c (set_macro_sequence): ...and here.
	(define_user_macro): Fix typo.
	* doc/m4.texinfo (Preprocessor features, Arguments): Fix minor
	inaccuracies.
	(Shift): Document composite macro argn for portably getting at
	positional parameters beyond 9.
	* configure.ac (AC_INIT): Bump version number.
	* NEWS: Start changes of 1.4.8c.

2007-02-24  Eric Blake  <ebb9@byu.net>

	Beta Release 1.4.8b:
	* configure.ac (AC_INIT): Bump version number.
	* NEWS: Describe changes since 1.4.8.

	Reserve all uses of raw ${} in macro definitions, not just
	${<digit>}.
	* src/builtin.c (set_macro_sequence): Change default macro
	sequence.
	* doc/m4.texinfo (Operation modes): Update to match.
	* src/m4.c (usage): Likewise.
	* NEWS: Likewise.

2007-02-23  Eric Blake  <ebb9@byu.net>

	* src/m4.h (includes): Update to latest gnulib.

2007-02-08  Eric Blake  <ebb9@byu.net>

	Rename --warn-syntax to --warn-macro-sequence[=regex], to make it
	more flexible, and so that autoconf can use it.
	* src/m4.h (set_macro_sequence, free_macro_sequence): New
	prototypes.
	* src/builtin.c (macro_sequence_buf, macro_sequence_regs)
	(macro_sequence_inuse, set_macro_sequence, free_macro_sequence):
	New variables and functions.
	(define_user_macro): Allow flexibility in regular expression used
	to trigger warning.
	* src/m4.c (warn_syntax): Delete.
	(usage, WARN_MACRO_SEQUENCE_OPTION, main): Implement changed
	spelling of option, along with optional argument.
	* doc/m4.texinfo (Operation modes, Arguments): Document this
	change.
	* NEWS: Document this change.

2007-02-05  Eric Blake  <ebb9@byu.net>

	* m4/gnulib-cache.m4: Module strstr no longer exists.

	Avoid bool bitfields, as they don't work on AIX.
	* src/m4.h (bool_bitfield): New typedef.
	(struct symbol, struct builtin): Use it.
	* src/input.c (struct input_block): Likewise.
	Reported by Albert Chin.

	* doc/m4.texinfo (Sysval): Avoid SIGPIPE in test as unreliable.
	Reported by Albert Chin.
	* THANKS: Update.

2006-06-18  Bruno Haible  <bruno@clisp.org>  (tiny change)

	* doc/m4.texinfo (Input processing): Further clarifications.

2007-02-03  Eric Blake  <ebb9@byu.net>

	* doc/m4.texinfo (Input processing, Quoting Arguments): Beef up
	the examples.
	Reported by Bruno Haible.

2007-02-01  Eric Blake  <ebb9@byu.net>

	* src/m4.c (fatal_warnings): New variable.
	(usage): Document new -E behavior.
	(main): Make -E an additive option.
	(m4_error, m4_error_at_line): Change exit status when required.
	* NEWS: Document this change.
	* doc/m4.texinfo (Operation modes): Likewise.
	Reported by Ralf Wildenhues.

2007-01-27  Eric Blake  <ebb9@byu.net>

	* src/m4.h (warn_syntax): Declare.
	(init_pattern_buffer): Export.
	* src/m4.c (warn_syntax, usage, WARN_SYNTAX_OPTIONS)
	(long_options, main): Implement new option.
	* src/builtin.c (init_pattern_buffer): Allow NULL regs argument.
	(define_user_macro): Warn on $11 and ${1} if requested.
	* src/input.c (init_pattern_buffer): Delete duplicate method.
	* doc/m4.texinfo (Operation modes): Document it.
	(Arguments): Document future direction of ${11} vs. $11.
	(Incompatibilities): Fix wording on POSIX limitations.
	* checks/get-them: Parse @{ and @} correctly.
	* NEWS: Document this change.

2007-01-26  Eric Blake  <ebb9@byu.net>

	* src/builtin.c (includes): Adjust to gnulib changes.

2007-01-15  Eric Blake  <ebb9@byu.net>

	* doc/m4.texinfo: Pull in various improvements from head.
	* src/builtin.c (include): Alter exit status on failure.
	* NEWS: Document this fix.

2007-01-13  Eric Blake  <ebb9@byu.net>

	* configure.ac (AC_CHECK_MEMBERS): Check for stack_t.ss_sp, and
	assume the fallback of ss_base for BSDI 4.0.1.
	* src/stackovf.c (setup_stackovf_trap) [HAVE_SIGALTSTACK &&
	! HAVE_STACK_T_SS_SP]: Use this check.
	Reported by Chris McGuire.
	* THANKS: Update.
	* NEWS: Document the improvement.

2007-01-09  Eric Blake  <ebb9@byu.net>

	* src/eval.c (ASSIGN): New enumerator.
	(eval_lex): Recognize '='.
	(equality_term): Treat '=' like '==', but warn that it is
	deprecated.
	* doc/m4.texinfo (Eval): Document and test this.
	(Incompatibilities): Document the POSIX incompatibility.
	* NEWS: Document this change.

2007-01-06  Eric Blake  <ebb9@byu.net>

	* m4/gnulib-cache.m4: Augment with 'gnulib-tool --import stdint'.
	* checks/check-them: Record expected exit status.
	* checks/get-them: Check exit status.
	* src/m4.h (eval_t, unsigned_eval_t): Delete, use POSIX int32_t
	instead.
	* src/builtin.c: All users changed.
	* src/eval.c: Likewise.  Also document where we are triggering
	undefined or implementation-defined behavior.
	(BADOP, NEGATIVE_EXPONENT, INVALID_OPERATOR, eval_lex, evaluate)
	(logical_or_term, logical_and_term, logical_not_term, not_term)
	(equality_term, unary_term): Port from head to follow POSIX
	semantics.
	(exp_term): Reject 0**0 as undefined.
	* doc/m4.texinfo (History): Mention 1.4.9.
	(Format, Incompatibilities): Update to document POSIX compliance.
	* NEWS: Document this change.

2007-01-04  Eric Blake  <ebb9@byu.net>

	* NEWS: Document previous fix.
	* THANKS: Update.

2007-01-04  Sami Liedes  <sliedes@cc.hut.fi>  (tiny change)

	Fix Debian bug 405594, introduced 2006-11-01 from a bad
	copy-n-paste from head.
	* src/m4.c (main): Use correct file name after --.

2007-01-04  Eric Blake  <ebb9@byu.net>

	Fix regression from 1.4.7 in large file handling on some
	platforms, introduced on 2006-10-13.
	* configure.ac (AC_LARGE_SYSFILE): Guarantee that large files
	will be handled.
	* NEWS: Document this fix.

2007-01-03  Eric Blake  <ebb9@byu.net>

	* m4/gnulib-cache.m4: Augment with 'gnulib-tool --import
	version-etc-fsf'.
	* src/m4.c (AUTHORS, main): Use FSF wording for --version (plus
	it bumps the copyright year).

2006-12-27  Eric Blake  <ebb9@byu.net>

	* doc/m4.texinfo (Patsubst): Fix typo.

2006-12-16  Eric Blake  <ebb9@byu.net>

	* src/m4.c (main): Check for errors when closing stdin.

2006-12-09  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* doc/m4.texinfo: Fix some typos.

2006-12-09  Eric Blake  <ebb9@byu.net>

	* configure.ac (AC_INIT): Bump version number.
	* NEWS: Start changes of 1.4.8a.

2006-11-20  Eric Blake  <ebb9@byu.net>

	Release 1.4.8:
	* configure.ac (AC_INIT): Bump version number.
	* NEWS: Describe changes since 1.4.7.

2006-11-16  Eric Blake  <ebb9@byu.net>

	* doc/m4.texinfo (Include, Search Path, Diversions, Divert):
	Minor tweaks noticed while porting to head.

2006-11-14  Eric Blake  <ebb9@byu.net>

	* src/output.c (cleanup_tmpfile, freeze_diversions): Clean up
	spent iterators.
	(m4_tmpname): Avoid memory leak.

2006-11-13  Eric Blake  <ebb9@byu.net>

	* src/output.c (cleanup_tmpfile): Avoid double error message when
	umask is prohibitive.
	(m4_tmpname, m4_tmpopen, m4_tmpclose, m4_tmpremove): New
	functions.
	(m4_tmpfile): Add parameter, move cloexec action here.
	(make_room_for): Adjust caller.  Don't keep too many files open.
	(insert_diversion_helper): Unlink emptied temp files.
	(make_diversion): Don't keep too many files open.
	* doc/m4.texinfo (Diversions): Tweak wording, now that open file
	descriptors are no longer a limiting factor.
	* NEWS: Document this change.

	Backport sparse diversion handling from head.
	* m4/gnulib-cache.m4: Augment with 'gnulib-tool --import
	avltree-oset'.
	* src/output.c (struct m4_diversion): Rename from struct
	diversion, and update members.  All users changed.
	(diversion_table): Change to an ordered set, instead of an array.
	(div0): New storage for diversion 0.
	(diversions): No longer needed.
	(free_list): New list to allow recycling diversion storage.
	(diversion_storage): New storage to reduce malloc overhead.
	(cmp_diversion_CB, threshold_diversion_CB): New callbacks.
	(output_init, output_exit, cleanup_tmpfile, make_room_for)
	(make_diversion): Handle new diversion storage scheme.
	(insert_diversion_helper): New function.
	(insert_diversion, undivert_all, freeze_diversions): Use it.
	* doc/m4.texinfo (Divert, Diversions): Move hidden test of memory
	exhaustion to visible test of large diversion numbers.
	* NEWS: Document this fix.

2006-11-11  Eric Blake  <ebb9@byu.net>

	* src/builtin.c (m4_translit): Slight optimization.

	* src/m4.h (to_uchar): Depend on HAVE_INLINE.

	* src/builtin.c: Remove unnecessary casts.
	(expand_ranges): Make 8-bit clean.
	* doc/m4.texinfo (Translit): Add tests and wording.
	* NEWS: Document this fix.

2006-11-07  Eric Blake  <ebb9@byu.net>

	* src/m4.h (output_exit): New prototype.
	* src/m4.c (main): Use it.
	* src/output.c (cleanup_tmpfile): Close files before removing
	directory.
	(insert_diversion): Check for failure.
	(output_exit): Avoid memory leak.
	* doc/m4.texinfo (Diversions): Test this bug.

	* doc/m4.texinfo (Esyscmd, Errprint): Minor touchups.

2006-11-01  Eric Blake  <ebb9@byu.net>

	Allow C++ compilation on Linux, as a safety measure in type
	checking.
	* m4/gnulib-cache.m4: Augment with 'gnulib-tool --import
	stdbool'.
	* src/m4.h (hack_symbol, hack_all_symbols): Use full prototype.
	(boolean): Kill this, and use stdbool.h instead.
	* src/debug.c, src/eval.c, src/input.c, src/macro.c, src/m4.c:
	* src/output.c, src/symtab.c: All users changed.
	* src/symtab.c (hack_all_symbols): Update prototype.
	* src/builtin.c (dump_symbol, set_trace): Update signature.
	(m4_dumpdef, m4_traceon, m4_traceoff): Update callers.
	(mkstemp_helper, m4_m4wrap, expand_ranges, m4_translit): Allow
	C++ compilation.
	* src/debug.c (trace_flush): Likewise.
	* src/freeze.c (reload_frozen_state): Likewise.
	* src/input.c (push_file, push_string_finish, push_wrapup):
	(token_bottom, next_token): Likewise.
	* src/m4.c (main): Likewise.

	* doc/m4.texinfo (Invoking m4): Update according to POSIX 200x
	draft wording.
	* src/m4.h (m4_path_search): Tweak signature.
	* src/path.c (m4_path_search): Likewise.
	* src/builtin.c (include): Update caller.
	* src/m4.c (main): Allow -D, -U, -t, and -s to be interspersed
	with file names.  Don't write to **argv.
	(process_file): New helper method.
	* NEWS: Document this fix.

2006-10-31  Eric Blake  <ebb9@byu.net>

	* m4/gnulib-cache.m4: Augment with 'gnulib-tool --import strstr'.
	* doc/m4.texinfo (Translit): Improve the documentation.
	* src/builtin.c (m4_translit): Optimize to O(n) instead of O(n^2)
	algorithm.
	(m4_index): Simplify, and speed up slightly.
	* NEWS: Document this fix.

2006-10-28  Eric Blake  <ebb9@byu.net>

	* src/input.c (set_quotes): Don't allow empty end-quote with
	non-empty start-quote.
	(set_comment): Likewise for end-comment.
	* src/builtin.c (m4_changecom): Adjust caller.
	* doc/m4.texinfo (Changequote, Changecom): Update documentation to
	match behavior.
	(Incompatibilities): Document another POSIX bug.
	* NEWS: Mention this change.

2006-10-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* examples/Makefile.am (EXTRA_DIST): Distribute recently-added
	files.

2006-10-26  Eric Blake  <ebb9@byu.net>

	Silence -Wwrite-strings -Wpointer-arith warnings.
	* src/builtin.c (define_user_macro): Allow NULL argument.
	(m4_builtin, m4_indir): Cast away const of "".
	* src/format.c (format): Likewise.
	* src/macro.c (collect_arguments): Likewise.
	(expand_macro): Avoid math on void*.
	* src/m4.c (main): Adjust caller.
	* src/output.c (freeze_diversions): Detect off_t overflow.

	* src/input.c (pop_input): Remove unnecessary code.

2006-10-25  Eric Blake  <ebb9@byu.net>

	* src/symtab.c (symtab_init): Avoid size_t overflow.
	* src/output.c (make_diversion): Avoid size_t overflow.
	* doc/m4.texinfo (Diversions): Test this fix.
	* src/input.c (input_block): Remove unused member.  Reduce size
	of struct.
	(push_file, pop_input): Avoid useless assignment.
	* NEWS: Document the bug fix.

	Redo location tracking.  Instead of having just files track the
	line to return to when popping input, now all input blocks track
	their current line.
	* src/input.c (INPUT_STRING_WRAP, INPUT_FILE_INIT): No longer
	needed.
	(input_block): Have line and file storage for all input types, and
	rename some members.
	(input_change): New global flag.
	(push_file, push_macro, push_string_init, push_wrapup): Store
	location.
	(push_string_finish, pop_input, pop_wrapup): Notice changes in
	input blocks.
	(peek_input): Adjust to new member names.
	(next_char, next_char1): Adjust location if needed.
	(skip_line): Simplify restoring location.
	* doc/m4.texinfo (Location): Augment the test to catch line
	location of expansion of multi-line arguments.
	Reported by Stepan Kasal.

2006-10-23  Eric Blake  <ebb9@byu.net>

	* doc/m4.texinfo (Macro Arguments): Document that leading space
	in argument collection stops at macro expansion.
	(Incompatibilities): Document POSIX whitespace wording issue.

2006-10-20  Eric Blake  <ebb9@byu.net>

	* doc/m4.texinfo: Trailing '@comment' doesn't format nicely in
	TeX, so recognize '@w{ }' instead.  Likewise, @code{_name} at the
	end of a TeX line splits incorrectly.
	(Foreach, Improved foreach): Write these sections, borrowing ideas
	from CVS head and from m4sugar.
	* checks/get-them: Accomodate new way to show trailing space in
	examples.
	* examples/foreach.m4: Make usable in documentation.
	* examples/foreachq.m4: New file.
	* examples/foreachq2.m4: New file.
	* examples/foreach2.m4: New file.
	* NEWS: Document the documentation updates.

2006-10-19  Eric Blake  <ebb9@byu.net>

	* src/builtin.c (mkstemp_helper, m4_mkstemp): New functions.
	(m4_maketemp): Provide traditional behavior.
	* doc/m4.texinfo (Mkstemp): Rename from Maketemp.  Document the
	new `mkstemp' macro and the flaws of the old `maketemp'.
	(Incompatibilities): Move maketemp discussion to...
	(Extensions): ...here, since -G now supresses the GNU extension.
	* NEWS: Document this.

	* examples/forloop.m4: Simplify.
	* examples/forloop2.m4: New file.
	* examples/quote.m4: New file.
	* doc/m4.texinfo (Loops): Rename to...
	(Shift): ...this node.
	(Forloop, Foreach, Improved forloop, Improved foreach): New
	nodes.

2006-10-17  Eric Blake  <ebb9@byu.net>

	* m4/gnulib-cache.m4: Update with 'gnulib-tool --import
	config-h'.
	* configure.ac (AC_CONFIG_HEADERS): Create config.h alongside
	gnulib headers, rather than in top directory.
	* src/Makefile.am (AUTOMAKE_OPTIONS): Add nostdinc, to reduce make
	output clutter.

2006-10-16  Eric Blake  <ebb9@byu.net>

	* doc/m4.texinfo: Backport some minor cleanups from head.
	(Cleardivert): Rename from cleardiv.

	* doc/m4.texinfo (Invoking m4): Promote to a chapter, instead of
	a section of Preliminaries.
	(Operation modes, Preprocessor features, Limits control)
	(Frozen state, Debugging options, Command line files): Subdivide
	into new sections.
	(Input processing, Quoting Arguments, Define, Arguments)
	(Cleardiv, Format, M4exit): Fix grammar of references.
	(Inhibiting Invocation, Macro Arguments, Builtin, Trace)
	(Debug Levels, Debug Output, Include, Search Path, Divert)
	(Platform macros, Syscmd, Location, Extensions): Point to new
	sections.
	(Top, Loops, Include, Undivert, Location, Incompatibilities):
	Improve file references.

2006-10-14  Eric Blake  <ebb9@byu.net>

	* m4/input.c (file_clean): Don't close stdin twice, POSIX says it
	is not portable.
	Reported by Ralf Wildenhues.

	* src/builtin.c (m4_undivert): Check for read error.

2006-10-13  Eric Blake  <ebb9@byu.net>

	* src/m4.h (UNIX, W32_NATIVE, OS2): Move platform checks after
	header files are included, since <unistd.h> can affect the tests.
	* THANKS: Updated.
	Reported by Martin Koeppe.

	Backport head's usage of clean-temp module, as it is cleaner than
	using tmpfile-safer.
	* m4/gnulib-cache.m4: Augment with 'gnulib-tool --import
	clean-temp closeout', and remove tmpfile-safer.
	* src/m4.h (includes): Adjust.
	(m4_path_search): Rename from path_search, to avoid collision
	with gnulib.
	* src/m4.c (main): Install closeout handler.  Adjust caller.
	(usage): Now done by closeout module.
	* src/builtin.c (m4_m4exit): Likewise.
	(m4_undivert, include): Adjust callers.
	* src/freeze.c (reload_frozen_state): Likewise.
	* src/path.c (m4_path_search): Rename from path_search.
	* src/output.c (output_temp_dir): New variable.
	(cleanup_tmpfile, m4_tmpfile): New functions, from head.
	(insert_diversion, make_room_for): Use them.
	* doc/m4.texinfo (Diversions): Document this, and add a test.
	(Improved fatal_error): Fix typo.
	(Maketemp): Port test to mingw, and no longer hide from
	documentation.
	* NEWS: Document the change in TMPDIR behavior.

	* configure.ac (m4_pattern_forbid): Narrow the range of forbidden
	macros, to work with recent gnulib-tool update.

	* src/builtin.c (m4_builtin, m4_indir): Allow transparent
	handling of defn results.
	* doc/m4.texinfo (Builtin, Indir): Add test cases.
	* NEWS: Document this.

2006-10-12  Eric Blake  <ebb9@byu.net>

	* doc/m4.texinfo (Location): Fix typo in previous commit.
	(Changeword): Catch one more case.
	* src/input.c (skip_line): Fix case when outer file used macro to
	supply the \n.

2006-10-11  Eric Blake  <ebb9@byu.net>

	* src/input.c (enum input_type): Add additional types, to shave
	time off the common case.
	(push_wrapup): Wrapped strings remember location.
	(push_string_finish): Normal strings carry no location.
	(push_file): Start new files uninitialized.
	(peek_input, next_char_1): Optimize common cases by updating
	location only on new input types.
	(pop_input): Update to honor new input types.
	(skip_line, push_string_finish): Fix regression in previous patch
	when dnl is not followed by newline in included file.
	(push_string_init): Initialize all fields of INPUT_STRING sooner.
	(peek_token): Simplify.
	(peek_input): Don't pop input files on peek, so that __file__ and
	__line__ as last token of include file work correctly.
	* doc/m4.texinfo (History): Mention 1.4.8.
	(Answers): Split into sections, one per answer.
	(Improved exch, Improved cleardivert, Improved fatal_error): New
	nodes.
	(Dnl, M4wrap, Location, M4exit, Improved fatal_error): Update to
	new m4wrap location semantics.
	(Changeword): Add test that caught the regression.
	* NEWS: Document this.

	* src/macro.c (expand_macro): In macro expansion errors, report
	line number at open parenthesis.
	* src/input.c (next_token): Fix off-by-one bug in reporting end
	of file in unterminated comment and string.
	(file_names): New obstack, necessary since expand_macro now hangs
	on to file names longer than the files remain open.
	(input_init): Initialize new obstack.
	(push_file): Use new obstack.  Delay updates to current_file
	until after expand_macro has restored state.
	(peek_input, next_char_1): Update current_file if necessary.
	(pop_wrapup): Release memory.
	* doc/m4.texinfo (Macro Arguments, Changequote, Changecom): Catch
	the off-by-one bug.
	(Dnl): Update to the new location reporting rules.
	* NEWS: Document these changes.

2006-10-10  Eric Blake  <ebb9@byu.net>

	* src/macro.c (argc_stack, argv_stack): New variables for sharing
	obstacks across multiple macro calls.
	(expand_input): Initialize and tear down stack once per input
	file, instead of once per macro.
	(expand_macro): Reuse existing stacks when possible.
	(collect_arguments): Simplify slightly.

	* src/path.c (include_env_init): Fix botched patch application.
	Reported by Ralf Wildenhues.

2006-10-09  Eric Blake  <ebb9@byu.net>

	* src/m4.c (usage, main): Detect write failures to stderr.
	* src/builtin.c (m4_m4exit): Likewise.
	* NEWS: Document this.

	* src/macro.c (expand_macro): Allow --nesting-limit=0 to remove
	the limit.
	* NEWS: Document this.
	* doc/m4.texinfo (Invoking m4): Likewise.

2006-10-09  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* src/path.c (include_env_init): Copy the string returned
	by getenv before overwriting it; POSIX disallows this.

2006-10-09  Eric Blake  <ebb9@byu.net>

	* src/m4.c (main): Defer debugfile until after --help.
	* configure.ac (AC_INIT): Bump version number.
	* NEWS: Start changes of 1.4.7a.

2006-09-25  Eric Blake  <ebb9@byu.net>

	Release 1.4.7:
	* configure.ac (AC_INIT): Bump version number.
	* NEWS: Describe changes since 1.4.6.

2006-09-21  Eric Blake  <ebb9@byu.net>

	* doc/m4.texinfo (Invoking m4): Add clarification on option
	processing behavior.
	* THANKS: Update.
	Reported by Mikhail Teterin.

	* bootstrap: Add --force option, based on idea from coreutils.
	* README: Document that ./bootstrap and autoreconf are for
	developers, and not lightly done in tarballs.

2006-09-20  Eric Blake  <ebb9@byu.net>

	* src/m4.c (usage, OPTSTRING, main): Rename -e to -i, and give
	deprecation warning on -e.
	* doc/m4.texinfo (Invoking m4, Extensions): Document this.
	* NEWS: Document this.

2006-09-19  Eric Blake  <ebb9@byu.net>

	* src/m4.c (usage, long_options, main, DEBUGFILE_OPTION): Rename
	-o/--error-output to --debugfile, and deprecate the former.  This
	will allow a future release to be more consistent with other GNU
	tools, with -o/--output affecting stdout, not debug.
	* doc/m4.texinfo (Invoking m4, Debug Output): Document this.
	* NEWS: Document this.

2006-09-14  Eric Blake  <ebb9@byu.net>

	* src/m4.c (main): Warn on deprecated options -B, -S, -T, -N,
	--diversions. `m4 --help --version' now displays help, not
	version.
	(interactive, frozen_file_to_read, frozen_file_to_write): Move to
	smaller scope.
	(show_help, show_version): No longer needed.
	(long_options, DIVERSIONS_OPTION): Backport patch from head to
	distinguish between -N and --diversions in warning.
	* doc/m4.texinfo (Invoking m4): Document this.
	* NEWS: Likewise.

2006-09-11  Eric Blake  <ebb9@byu.net>

	* src/Makefile.am (m4_LDADD): Add any gnulib dependent libraries.
	* src/debug.c (debug_flush_files) [UNIX]: Flush stdin if it is
	seekable.
	(debug_set_file): Use STDOUT_FILENO.
	* src/builtin.c (m4_m4exit): Flush stdin before exiting, to comply
	with POSIX in regards to unread input.
	* NEWS: Document this fix.
	* doc/m4.texinfo (Syscmd, Esyscmd, M4exit): Likewise.

2006-09-07  Eric Blake  <ebb9@byu.net>

	* m4/gnulib-cache.m4: Update to newer gnulib-tool.
	* src/m4.h (push_file): Change prototype.
	* src/input.c (push_file, peek_input, next_char_1): Only call getc
	once at EOF, to avoid double ^D on terminal stdin; regression from
	2006-09-04.
	(push_file, pop_file): Allow reading stdin twice.
	* src/m4.c (main): Likewise.
	* src/builtin.c (include): Update caller.
	* NEWS: Document this change.
	* doc/m4.texinfo (Invoking m4, Incompatibilities): Likewise.
	(Syscmd): Add a test that failed before this patch.

2006-09-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* checks/check-them: Quote $pwd.

2006-09-05  Eric Blake  <ebb9@byu.net>

	* src/builtin.c (define_macro): Warn on invalid macro name.
	* NEWS: Document this change.
	* doc/m4.texinfo: Fix typos.
	(Invoking m4, Macro Arguments, Pseudo Arguments, Defn, Indir)
	(Ifelse): Backport some improvements from head.

2006-09-04  Eric Blake  <ebb9@byu.net>

	* doc/m4.texinfo (Changeword): Skip test on mingw, where the
	native echo is braindead.
	* checks/check-them (strip_needed): Ignore \r in output.  Now the
	testsuite will pass when cross-compiling from cygwin to mingw.

	* src/input.c (peek_input): Fix regression in handling macro
	without arguments as last token in file; debian bug 385720.
	(next_token): Always consume an input character.
	Reported by Andreas Schultz.
	* configure.ac (AC_INIT): Bump version number.
	* NEWS: Document this fix.
	* doc/m4.texinfo (History): Mention next version.
	(Changeword): Add example that exposes this bug.
	* THANKS: Update.

2006-08-25  Eric Blake  <ebb9@byu.net>

	Release 1.4.6:
	* configure.ac (AC_INIT): Bump version number.
	* NEWS: Describe changes since 1.4.5.

	* Makefile.maint (web-manual): Give up on VPATH build during
	distribution.  But distributions are made so infrequently that
	this is not too much of a hardship.
	* Makefile.am (MAINTAINERCLEANFILES): Avoid error if lib/CVS/
	exists.

2006-08-24  Eric Blake  <ebb9@byu.net>

	* src/builtin.c (m4_index, m4_substr, m4_translit): Similar to
	Solaris, produce output on just one argument.
	(m4_regexp, m4_patsubst): For consistency, do likewise.
	(m4_patsubst): Allow zero-length match at end of string.
	* doc/m4.texinfo (Sysval): Fix overfull hbox.
	(Bugs, Macro Arguments): Minor fixes.
	(Other tokens): Rearrange node order.
	(Index macro, Substr, Translit, Regexp, Patsubst): Add tests.
	* NEWS: Document these fixes.

2006-08-22  Eric Blake  <ebb9@byu.net>

	* src/input.c (pop_input): Avoid empty filename with -di option.
	* src/debug.c (debug_message_prefix): Put space before message.

	* m4/gnulib-cache.m4: We don't explicitly use alloca module.

	* m4/gnulib-cache.m4: Augment with gnulib-tool --import gnupload.
	* Makefile.maint (fetch): Simplify, now that we can use gnupload.

	* checks/check-them: State why a test is skipped.
	* doc/m4.texinfo (Changeword, Sysval, Maketemp): Likewise.

	* ChangeLog: Add copyright.
	* AUTHORS: Likewise.
	* BACKLOG: Likewise.
	* README: Likewise.
	* THANKS: Likewise.
	* TODO: Likewise.
	* examples/COPYING: New file, add copyright for all the examples.
	* checks/get-them: Put copyright on testsuite files.

2006-08-18  Eric Blake  <ebb9@byu.net>

	Don't let unrelated child processes see too many files.
	* m4/gnulib-cache.m4: Augment with gnulib-tool --import cloexec.
	* src/builtin.c (m4_esyscmd, m4_regexp, m4_patsubst): Fix
	spelling in error message.
	* src/debug.c [!__STDC__]: Assume C89, and nuke old varargs.h.
	(debug_set_output): Close debug file on exec.
	* src/m4.h (includes): Add cloexec.h.
	* src/output.c (make_room_for): Close diversions on exec.
	* src/path.c (path_search): Close include files on exec.
	* NEWS: Document this.

	Regular expressions were leaking memory.
	* src/builtin.c (init_pattern_buffer, free_pattern_buffer): New
	helper methods.
	(m4_regexp, m4_patsubst): Avoid memory leak.
	* src/input.c (init_pattern_buffer) [ENABLE_CHANGEWORD]: Make
	static.
	(set_word_regexp) [ENABLE_CHANGEWORD]: Avoid memory leak.  Change
	from O(n^2) to O(n) for calculating word_start.
	(next_token, peek_token) [ENABLE_CHANGEWORD]: Treat word_start as
	O(1) bitmap, not O(n) search string.
	* NEWS: Document this fix.

2006-08-17  Eric Blake  <ebb9@byu.net>

	* NEWS: Document previous checkin.

	* src/builtin.c (substitute): Avoid core dump when accessing
	beyond bound of regular expression.
	Reported by Karl Nelson.
	* doc/m4.texinfo (Regexp): Add example that causes core dump on
	some architectures prior to this patch.
	* THANKS: Updated.

2006-08-16  Eric Blake  <ebb9@byu.net>

	* doc/m4.texinfo (Invoking m4, Debug Output): Fix wording to be
	clear that dumpdef does not always go to stderr.

	* src/builtin.c (m4_errprint): Flush buffers before printing to
	stderr.
	* THANKS: Updated.

2006-08-15  Eric Blake  <ebb9@byu.net>

	* src/builtin.c (m4_m4wrap, m4_errprint, m4_shift): Make blind,
	per debian bug 96075.
	* doc/m4.texinfo (Loops, M4wrap, Errprint): Document this change.
	(Changeword): Don't use shift as an example of a swallowed word.
	(Divert): Discuss fact that divert is an English word.
	Reported by Richard A Nelson.

2006-08-14  Eric Blake  <ebb9@byu.net>

	* doc/m4.texinfo (Invoking m4): Minor fixes.

2006-08-12  Eric Blake  <ebb9@byu.net>

	* doc/m4.texinfo (Arguments): Hint at better exch macro.
	(Answers): Provide a better definition.

2006-08-09  Eric Blake  <ebb9@byu.net>

	* doc/m4.texinfo (Incompatibilities): Document that m4 does not
	yet understand locales.
	* NEWS: Fix wording of a few items.

2006-08-08  Eric Blake  <ebb9@byu.net>

	Avoid printing `NONE:0:' in error messages.
	* src/m4.h (m4_error_at_line): New function.
	* src/m4.c (m4_error_at_line): Implement.
	* src/input.c (skip_line, input_init, next_token): Use "", not
	"NONE", for no file, since NONE can be a real file name.
	* src/macro.c (expand_argument): Likewise.
	* src/debug.c (debug_message_prefix, trace_header): Check for
	current file.
	* doc/m4.texinfo (Dnl, M4wrap): Adjust accordingly.
	(Location): Document that synclines and internal message format
	are not impacted by redefining these macros.
	(M4exit): Hint at bug in fatal_error.
	(Answers): Provide workaround to match m4 output.

	* m4/gnulib-cache.m4: Augment with gnulib-tool --import verror.
	* src/m4.h (m4_error): New function.
	(M4ERROR, M4ERROR_AT_LINE): Reimplement without hacking around
	error module deficiencies.
	(reference_error, suppress_line): No longer needed.
	* src/m4.c (m4_error): Implement.
	(main): No longer need to install error callback.

2006-08-04  Eric Blake  <ebb9@byu.net>

	* src/m4.h (program_name): Declare.
	(suppress_line): New variable.
	(M4ERROR_AT_LINE): New macro.
	* src/m4.c (reference_error, main): Follow GNU Coding Standards
	for error message format.
	* src/input.c (skip_line, next_token): Use M4ERROR_AT_LINE.
	* src/macro.c (expand_argument): Likewise.
	* checks/check-them (examples): Adjust to new message format.
	* src/builtin.c (m4___program__): New builtin.
	* doc/m4.texinfo (Location): Split from Errprint into new node,
	and document __program__.
	(Builtin, Ifdef, Ifelse, Dumpdef, Trace, Debug Output, Dnl)
	(Include, Regexp, Patsubst, Incr, Eval): Adjust error message
	format.
	(Extensions): Document __program__.
	* NEWS: Document this change.

2006-08-03  Eric Blake  <ebb9@byu.net>

	Don't confuse leading `(' in comment or quote with start of
	argument collection.
	* src/m4.h (enum token_type): Add TOKEN_OPEN, TOKEN_COMMA,
	TOKEN_CLOSE.
	(peek_input): Make private to input.c.
	(peek_token): New prototype.
	* src/input.c (default_word_regexp): Reduce ifdefs.
	(peek_input): Make static.
	(next_token): Return new token types.
	(match_input, MATCH): Add argument consume, which controls
	whether match should be pushed back.
	(peek_token): New function.
	(token_type_string) [DEBUG_INPUT]: New function.
	* src/macro.c (expand_token, expand_argument, collect_arguments):
	Handle new token types.
	* doc/m4.texinfo (Changequote, Changecom): Document this.
	* NEWS: Document this.

	* src/stackovf.c (setup_stackovf_trap): Free memory on failure.

	* src/stackovf.c (setup_stackovf_trap): Gracefully avoid stack
	overflow detection when sigstack exists but is not implemented.
	Fixes debian bug 154053.
	* THANKS: Updated.
	Reported by David Perlin.

2006-08-02  Eric Blake  <ebb9@byu.net>

	* src/input.c (MATCH): Fix EOF detection on multi-byte comment
	close.

2006-08-01  Eric Blake  <ebb9@byu.net>

	* src/input.c (skip_line, next_token): Remember current file in
	case input file ends abruptly.  Addresses debian bug 175365.
	(pop_input): Defer freeing storage that holds previous file
	name...
	(pop_wrapup): to here, after error message is issued.
	* src/macro.c (expand_argument): Remember current file in case
	input file ends abruptly.
	* doc/m4.texinfo (Macro Arguments, Dnl, Changequote, Changecom)
	(M4wrap): Adjust testsuite accordingly.
	(Errprint): Document line number limitation of m4wrap.
	* NEWS: Document this fix.
	* THANKS: Update.

2006-07-31  Eric Blake  <ebb9@byu.net>

	* src/input.c (peek_input, next_char, match_input): Be eight-bit
	clean; fixes debian bug 311378.
	* doc/m4.texinfo (Syntax): Describe eight-bit handling.
	(Changequote, Changecom): Add examples to test this.
	* NEWS: Document this fix.
	* THANKS: Update.
	Reported by Steven Augart.

	* doc/m4.texinfo: Whitespace fix.
	* checks/get-them: Avoid exceeding 14-char file name limit.
	* THANKS: Update.

2006-07-30  Eric Blake  <ebb9@byu.net>

	* src/path.c (path_search): Detect allocation failure.

	Use native free when it is good enough.
	* m4/gnulib-cache.m4: Augment with gnulib-tool --import free.
	* src/builtin.c (define_user_macro, m4_regexp, m4_patsubst):
	Adjust calls.
	* src/symtab.c (free_symbol): Likewise.
	* src/m4.c (xfree, main): Likewise.
	* src/m4.h (obstack_chunk_free): Likewise.
	* src/path.c (path_search): Likewise.
	* src/input.c (pop_wrapup, set_quotes, set_comment): Likewise.

	* doc/m4.texinfo (Errprint): Add example for last patch.
	* checks/check-them: Account for VPATH in latest example.

2006-07-29  Eric Blake  <ebb9@byu.net>

	* src/path.c (path_search): Add result parameter, so that
	-I can be accounted for.  Debian bug 53685.
	* src/m4.h (path_search): Update prototype.
	* src/m4.c (main): Adjust callers.
	* src/freeze.c (reload_frozen_state): Likewise.
	* src/builtin.c (include, m4_undivert): Likewise.
	* NEWS: Document this change.
	Reported by Nicolas Lichtmaier.

2006-07-28  Eric Blake  <ebb9@byu.net>

	* Makefile.am (MAINTAINERCLEANFILES): Fix typo that tripped up
	several non-GNU makes.
	* src/stackovf.c (setup_stackovf_trap): Missed _ from yesterday.
	* src/m4.h: Likewise.
	* src/input.c (push_wrapup): Avoid compiler warning with Solaris
	/usr/ccs/bin/ucbcc.

2006-07-27  Eric Blake  <ebb9@byu.net>

	* doc/m4.texinfo: Use @acronym{GNU} throughout.
	(History): Update for 1.4.6.

	* src/m4.h (_): Remove K&R cruft.
	* src/builtin.c: Likewise.
	* src/debug.c: Likewise.
	* src/eval.c: Likewise.
	* src/macro.c: Likewise.
	* src/stackovf.c: Likewise.

	* doc/Makefile.am (m4.1): Improve man page.
	* src/m4.c (usage): Improve --help output, including adding the
	bug reporting address.
	(main): Follow GNU Coding Standards for --version output.

2006-07-26  Eric Blake  <ebb9@byu.net>

	* doc/m4.texinfo: Use begin-quote, end-quote, begin-comment, and
	end-comment consistently, to match POSIX.

	* doc/m4.texinfo (Macro Arguments, Changequote, Changecom)
	(Dnl, M4wrap, Include): Document EOF issues, and add examples.
	(Incompatibilities): Document incompatibility of changecom
	vs. macro names, and of EOF in include.
	* src/input.c (next_token): Reject unterminated comments at EOF.
	(skip_line): Warn on unterminated dnl at EOF.
	* NEWS: Document these changes.

2006-07-25  Eric Blake  <ebb9@byu.net>

	* m4/gnulib-cache.m4: Update to reflect gnulib's split of
	stdio-safer into fopen-safer and tmpfile-safer.
	* src/m4.c: Remove redundant include.

2006-07-24  Eric Blake  <ebb9@byu.net>

	Fix bugs related to stream handling.
	* m4/gnulib-cache.m4: Augment with gnulib-tool --import
	unlocked-io stdio-safer stdlib-safer close-stream.
	* configure.ac (AC_CHECK_FUNCS_ONCE): Assume tmpfile; it can be
	provided by gnulib if needed.
	* src/output.c [! HAVE_TMPFILE]: Likewise.
	* src/m4.h (includes): Replace unistd, stdio, and stdlib with
	their safer counterparts.
	(retcode): New global variable.
	* src/input.c (pop_input): Check for read failure.
	* src/freeze.c (reload_frozen_state): Likewise.
	(produce_frozen_state): Check for write failure.
	* src/debug.c (debug_set_file): Likewise.
	* src/m4.c (usage, main): Likewise.
	(retcode): Make global.
	* src/builtin.c (m4_m4exit): Likewise.  Ensure that the exit
	status is non-zero except when everything succeeds.
	* doc/m4.texinfo (M4exit): Document these changes.
	(Incompatibilities): Remove documentation of bug now fixed.
	* NEWS: Document these fixes.

2006-07-22  Eric Blake  <ebb9@byu.net>

	* src/format.c (format): Avoid compiler warning that str may be
	used uninitialized.

2006-07-21  Eric Blake  <ebb9@byu.net>

	* src/m4.h [UNIX]: Add more platforms that are close enough to
	categorize as UNIX, but which don't predefine __unix__.
	Reported by Nelson H. F. Beebe.

2006-07-20  Eric Blake  <ebb9@byu.net>

	* m4/gnulib-cache.m4: gnulib-tool has changed again.  Regenerate
	to explicitly ask for --assume-autoconf=2.60.

2006-07-19  Eric Blake  <ebb9@byu.net>

	* doc/m4.texinfo (Sysval): Avoid kill -1, since ksh traps SIGHUP
	and exits normally with 129.
	Reported by Nelson H. F. Beebe.
	* THANKS: Update.

	* src/m4.h (EXIT_MISMATCH): Define.
	* src/freeze.c (reload_frozen_state): Detect version mismatch, by
	exiting with status 63.
	* src/m4.c (usage): Document this.
	* doc/m4.texinfo (Invoking m4, Using frozen files): Likewise.
	* NEWS: Likewise.

	* doc/m4.texinfo (copying): Relax restriction on front-cover and
	back-cover texts.

2006-07-17  Eric Blake  <ebb9@byu.net>

	* src/format.c (format): Support F, g, and G specifiers.
	* doc/m4.texinfo (Format): Document this.
	* NEWS: Document this addition.

	* doc/m4.texinfo (Builtin): Delete redundant text.

	* configure.ac (AC_INIT): Bump version number.
	* src/builtin.c (substitute): Bah.  Fix buffer overrun.
	* NEWS: Document this fix.

2006-07-15  Eric Blake  <ebb9@byu.net>

	Release 1.4.5:
	* configure.ac (AC_INIT): Bump version number.
	* NEWS: Describe changes since 1.4.4.

	* src/m4.c (usage): Document exit status.
	* doc/m4.texinfo: Use `exit status', not `exit code'.
	(Invoking m4): Document exit status.

	* bootstrap: Backport --help, --version from head.
	(func_update): New function, for easily grabbing up-to-date files
	from gnulib.
	* Makefile.maint (web-manual): Fix for VPATH builds.

2006-07-14  Eric Blake  <ebb9@byu.net>

	* doc/m4.texinfo: Global cleanup.  Avoid @code{...}'d, as it
	looks bad in info.  Use @deffn rather than @example for
	describing prototypes.  Fix awkward wording and grammar.

	* src/builtin.c (substitute): Warn on bad escape sequences.
	Ignore trailing backslash.
	* doc/m4.texinfo (Regexp): Add documentation for this.
	* NEWS: Document this change.

	* src/builtin.c (m4_format, m4_indir): Warn on too few arguments.
	* doc/m4.texinfo (Defn, Builtin, Debug Levels, Debug Output): Add
	more examples.
	(Dnl): Update example to show side effects.
	* checks/get-them: Generate three digit test names.
	* checks/Makefile.in (CHECKS): Accomodate 100+ tests.

2006-07-13  Eric Blake  <ebb9@byu.net>

	* src/input.c (input_init): Simplify.
	(set_word_regexp): Treat empty string as default, since empty
	regexp would disable word parsing.
	* src/m4.c (user_word_regexp): Default to empty string.
	* src/builtin.c (builtin_tab): Make changeword blind.
	* doc/m4.texinfo (Changeword): Document this.
	* NEWS: Document this.
	* TODO: Knock off completed items.

	* src/builtin.c (m4_undefine, m4_popdef): Visit all arguments, not
	just the first.
	* doc/m4.texinfo (Undefine, Pushdef): Test this.
	* NEWS: Document this change.

	* src/builtin.c (numeric_arg): Treat empty string as 0, with a
	warning.  Detect quoted leading space and overflow as warnings.
	(m4_eval): Treat empty radix as 10, and allow output in radix 1.
	Treat width as minimum number of digits, as required by POSIX.
	(m4_ifdef, m4_divert, m4_m4exit, m4_translit): Ignore extra
	arguments.
	(m4_substr): Likewise.  Silently treat empty start as 0.
	(m4_undivert): Treat ` 1a' as file, not diversion 1.
	* src/eval.c (eval_lex): Parse radix 1 numbers.
	* doc/m4.texinfo (Invoking m4): Fix wording; there is more than
	one type of warning.
	(Manual): Document behavior of numeric parsing of empty string.
	(Divert, Incr): Document error handling.
	(Eval): Document radices better.
	(Incompatibilities): Document translit incompatibility.
	* NEWS: Document these changes.

	* Makefile.maint (fetch): Get gendocs from gnulib, not texinfo.
	(web-manual): Simplify.
	* m4/gnulib-cache.m4: Augment with gnulib-tool --import gendocs.
	* Makefile.am (EXTRA_DIST): Distribute gendocs.sh.
	(MAINTAINERCLEANFILES): Clean it as well.
	* doc/Makefile.am (EXTRA_DIST): Distribute gendocs_template.
	(MAINTAINERCLEANFILES): Clean it as well.

2006-07-12  Eric Blake  <ebb9@byu.net>

	* doc/m4.texinfo (Extensions): Document how to overcome
	implementation difference in > 9 positional parameters.

	* src/m4.c (usage): Sort within sections.
	(nesting_limit): Raise default from 250 to 1024.
	* doc/m4.texinfo: Use file name, not filename, per GNU coding
	standard.  Use @option where appropriate.
	(Invoking m4): Sort to match --help output.
	(Debug Levels): Sort.
	(Frozen files): Sort and break into two nodes.

	* src/m4.c (nesting_limit): Raise default from 250 to 1024.
	* NEWS: Document raised -L limit.

2006-07-11  Eric Blake  <ebb9@byu.net>

	* Makefile.am (DISTCHECK_CONFIGURE_FLAGS): New macro, to
	stress-test changeword before a release.
	* doc/m4.texinfo: More doc cleanups.
	(Copying This Manual): New node; actually include the FDL in the
	documentation.
	* doc/Makefile.am (m4_TEXINFOS): Mention dependence on fdl.texi.
	* m4/gnulib-cache.m4: Augment with gnulib-tool --import fdl.
	* NEWS: Mention documentation improvements.

	* src/m4.h (OS2): New platform macro.
	* src/builtin.c (predefined_tab) [OS2]: Use it to give OS/2 a
	platform macro.
	* doc/m4.texinfo (Platform macros): Document it.
	(Sysval): Remove non-portable test of system("").
	* NEWS: Document this change.
	Reported by Andreas Buening.

2006-07-09  Eric Blake  <ebb9@byu.net>

	* doc/m4.texinfo (Undivert): Fix typo in last commit.
	* src/m4.c (usage): Document M4PATH.
	* src/path.c (path_search): Reject empty string.
	* src/output.c (insert_diversion): Ignore diversion 0.
	* src/builtin.c (m4_undivert): Ignore empty string.
	* NEWS: Document this fix.

2006-07-08  Eric Blake  <ebb9@byu.net>

	* checks/get-them: Make filtering easier.
	* checks/check-them: Filter non-input lines, so line counts are
	more realistic in the documentation, and so changeword tests work
	even when dnl is disabled.
	* doc/m4.texinfo: Adjust example line numbers.  Clean up
	front-matter, following autoconf's example.
	(Changeword): Enable tests, skipping if changeword not supported.
	(Define, Defn, Ifelse): Backport more examples from head.
	(Input processing, Answers): New nodes, backported from head.
	(Include): Expand test to cover empty filename.
	(Undivert): Add test of undivert(0).

2006-07-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* doc/m4.texinfo: Fix spelling errors.

2006-07-07  Eric Blake  <ebb9@byu.net>

	* THANKS: Update.

	* doc/Makefile.am (m4.1): No need to go through a temporary file;
	this also ensures timestamps are updated.
	* src/m4.h (includes): Require config.h.  Assume string.h,
	stdlib.h, errno.  Include error.h, exit.h, and xalloc.h rather
	than prototyping ourselves.
	(builtin_func): Add parameter type-checking.
	(voidstar): Delete, now that we assume C89.
	* src/builtin.c, src/m4.c, src/macro.c, src/symtab.c: All users of
	voidstar changed.
	* src/m4.c (xfree) [WITH_DMALLOC]: Avoid clash with dmalloc's
	xfree.

2006-07-06  Eric Blake  <ebb9@byu.net>

	* m4/gnulib-cache.m4: Augment with gnulib-tool --import
	binary-io.
	* src/m4.h (includes): Add binary-io.h for O_BINARY.
	* src/freeze.c (produce_frozen_state): Use O_BINARY to remove
	#ifdef.  Fixes patch from 2005-02-03 for cygwin.
	* NEWS: Mention this fix.

	* configure.ac (FUNC_SYSTEM_BROKEN): New check for OS/2 bug.
	* src/builtin.c (m4_syscmd): Work around OS/2 bug.

	* Makefile.am (SUBDIRS): Build . before src, so that autoheader
	runs first when needed.
	* doc/Makefile.am (m4.1): Backport rule from CVS head: build m4.1
	once in srcdir rather than multiple times in VPATH builds.

2006-07-03  Eric Blake  <ebb9@byu.net>

	* checks/check-them: Use portable = in test.
	* src/Makefile.am (AM_CPPFLAGS): Omit space between -I and
	directory, as required by Solaris cc.  Include built headers, as
	required by Solaris make in VPATH build.
	* checks/Makefile.in: Use $(srcdir) where needed.
	(CHECKS): Factor $(srcdir) into macro.
	(DISTFILES): Likewise.  Automake takes care of distributing
	Makefile.in.
	(dist): Simplify.
	(Makefile): Use modern syntax of config.status.
	* doc/m4.texinfo (Loops, Include, Undivert, Incompatibilities):
	Avoid overfull and underfull hboxes in dvi.

	Fix 'make check' in VPATH build.  All files included by testsuite
	now live in a single directory.  Use forloop.m4 in testsuite.
	* checks/incl.m4, checks/foo, checks/wrapfifo.m4: Move from
	here...
	* examples/incl.m4, examples/foo, examples/wrapfifo.m4: ...to
	here.
	* checks/Makefile.in (DISTFILES): Don't distribute moved files.
	* examples/Makefile.am (EXTRA_DIST): Distribute new files.
	* checks/check-them: Avoid s/// when filename is in pattern.
	* examples/forloop.m4: Fix to match documentation.
	* doc/m4.texinfo (Include, Undivert, Incompatibilities): Reflect
	new locations.
	(Loops, Format): Actually use forloop.m4 in tests.

2006-07-02  Eric Blake  <ebb9@byu.net>

	* checks/Makefile.in (exec_prefix, prefix): New macros, so that
	$(bindir) works in installcheck.
	(check, installcheck): No longer change directory, so that
	distcheck works with a read-only builddir.
	* checks/check-them: Work when pwd is no longer builddir.

2006-07-01  Eric Blake  <ebb9@byu.net>

	* GNUmakefile: New file, borrowed from coreutils.
	* Makefile.am (EXTRA_DIST): Distribute GNUmakefile.
	* Makefile.maint (Makefile): Delete this rule, now that
	GNUmakefile includes Makefile.

2006-06-30  Eric Blake  <ebb9@byu.net>

	For compatibility with other m4 implementations, sysval returns
	signal<<8 rather than 0 if syscmd is terminated by a signal.
	* configure.ac (AC_CHECK_HEADERS_ONCE): Check for sys/wait.h.
	* src/builtin.c (include): Include sys/wait.h when stdlib.h does
	not provide wait macros.
	(WTERMSIG, WIFSIGNALED, WIFEXITED): More fallback macros.
	(M4SYSVAL_EXITBITS, M4SYSVAL_TERMSIGBITS): New helper macros.
	(m4_esyscmd): Set sysval to -1 on failure.
	(m4_sysval): Print 127 on failure, and accomodate signals if they
	are detectable.
	* NEWS: Document this change.
	* doc/m4.texinfo (Platform macros, Esyscmd, Sysval): Fix typos in
	last commit.
	* checks/check-them: Likewise.
	* src/debug.c (debug_set_file): Work around mingw fstat bug.

	* src/m4.h (UNIX, W32_NATIVE): Improve platform detection macros.
	* src/freeze.c (produce_frozen_state): Use new spelling of
	platform macro.
	* src/builtin.c (predefined_tab): Add __windows__ on non-unix
	platforms.
	(m4_syscmd, m4_esyscmd): The empty command is successful.
	* doc/m4.texinfo (Shell commands): Rename from UNIX commands.
	Document platform-dependence of system().
	(Syscmd): Add example.
	(Esyscmd): Make example more robust, and actually demonstrate
	rescanning.
	(Sysval): Expand test to cover esyscmd code path, and to check
	that empty command is successful.  Add conditional check for
	signal behavior.
	(Other Incompatibilities): Move platform macros from here...
	(Platform macros): ...to this new node.  Add windows macro.
	Check that exactly one platform macro is provided.
	* checks/check-them: Improve trap cleanup.  Tolerate dirname and
	.exe in error messages.  Allow for skipping checks.
	* configure.ac (HAVE_EFGCVT): Kill dead configure check.
	* NEWS: Document platform macros.

2006-06-29  Eric Blake  <ebb9@byu.net>

	Fix buffer overrun bug.
	* m4/gnulib-cache.m4: Augment with gnulib-tool --import
	xvasprintf.
	* src/format.c [HAVE_EFGCVT]: Delete this code, and use *printf
	variant instead, since [efg]cvt are obsolete and our use of them
	was buggy (savannah sr #104303).
	(format): Fix buffer overflow by using xasprintf.
	* doc/m4.texinfo (Format): Expand format test to catch both bugs.
	* NEWS: Document this fix.

	* configure.ac (AC_CANONICAL_HOST, AC_CANONICAL_BUILD): Allow
	cross-compilation.
	(AC_CACHE_CHECK): Cache search for ecvt.

2006-06-27  Eric Blake  <ebb9@byu.net>

	* doc/m4.texinfo (Eval): Document 32-bit signed limitations
	required by POSIX, and add example that exposed core dump on x86
	architectures.
	(Incompatibilities): Document incompatibility in eval precedence.
	* src/eval.c (shift_term): Explicitly mask, to avoid undefined
	behavior.
	(mult_term): Explicitly check for -1, to avoid SIGFPE on x86.
	* NEWS: Document this change.

	* doc/m4.texinfo: Use @noindent consistently.
	(Quoting Arguments): Document that unquoted parentheses group
	arguments.
	(Pseudo Arguments): Expand tests to show this.
	(Incompatibilities): Contrast traditional behavior of
	changequote.

2006-06-24  Eric Blake  <ebb9@byu.net>

	* configure.ac (AC_PREREQ): Autoconf 2.60 is now released.
	(AC_CHECK_HEADERS_ONCE): Use this new feature.
	(AC_CHECK_FUNCS_ONCE): Likewise.

2006-06-23  Eric Blake  <ebb9@byu.net>

	* doc/m4.texinfo: Quoting cleanup throughout - follow
	autoconf-recommended style of one level of quote per parenthesis
	in the normal case.  Adjust error messages to match GNU coding
	standards (and to allow 'make check' to pass again).
	(Quoted strings, Inhibiting Invocation): Turn more examples into
	tests.
	(Comments): Resolve FIXME by adding example.
	(Define): Add example about underquoting.
	(Defn): Add example about use of $0.
	(Indir, Format): Resolve FIXME done in last commit.
	(Ifelse): Add example about creating blind macro.
	(Debugging): Fix grammar.
	(Dnl): Add example about dnl with arguments.
	(M4wrap): Be explicit that LIFO order is non compliant, and will
	change in m4 2.0.
	(Undivert): Resolve FIXME by adding example.
	(Frozen files): Document that m4wrap and sysval will not work
	consistently until m4 2.0.
	(Incompatibilities): Document another POSIX compliance bug, this
	time with changequote.  Document a traditional incompatibility
	with partial input spanning file boundaries.

	Make error messages more consistent with GNU coding standards -
	start with lower case, and don't end sentence with punctuation.
	* src/debug.c (trace_pre): Update message wording.
	* src/eval.c (evaluate, cmp_term, shift_term, mult_term):
	Likewise.
	* src/freeze.c (produce_frozen_state, issue_expect_message),
	(reload_frozen_state): Likewise.
	* src/input.c (push_string_init, pop_init, init_macro_token),
	(peek_input, next_char_1, set_word_regexp, next_token): Likewise.
	* src/m4.c (stackovf_handler, main): Likewise.
	* src/macro.c (expand_token, expand_argument, call_macro),
	(expand_macro): Likewise.
	* src/output.c (make_room_for, output_text, insert_file),
	(freeze_diversions): Likewise.
	* src/symtab.c (symtab_init, lookup_symbol): Likewise.

	* src/builtin.c (builtin_tab): Make format and indir blind.
	(substitute): Prefer "Warning:" vs. "ERROR:" in messages.
	* NEWS: Mention the change to builtins.

2006-06-22  Eric Blake  <ebb9@byu.net>

	Robustify frozen file format.
	* src/freeze.c (reload_frozen_state): Add GET_DIRECTIVE helper
	macro.  Require V first, and only accept it once.  For F, use
	placeholder if builtin is not found, rather than warning.
	* src/m4.h (m4_placeholder): New prototype.
	* src/builtin.c: Unify error message style.
	(m4_placeholder): New function, warn if invoked.
	(builtin_tab): Add m4_placeholder.
	(m4_defn): Warn if placeholder is encountered.
	(find_builtin_by_addr): Handle placeholder.
	(find_builtin_by_name): Return placeholder on failure.
	(m4_builtin): Treat placeholder as undefined.
	* doc/m4.texinfo (Frozen files): Document changes in V and F.
	* NEWS: Document this change.
	Reported by Bruno Haible.

	* doc/m4.texinfo: Whitespace cleanup.  TABs are evil in texinfo.
	(tabchar): New macro, so that 'make check' still works.
	(Invoking m4): Document that ignored compatibility options -B, -S,
	and -T each consume an argument.
	* checks/get-them: Honor @tabchar{}.

	Avoid compiler warnings during -DDEBUG.
	* src/m4.h (M4_GNUC_ATTRIBUTE, M4_GNUC_UNUSED): New macros.
	[DEBUG]: Also imply DEBUG_OUTPUT and DEBUG_STKOVF.
	* src/input.c (print_token) [DEBUG_INPUT]: Use correct format.
	(lex_debug) [DEBUG_INPUT]: Fix to compile.  Mark unused.
	(next_token) [DEBUG_INPUT]: Print before returning.
	* src/path.c (include_dump) [DEBUG_INCL]: Mark unused.
	* src/symtab.c (symtab_debug) [DEBUG_SYM]: Mark unused.

	Avoid mkstemp bugs on various platforms.
	* m4/gnulib-cache.c: Augment with gnulib-tool --import mkstemp.
	* src/output.c [! HAVE_MKSTEMP]: Delete.
	* configure.ac (AC_CHECK_FUNCS): Don't check for mkstemp.
	* src/m4.h (mkstemp) [! HAVE_MKSTEMP]: Prototype, if needed.
	* NEWS: Document this.

	* Makefile.am (EXTRA_DIST): Distribute gnulib-cache.m4.
	Reported by Bruno Haible.

2006-06-21  Eric Blake  <ebb9@byu.net>

	Avoid obsolete sigstack when POSIX sigaltstack is available.
	* src/m4.c: Blindly assume signal.h, since stackovf.c and gnulib
	do likewise.
	* configure.ac (AC_CHECK_HEADERS): Likewise.
	(AC_CHECK_TYPES): New check for siginfo_t, since siginfo.h is
	obsolete and most hosts now have it in signal.h.
	(AC_CHECK_MEMBERS): New check for sigaction.sa_sigaction.
	(AC_CACHE_CHECK): Cache decision to use stackovf.
	(AC_EGREP_HEADER): Switch to AC_CHECK_TYPES.
	* src/stackovf.c (DEBUG_STACKOVF): Remove unused define.
	(SA_RESETHAND, SA_SIGINFO): Provide fallback definitions, to
	simplify later code.
	(PARAM_STACKOVF, PARAM_NOSTACKOVF): Move further away from NULL,
	in case of dereferencing a member of a NULL pointer.
	(sigsegv_handler) [HAVE_STRUCT_SIGACTION_SA_SIGACTION]: Define a
	POSIX handler.
	(setup_stackovf_trap): Use NULL instead of 0 for pointers, use
	EXIT_FAILURE in error, indent preprocessor directives.
	[HAVE_SIGALTSTACK && HAVE_SIGINFO_T]: Depend on siginfo_t, not
	siginfo.h.
	[HAVE_SIGACTION && defined SA_ONSTACK]: Prefer POSIX handler.
	Reported by Santiago Vila.

2006-06-19  Eric Blake  <ebb9@byu.net>

	* THANKS: Update.

2006-06-18  Andreas Buening  <andreas.buening@nexgo.de>  (tiny change)

	* checks/Makefile.in (PATH_SEPARATOR): New macro.
	(check, installcheck): Use it, for OS/2.

2006-06-18  Eric Blake  <ebb9@byu.net>

	Consistently use "GNU M4" as package name, "m4" as executable
	name.
	* NEWS: Document previous fix.
	* THANKS: Update.
	* README: Fix grammar.  Document that --enable-changeword is on
	its last leg.
	* doc/m4.texinfo (Top, Changeword): Likewise.
	(Sysval): Enhance this test.
	(History): Backport this section from CVS head, and update.

2006-06-18  Bruno Haible  <bruno@clisp.org>  (tiny change)
	    Eric Blake  <ebb9@byu.net>

	* src/builtin.c (WEXITSTATUS): Provide fallback definition.
	(m4_esyscmd): Set sysval to 0xffff, to accomodate both
	big-endian and little-endian wait status definitions.
	(m4_sysval): Use WEXITSTATUS.
	Reported by Andreas Buening.

2006-06-18  Eric Blake  <ebb9@byu.net>

	* configure.ac (AC_INIT): Bump version number.
	* NEWS: Describe changes in 1.4.4c.

2006-06-17  Eric Blake  <ebb9@byu.net>

	Beta Release 1.4.4b:
	* configure.ac (AC_INIT): Bump version number.
	* NEWS: Describe changes since 1.4.4.
	* Makefile.maint (cvs-news): Accomodate copyright line wrapping.

	* Makefile.am (MAINTAINERCLEANFILES): Clean files added by
	bootstrap.
	* checks/Makefile.in (maintainer-clean): Add missing target.
	* COPYING: Remove generated file from CVS.

2006-06-16  Eric Blake  <ebb9@byu.net>

	* checks/Makefile.in (DISTFILES): Distribute wrapfifo.m4.

2006-06-15  Eric Blake  <ebb9@byu.net>

	* checks/wrapfifo.m4: New file.  Use it...
	* doc/m4.texinfo (Incompatibilities): here, in a new test case to
	demonstrate how to get POSIX behavior of m4wrap prior to m4 2.0.

	* src/m4.h (to_uchar): New function.
	* src/eval.c (eval_lex): Use it to avoid passing signed char to
	isdigit, isalpha, isupper, islower, isspace, isalnum.
	* src/builtin.c (expand_user_macro): Likewise.
	* src/format.c (format): Likewise.
	* src/macro.c (expand_argument): Likewise.
	* NEWS: Document this security fix.

	Message cleanup.
	* src/symtab.c (lookup_symbol): Use invalid, not illegal.
	* src/freeze.c (reload_frozen_state): Fix typo in message.
	(produce_frozen_state): Standardize on builtin, not built-in.
	* src/builtin.c (numeric_arg, bad_argc): Likewise.

	* configure.ac (M4_EARLY, M4_INIT): Use gnulib.
	(AC_PROG_RANLIB, AC_AIX, AC_MINIX, AC_CHECK_HEADERS),
	(AC_FUNC_ALLOCA, AC_REPLACE_FUNCS): Avoid checks now done by
	gnulib.
	* Makefile.am (ACLOCAL_AMFLAGS): New entry, for gnulib.
	* m4/gnulib-cache.m4: New file, from gnulib.
	* bootstrap: Invoke gnulib-tool --update.
	* src/m4.c (main): Cast away const.
	* NEWS: Document that regex is updated.
	* THANKS: Update.

2006-06-08  Eric Blake  <ebb9@byu.net>

	* configure.ac (changeword): Work even when changeword is not a
	macro.
	(AC_PROG_AWK, AC_PROG_INSTALL, AC_PROG_MAKE_SET, AC_HEADER_STDC):
	Delete; now done by automake.
	(AC_ISC_POSIX, AC_C_CONST): Delete; now obsolete.

2006-06-07  Eric Blake  <ebb9@byu.net>

	* lib/regex.c (bcmp_translate): Canonicalize type name.
	* doc/Makefile.am (MAINTAINERCLEANFILES): Fix typo.
	* configure.ac (changeword): Disable changeword for the creation
	of configure, in case of bootstrapping with an m4 configured with
	--enable-changeword.

	Distribute a rudimentary man page.
	* Makefile.am (SUBDIRS): Move doc after src so that 'm4 --help'
	can feed help2man.
	* doc/Makefile.am (man_MANS, EXTRA_DIST, MAINTAINERDISTCLEAN),
	(SUFFIXES, m4.1): New macros and rules to build m4.1.

2006-06-06  Eric Blake  <ebb9@byu.net>

	* lib/regex.c (re_match_2_internal, bcmp_translate): Avoid
	compiler warnings at -O2.
	* lib/getopt.c (_getopt_internal): Likewise.

	Cleanup of previous patches.
	* src/input.c (struct input_block): Remove traced member.
	(push_macro, init_macro_token): Don't pass trace status around.
	* src/m4.h (struct token_data): Remove traced member.
	(struct symbol, struct builtin): Reduce unused space.
	(TOKEN_DATA_FUNC): Simplify.
	(TOKEN_DATA_FUNC_TRACED): Remove unused macro.
	(push_macro, define_builtin): Remove unused parameter.
	* src/builtin.c (define_builtin, builtin_init, define_macro),
	(m4_defn): Don't pass trace status around.
	* src/macro.c (expand_argument): Likewise.
	* src/freeze.c (reload_frozen_state): Likewise.
	* src/symtab.c: Whitespace cleanup.
	* NEWS: Clean up wording.
	* doc/m4.texinfo (Undefine, Dumpdef, Trace): Cleanup wording;
	ensure tests actually expose bugs prior to today's patches.

	Trace status of builtins is no longer inherited across
	define(...,defn(...)).  Fixes bug that autom4te had been working
	around.
	* src/builtin.c (define_builtin): Don't override trace status.
	* doc/m4.texinfo (Trace): Add test for this.
	* NEWS: Document this.

	When changing macro definitions inside the arguments to the macro,
	consistently preserve the old definition that was in effect before
	argument collection, similar to the C pre-processor.
	Reported by John Brzustowski.
	* NEWS: Document this change.
	* doc/m4.texinfo (Macro Arguments, Undefine, Dumpdef): Document
	this policy, and add tests that expose core dumps prior to this
	patch.
	* src/m4.h (struct symbol): New members to track when a symbol is
	still in use after removal from the symbol table.
	(SYMBOL_PENDING_EXPANSIONS, SYMBOL_DELETED): Define.
	(free_symbol): Prototype.
	* src/macro.c (expand_macro): Track pending expansions of a
	symbol.  On completion, if a symbol is deleted and no longer
	pending, free its memory.
	* src/symtab.c (free_symbol): Export.  Don't free memory if symbol
	is still in use.
	(lookup_symbol) <SYMBOL_INSERT>: Create new entry when old entry
	is still in use.
	(lookup_symbol) <SYMBOL_DELETE, SYMBOL_POPDEF>: Mark entries still
	in use as deleted and remove from the table without freeing
	memory.
	(symtab_print_list) [DEBUG_SYM]: More debug output.

	* src/symtab.c (hack_all_symbols): Allow certain modifications of
	the symbol table during traversal.
	* src/builtin.c (set_trace): Replace SYMBOL_DELETE with
	SYMBOL_POPDEF, since only the latter is safe with
	hack_all_symbols.

	Solve crash when passing "indir(`foo')" to "m4 -tfoo".
	* src/symtab.c (lookup_symbol) <SYMBOL_DELETE, SYMBOL_POPDEF>:
	Preserve placeholder when macro is being traced.
	* src/builtin.c (m4_ifdef, m4_indir): A traced but undefined
	symbol is not defined.
	(set_trace): Remove placeholder when no longer traced.
	(m4_traceon): On named traces, always reserve a slot in the
	symbol table.
	(m4_traceoff): Don't warn about untracing a nonexistent symbol.
	* NEWS: Document new trace behavior.
	* doc/m4.texinfo (Trace): Tracing by name now consistently works
	no matter whether that macro is currently defined.
	(Incompatibilities): Document differences between traditional and
	GNU trace.

2006-06-04  Paul Eggert  <eggert@cs.ucla.edu>  (tiny change)
	    Eric Blake  <ebb9@byu.net>

	* src/m4.h (hash_table_size): Now size_t instead of int.
	* src/m4.c (hash_table_size): Likewise.
	(main): Adjust to this; use atol rather than atoi.
	* src/symtab.c: Include <limits.h>, for CHAR_BIT.
	(symtab_init, lookup_symbol, hack_all_symbols):
	Use size_t for sizes and indexes, not int.
	(symtab_print_list) [DEBUG_SYM]: Likewise.
	(hash): Likewise.  Don't case-fold in the hash function.
	Shift by 7, not 3, for consistency with gnulib/lib/hash.c.
	Don't assume hash word is 32 bits.
	* NEWS: Document this change.

2006-06-04  Eric Blake  <ebb9@byu.net>

	* src/symtab.c (symtab_debug, symtab_print_list) [DEBUG_SYM]: Fix
	to allow compilation, for use in debugger.
	(profiles, current_mode) [DEBUG_SYM]: New variables.
	(show_profile, profile_strcmp) [DEBUG_SYM]: New methods for
	determining hash table performance.

2006-05-31  Eric Blake  <ebb9@byu.net>
	    John Brzustowski  <jbrzusto@fastmail.fm>

	* src/input.c (input_stack): Delete; use current_input instead.
	(wrapup_stack): Dynamically allocate, so that recursion is handled
	properly.
	(push_wrapup): Use current wrapup stack.
	(pop_wrapup): Rotate wrapup stack to current, and create new
	wrapup stack.
	(input_init): Dynamically allocate stacks.
	* NEWS: Update, now that recursive m4wrap can no longer cause
	core dump.

2006-05-31  Eric Blake  <ebb9@byu.net>

	* lib/getopt.c: Fix copyright year.
	* lib/obstack.c: Ditto.
	* src/builtin.c: Ditto.

2006-05-30  Eric Blake  <ebb9@byu.net>

	* doc/m4.texinfo (M4wrap): Add test to expose m4wrap bug.
	Reported by John Brzustowski.
	(Incompatibilities): Document known POSIX incompatibilities.
	* THANKS: Update.

2006-05-29  Eric Blake  <ebb9@byu.net>

	* doc/m4.texinfo (Maketemp): Work even when running 'make check'
	in read-only dir.

	Use automake.
	* Makefile.am: New file.
	* doc/Makefile.am: Ditto.
	* examples/Makefile.am: Ditto.
	* lib/Makefile.am: Ditto.
	* src/Makefile.am: Ditto.
	* acinclude.m4: New file, renamed from aclocal.m4.
	* configure.ac (AM_INIT_AUTOMAKE): Invoke new macro.
	(AC_ARG_PROGRAM): Now redundant.
	(STACKOVF): Turn into automake conditional.
	(AC_CONFIG_COMMANDS): stamp-h is a command, not a file.
	* checks/Makefile.in: Converting this dir to automake was not
	trivial; for now, just add missing targets demanded by top-level.
	* INSTALL: Remove files that are now generated from CVS.
	* Makefile.in: Ditto.
	* aclocal.m4: Ditto.
	* install-sh: Ditto.
	* mkinstalldirs: Ditto.
	* doc/Makefile.in: Ditto.
	* doc/texinfo.tex: Ditto.
	* examples/Makefile.in: Ditto.
	* lib/Makefile.in: Ditto.
	* src/Makefile.in: Ditto.

	* AUTHORS: Backport from CVS head, and update.
	* doc/m4.texinfo (Changeword): Fix examples to match behavior.

2006-05-27  Eric Blake  <ebb9@byu.net>

	* lib/regex.c (regex_compile): Kill compiler warnings.
	* lib/getopt.c: Likewise.
	* lib/obstack.c: Likewise.
	* src/builtin.c (builtin_init): Likewise.
	* src/path.c (path_search): Likewise.

	* doc/m4.texinfo: Fix usage of a vs. an.
	(Loops, Include, Cleardiv, Patsubst, Format, M4exit): Kill
	overfull hbox warnings.
	(Inhibiting Invocation, Divert, Maketemp, M4exit): Add new tests.

	* configure.ac: Update to autoconf 2.59.  Forbid ^M4_.  Fix
	quoting.
	* aclocal.m4 (fp_PROG_CC_STDC): Delete; now covered by autoconf.
	(fp_C_PROTOTYPES): Delete, GNU Coding Standards state we can now
	assume C89.
	(M4_WITH_DMALLOC): Rename from fp_WITH_DMALLOC. Fix quoting.
	* src/m4.h (_): PROTOTYPES is no longer provided, assume C89.
	* src/Makefile.in: Delete remains of ansi2knr.
	* src/ansi2knr.1: Delete.
	* src/ansi2knr.c: Delete.

2006-05-25  Eric Blake  <ebb9@byu.net>

	* doc/m4.texinfo: Fix spelling errors.  Use `invalid' instead of
	`illegal'.

	* doc/m4.texinfo (Francois): No longer needed as a tex variable.
	Reported by Karl Berry.

2006-05-24  Eric Blake  <ebb9@byu.net>

	* Makefile.in (html): New target.
	* doc/Makefile.in (html, m4.html): Likewise.
	(MAKEINFOHTML): New macro.
	* doc/m4.texinfo (Francois) [ifnottex]: Use newer texinfo
	rendering.
	(Regexp) [ifhtml]: Make cross-reference to emacs manual an
	absolute URL.
	Reported by Bob Badour.

	* THANKS: Update.  Move reporter's email addresses here, instead
	of in ChangeLog.

2006-05-11  Eric Blake  <ebb9@byu.net>

	* THANKS: Update.
	* doc/m4.texinfo (Changequote): Give testsuite exposure to bug
	patched on 2005-12-04.
	Reported by Ilya N. Golubev.

	* bootstrap: New file, so that generated files need not be stored
	in CVS.
	* Makefile.in (DISTFILES): Add bootstrap.

	Make testsuite less sensitive to doc changes.
	* doc/m4.texinfo: Use m4.input instead of filename.
	* checks/check-them (xerr): Turn m4.input into filename.
	* checks/Makefile.in (dist): Depend on stamp-checks.

	Portability updates for OS/2.
	* src/Makefile.in (EXEEXT, OBJEXT): Define.
	(LINK): Use CFLAGS.
	(.c.obj): Define.
	* lib/Makefile.in (OBJEXT): Define.
	(.c.obj): Define.
	* doc/Makefile.in (install, uninstall): Install info files into
	the dir listing.
	Reported by Andreas Buening.

2006-05-09  Eric Blake  <ebb9@byu.net>

	* install-sh: Update to newer upstream version.
	* mkinstalldirs: Likewise.
	Reported by Andreas Buening.

	* src/m4.c (main): Bump copyright year.
	* Makefile.in (datarootdir): Define, for autoconf 2.59c.
	* doc/Makefile.in (datarootdir): Likewise.

2006-05-08  Eric Blake  <ebb9@byu.net>

	* THANKS: Update.
	* doc/m4.texinfo (Bugs): Backport bug email address from head.
	Reported by Stepan Kasal.

2005-12-04  Ilya N. Golubev  <gin@mo.msk.ru>  (tiny change)

	* input.c (match_input): Do not pass expression with side effect
	to `obstack_grow'.  Fix <INTERNAL ERROR: Recursive push_string!>.
	* NEWS: Updated.

2005-12-04  Gary V. Vaughan  <gary@gnu.org>  (tiny change)

	* doc/m4.texinfo (How to debug macros and input): s/woould/would/
	Reported by Damian Menscher.

2005-10-19  Gary V. Vaughan  <gary@gnu.org>  (tiny change)

	* configure.ac (AC_INIT): Bump to 1.4.4a.

2005-10-19  Gary V. Vaughan  <gary@gnu.org>  (tiny change)

	Release 1.4.4:
	* configure.ac (AC_INIT): Bump to 1.4.4.
	* NEWS: Describe 1.4.4's changes.
	* INSTALL, install-sh, doc/texinfo.tex: Updated from upstream.

2005-10-17  John Gatewood Ham  <zappaman@buraphalinux.org>  (tiny change)

	* src/m4.c: fix return code when non-existent files are processed

2005-10-17  John Gatewood Ham  <zappaman@buraphalinux.org>  (tiny change)

	* README: update email address for bug reports.

2005-10-17  Gary V. Vaughan  <gary@gnu.org>

	* doc/m4.info: Generated files are not kept in the repository.

2005-05-01  Gary V. Vaughan  <gary@gnu.org>

	The FSF are moving offices today.  Changed their contact address
	in all files from `59 Temple Place, Suite 330, MA 02111-1307' to
	`51 Franklin Street, Fifth Floor, MA 02110-1301'.

	Also, some of the files here were never updated from the previous
	'675 Mass Ave, Cambridge, MA 02139', so changed those to the
	'51 Franklin Street, Fifth Floor, MA 02110-1301' address too.

2005-03-31  Mike Frysinger  <vapier@gentoo.org>

	* Makefile.in (bindir, infodir): Substitute from configure rather
	than hardcode.
	* doc/Makefile.in (infodir): Ditto.
	* src/Makefile.in (bindir): Ditto.
	* NEWS: Updated.

2005-03-31  Gary V. Vaughan  <gary@gnu.org>

	Changes needed to automate the release process for 1.4.3:

	* Makefile.in (dist): Make .tar.bz2 tarball too.
	* Makefile.maint (TSDEPS_DIST): Remove m4/libtool.m4.
	(cvs-news): Look 1 line further down for NEWS release number.
	(cvs-dist): We don't use automake, so make dist is fine.
	Remove double . before suffixes.
	(cvs-release): Don't mention manual.html.
	(fetch): Get latest gendocs files.
	(web-manual): Rewritten to use gendoc for multiformat manuals.
	* doc/gendocs.sh: Don't save an old version in m4 CVS!
	* doc/m4.texinfo (Index): HFS+ (the file system on my Mac) is case
	preserving, but case insensitive, so generating html docs per node
	clashes between Index.html, the node file, and index.html, the
	top-level of the document tree...
	(Index macro): ...so renamed to this.  Changed all references.

2005-03-31  Gary V. Vaughan  <gary@gnu.org>  (tiny change)

	* configure.ac (AC_INIT): Bump to 1.4.3a.

2005-03-31  Gary V. Vaughan  <gary@gnu.org>  (tiny change)

	Release 1.4.3:
	* configure.in (AC_INIT): Bump to 1.4.3.
	* NEWS: Describe 1.4.3's changes.

2005-03-31  Gary V. Vaughan  <gary@gnu.org>

	* Makefile.maint: New file with release rules, from CVS libtool.
	* Makefile.in (DISTFILES): Add Makefile.maint.
	* INSTALL, install-sh, doc/texinfo.tex: Updated to latest
	canonical versions.

2005-03-31  Eric Blake  <ebb9@byu.net>  (tiny change)

	* doc/m4.texinfo (Patsubst): Re-add trailing space required by
	checks/47.patsubst, with a redundant @comment to prevent emacs
	from removing it accidentally again.
	* checks/get-them: Allow for trailing spaces tucked behind
	@comment marks.

2005-03-31  Eric Blake  <ebb9@byu.net>  (tiny change)

	* doc/Makefile.in (install, uninstall): Accomodate DESTDIR.
	* src/Makefile.in (install, uninstall): Likewise.

2005-02-07  Gary V. Vaughan  <gary@gnu.org>

	* lib/regex.c, lib/regex.h:  Reverted gnulib update, which broke
	on Cygwin.
	Reported by Eric Blake.

2005-02-04  Gary V. Vaughan  <gary@gnu.org>

	* lib/regex.c, lib/regex.h: Updated from gnulib.
	* src/input.c (set_word_regexp):  Don't change the word_regexp
	unless it compiles correctly.
	* NEWS: Updated.
	Reported by Frank Schwidom.

	* Makefile.in (stamp-h): Regenerate config.h properly.

2005-02-03  Gary V. Vaughan  <gary@gnu.org>

	* configure.ac (AC_DEFINE): Fix overquoting of description
	argument.

	* src/m4.h (__CYGWIN__, WIN32): Canonicalise Windows and Cygwin
	recognition macros.
	* src/freeze.c (produce_frozen_state): Use \n line-endings even
	on Windows, so that the frozen file reader will work.
	Reported by Josef T. Burger.

	* src/m4.c (main): Modernise the --version output.

2005-02-03  Gary V. Vaughan  <gary@gnu.org>

	Modernise the configury a little to prevent spurious errors from
	Autoconf-2.59's autoreconf:

	* config.h.in: Renamed to...
	* config-h.in: ...this to better support DOS 8.3 file systems.
	* acconfig.h: Removed.
	* configure.in: Renamed to...
	* configure.ac: ...this, and AC_DEFINE used to declare config.h
	entry comments.  Slight reorganisation and reformatting.
	* aclocal.m4: Use third argument to AC_DEFINE to declare config.h
	entry comments.
	(AC_INIT): Use a modern 3 argument call.
	* Makefile.in, checks/Makefile.in, doc/Makefile.in,
	examples/Makefile.in, lib/Makefile.in, src/Makefile.in:
	s/PRODUCT/PACKAGE/g.
	* Makefile.in (DISTFILES): Removed acconfig.h, configure.in,
	config.h.in.  Added configure.ac, config-h.in.
	(stamp-h.in): Removed acconfig.h from dependencies.
	(configure): Depends on configure.ac, not configure.in.
	* doc/Makefile.in (stamp-vti): Ditto.
	* src/freeze.c (produce_frozen_state), src/m4.c (main): Adjust for
	difference between PRODUCT="m4" and PACKAGE="GNU M4".
	* configure: Regenerated.

2005-02-03  Noah Misch  <noah@cs.caltech.edu>

	* src/output.c (mkstemp): Make non-static, and build regardless of
	HAVE_TMPFILE; src/builtin.c also needs this replacement.
	* NEWS: Update.

2004-09-09  Vincent Lonngren  <Vincent.lonngren.759@student.lu.se>

	* configure.in (AC_CHECK_HEADERS): Commit works best when you save
	changes from your editor buffer first.

	* configure.in (AC_CHECK_HEADERS):  Add signal.h, sys/signal.h.
	* src/m4.c: And include them as appropriate.
	* NEWS: Updated.

2004-09-09  Andreas Schwab  <schwab@suse.de>

	Refactoring of the string read case in next_char provides about a
	20% speedup of M4 as typically used by autoconf:

	* src/input.c (next_char_1): Renamed from next_char.
	(next_char): New macro.
	* NEWS: Updated.

2004-08-21  Gary V. Vaughan  <gary@gnu.org>

	* configure.in (VERSION): Bump to 1.4.2a.

2004-08-19  Paul Eggert  <eggert@twinsun.com>

	Release 1.4.2.
	* configure.in (VERSION): Bump to 1.4.2.
	* News: Describe 1.4.2's changes.

	* src/m4.c (reference_error): Preserve errno, since M4ERROR
	relies on this.
	* src/builtin.c (m4_esyscmd): Clear errno before calling popen.
	(m4_maketemp): Clear errno before calling mkstemp.
	* src/path.c (path_search): Don't let "free" trash errno when
	returning NULL.
	* src/output.c (insert_file): Don't assume errno has a valid
	value simply because fread returns zero.  This fixes a
	portability bug reported by Marion Hakanson in
	<http://lists.gnu.org/archive/html/bug-m4/2004-07/msg00029.html>.

2004-06-09  Gary V. Vaughan  <gary@gnu.org>

	* configure.in (VERSION): Bump to 1.4.1a.
	* NEWS: Place holder for next stable release.

2004-06-03  Paul Eggert  <eggert@cs.ucla.edu>

	Release 1.4.1.
	* configure.in (VERSION): Bump to 1.4.1.
	* NEWS: Describe 1.4.1's changes.

	* aclocal.m4 (fp_PROG_CC_STDC): Use AC_DEFUN, not define, to
	pacify Autoconf 2.59.

	* doc/m4.texinfo: Insert commas after @xref's that lack them,
	to pacify Texinfo 4.7.
	* doc/Makefile.in (info): Remove info-1, info-2, info-3.

	* src/m4.h, src/debug.c: Use #ifdef __STDC__, not #if __STDC__, to
	pacify Sun C compilers.

2003-09-28  Akim Demaille  <akim@epita.fr>

	* src/symtab.c (lookup_symbol): Fix an uninitialized-variable
	botch.

2003-09-03  Santiago Vila  <sanvila@debian.org>

	* examples/stackovf.sh: Use tempfile if available.

2001-04-02  Robert Bihlmeyer  <robbe@orcus.priv.at>

	http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=92629
	* src/output.c (m4_insert_file): Do not mix buffered and
	unbuffered I/O, as this breaks on the Hurd.  (trivial change)

2001-02-01  Santiago Vila  <sanvila@debian.org>

	http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=84451
	* src/m4.c (main): Fix format vulnerabilities.  (trivial change)

2001-02-01  Matt Kraai  <kraai@debian.org>

	http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=84416
	* doc/m4.texinfo (Maketemp): Change maketemp to refer to a new,
	empty file rather than to a nonexistent file.  This closes a common
	security hole.
	* src/builtin.c (m4_maketemp): Implement the above, by using
	mkstemp rather than mktemp.  (trivial change)

2000-01-09  Akim Demaille  <demaille@inf.enst.fr>

	* src/builtin.c (expand_ranges): Added break after trailing dash.
	This caused misbehaviors on some systems.

Sat Nov  5 15:52:47 1994  François Pinard  (pinard@icule)

	Release 1.4.
	* doc/Makefile.in (realclean): Also remove stamp-vti.
	Reported by Eric Backus.

Wed Nov  2 00:47:53 1994  François Pinard  (pinard@icule)

	* src/freeze.c (produce_frozen_state): If the frozen file cannot
	be opened, return immediately after producing the error message.
	Reported by Andreas Schwab.

	* configure.in: Check for const only after having found possible
	ANSIfying compiler flags, this is of no use to check it before.
	Reported by Alexander Lehmann.

Tue Nov  1 22:02:37 1994  François Pinard  (pinard@icule)

	* src/macro.c (collect_arguments): Cast obstack arguments to
	(voidstar), so avoiding compiler warnings.
	Reported by Joseph E. Sacco.

	* src/freeze.c (produce_frozen_state): Cast printed lengths to
	(int) so they correspond to %d format items.
	Reported by Joseph E. Sacco.

	* src/m4.c (main): Cast the argument to xfree to (voidstar).
	* src/symtab.c (free_symbol): Idem.
	Reported by Karl Vogel.

Mon Oct 31 02:11:19 1994  François Pinard  (pinard@icule)

	* Makefile.in (DISTFILES): Distribute BACKLOG.

	* configure.in: Define PRODUCT and VERSION.
	* acconfig.h: Document PRODUCT and VERSION.
	* src/m4.c, src/freeze.c: Use PRODUCT and VERSION instead of the
	constant string m4 and variable or parameter named version.

Sun Oct 30 08:13:03 1994  François Pinard  (pinard@icule)

	* src/m4.h, src/debug.c: Replace all #ifdef __STDC__ by #if
	__STDC__.  Alliant FX/2800 Concentrix 2.2 (i860-BSD4.3) compiler
	defines __STDC__ to 0, for indicating it is *not* ANSI!
	Reported by Kaveh R. Ghazi.

	* configure.in: Added obsolescent tests for AIX and Minix.

	* doc/Makefile.in (mostlyclean): Remove texclean in dependencies,
	which texclean does not exist anymore.
	Reported by Eric Backus, Jim Meyering, John David Anglin and
	Joseph E. Sacco.

Sat Oct 29 05:10:03 1994  François Pinard  (pinard@icule)

	* aclocal.m4 (fp_C_PROTOTYPES): Force -D_HPUX_SOURCE with -Aa.
	Reported by John David Anglin.

	* src/ansi2knr.c: New version, sent by Peter Deutsch.
	* aclocal.m4 (fp_C_PROTOTYPES): Substitute empty or ansi2knr for
	ANSI2KNR, depending on the fact the compiler is ANSI or not.
	* src/Makefile.in: Use -Ovarargs=convert on ansi2knr calls.
	Remove the sed filter after ansi2knr for debug.c.  Use $O instead
	of $U, put underline in extensions rather than in basenames.  Use
	implicit rules, now that regularity makes this possible.
	Have $(OBJECTS) depend on $(ANSI2KNR), so to trigger compilation
	of ansi2knr whenever it is needed.
	* configure.in: Adjusted for correct STACKOVF substitution.
	* src/debug.c (trace_format): When not __STDC__, use (...) as a
	parameter list, so ansi2knr will convert it to (va_alist) va_dcl.
	Reported by David MacKenzie.

	* Makefile.in: Remove binprefix.  Use transform_name instead.
	Reported by David MacKenzie.

	* doc/Makefile.in: Create version.texi, use it, clean it.
	Reported by Jim Meyering.

Fri Oct 28 20:33:55 1994  François Pinard  (pinard@icule)

	* Makefile.in (all, install, uninstall): Depend on Makefile.

	* Makefile.in: For actions invoking $(MAKE) from within compound
	sh statements, exit non-zero if the sub-make fails.  Otherwise,
	the top-level make may exit successfully when it should fail.
	Reported by Jim Kingdon.

	* {,/*}Makefile.in: Use && after all cd, in case they fail.

	* {,*/}Makefile.in: Declare PRODUCT and VERSION macros.
	(dist): Use PRODUCT and VERSION instead of tricks on .fname.
	* configure.in: Substitute PRODUCT and VERSION.

	* {,*/}Makefile.in (dist): Always try a hard link before a copy.

Thu Oct 27 22:32:58 1994  François Pinard  (pinard@icule)

	* Makefile.in (mostlyclean-local): Do not remove *~.
	* */Makefile.in (mostlyclean): Idem.
	Reported by Robert E. Brown and Richard Stallman.

Sun Oct  9 08:30:13 1994  François Pinard  (pinard@icule)

	* src/m4.h: Get rid of CONFIG_BROKETS.

Sun Oct  2 16:48:10 1994  François Pinard  (pinard@icule)

	* configure.in: Use AC_ARG_PROGRAM.
	* aclocal.m4 (fp_C_PROTOTYPES): Substitute @kr@ by kr or empty.
	Reported by David MacKenzie.

Sat Oct  1 11:22:42 1994  François Pinard  (pinard@icule)

	* configure.in: Do not add -O to CFLAGS for GNU C, now that
	configure does it automatically.
	Reported by Jim Meyering.

Fri Sep 23 08:16:58 1994  François Pinard  (pinard@icule)

	* src/stackovf.c: Declare the handler_t typedef earlier in the
	code, use it for stackovf_handler.
	(setup_stackovf_trap): Use RETSIGTYPE instead of void while
	casting sigsegv_handler.
	Reported by Robert Bernstein.

	* src/m4.c (main): Initialize program_name to argv[0] without
	basename'ing it.
	Reported by Karl Berry.

Sun Sep 18 11:42:50 1994  François Pinard  (pinard@icule)

	* src/Makefile.in (TAGS): Include a ../lib/TAGS reference.
	Reported by Karl Berry.

Wed Sep 14 10:00:22 1994  François Pinard  (pinard@icule)

	* lib/Makefile.in (mostlyclean): Added.
	(TAGS): Make in $(srcdir).

	* configure.in: Use `choke me' in test, like everywhere!

	* {doc,examples,lib,src}/Makefile.in (check): Deleted, as
	unreacheable and useless.

	* doc/Makefile.in (texclean): Deleted, merged in mostlyclean.

	* lib/Makefile.in (DISTFILES): Distribute TAGS.
	(distclean): Do not remove TAGS.
	(realclean): Remove it.
	* Makefile.in: Make TAGS in lib also, not just in src.
	Reported by Karl Berry.

	* Makefile.in (distclean, realclean): Instead of recursively
	calling $(MAKE) for the -local part, allow parallel execution of
	-recursive and -local, only delay the removal of config.status,
	which is repeated in both goals.

Tue Sep 13 19:21:05 1994  François Pinard  (pinard@icule)

	Release 1.3.
	* Makefile.in: Group all *clean-recursive goals in one, using sed
	to remove `-recursive' while calling make recursively.  Also, use
	a subshell for each recursive $(MAKE).
	Reported by Jim Meyering.

	* src/m4.h (memcpy): Define with bcopy for BSD systems.
	Reported by Kaveh R. Ghazi.

	* src/Makefile.in (ansi2knr): Use $(LIBS) while linking, for SunOS
	4.1.3 requires -ldl to link even ansik2nr, and we need a way to
	specify it.

	* configure.in: Use date instead of touch for stamp-h.
	* Makefile.in (stamp-h.in): Idem.

	* Makefile.in (distclean, realclean): Force serial execution of
	both goals, in case parallel makes are being used.
	Reported by Jim Meyering.

	* src/Makefile.in (DISTFILES): Distribute TAGS.
	(distclean): Do not remove TAGS.
	(realclean): Remove it.
	Reported by Karl Berry.

Sat Sep 10 12:34:04 1994  François Pinard  (pinard@icule)

	* configure.in: Use fp_ to match aclocal.m4.  Revert _OS_ macros
	to old names, for following Autoconf.

Thu Sep  8 15:07:27 1994  François Pinard  (pinard@icule)

	* Makefile.in (MDEFINES): Remove INSTALL substitutions, for
	./install.sh will not be correctly referred to in sub-Makefiles.
	Reported by John David Anglin.

	* doc/Makefile.in (texclean): Remove *.cps and *.fns too.
	Reported by Eric Backus.

	* Makefile.in, checks/Makefile.in, doc/Makefile.in,
	examples/Makefile.in, lib/Makefile.in, src/Makefile.in: Limit
	config.status into remaking this directory's Makefile only.
	* Makefile.in (stamp-h): Do not check nor touch stamp-h.
	* configure.in (AC_OUTPUT): Touch stamp-h if CONFIG_HEADERS.
	Reported by Jim Meyering.

Tue Sep  6 12:07:33 1994  François Pinard  (pinard@icule)

	* configure.in: Correct stack overflow detection logic, taking
	care of systems having only incomplete implementations (like for
	Pyramid 9820 OSx 5.0d).
	Reported by Kaveh R. Ghazi.

	* src/Makefile.in (TAGS): Remote -t from etags call.

Fri Sep  2 10:37:10 1994  François Pinard  (pinard@icule)

	* lib/Makefile.in (install): Depend on all.

Wed Aug 31 11:17:21 1994  François Pinard  (pinard@icule)

	* examples/Makefile.in (mostlyclean): Do not depend on texclean.
	Reported by Jim Meyering and John David Anglin.

	* Makefile.in (distclean-local): Delete config.log.
	Reported by Jim Meyering.

	Solidify frozen files with respect to -P:
	* src/m4.c: Have -P set prefix_all_buitins variable instead of
	calling a function by that name.  Declare the variable.
	* src/m4.h: Adjust declaration for prefix_all_buitins.
	* src/builtin.c (builtin_init): Merge in functionality from
	previous prefix_all_buitins function, while making entries in the
	symbol table, but not modifying the builtin description itself.

	* src/freeze.c (reload_frozen_state): Add a useless `break;',
	because *many* compilers do not accept an empty `default:'.
	Reported by Akiko Matsushita, Eric Backus, John David Anglin,
	Joseph E. Sacco, Kaveh R. Ghazi, Tom McConnell and Ulrich Drepper.

	* configure.in: Use AC_TYPE_SIGNAL.
	* src/stackovf.c (setup_stackovf_trap): Use RETSIGTYPE.
	Reported by Robert Bernstein.

	* checks/Makefile.in (check): Modify PATH so check-them will find
	m4 in the src directory.
	* Makefile.in (check): Don't.
	Reported by Akiko Matsushita and Jim Meyering.

	* src/output.c (make_room_for, output_character_helper): New
	functions, for implementing a global MAXIMUM_TOTAL_SIZE instead of
	a per buffer MAXIMUM_BUFFER_SIZE.

	* src/output.c (output_text): New function, for optimizing the
	output of strings of characters.  Use it.

Tue Aug 30 01:44:29 1994  François Pinard  (pinard@icule)

	* doc, src: New directories reorganizing the distribution.
	* doc/Makefile.in, src/Makefile.in, examples/Makefile.in: New
	files.
	* Makefile.in: Adjusted.
	* configure.in: Configure new Makefiles.

	* m4.h: Declare STRING typedef.  Use it for comment and quote
	strings, adjusting all references.  (This is the rudiments of a
	beginning for the eventual withdrawal of NUL terminated strings.)
	* output.c (shipout_text): Accept a length parameter, and use it.
	All callers adjusted.

Mon Aug 29 12:27:19 1994  François Pinard  (pinard@icule)

	* m4.h: Include <unistd.h> if it exists.
	* stackovf.c: Don't.

	Clean up for current_diversion variable:
	* output.c: Move current_diversion from builtin.c.
	* m4.h: Declare current_diversion so builtin.c can access it.
	* output.c (output_init, make_diversion): Initialize or update
	current_diversion.
	* builtin.c (builtin_init, m4_divert): Leave current_diversion
	alone.

	Remove limit on number of diversions:
	* output.c: Replace ndiversion by diversions, declare it.
	(output_init): Allocate only diversion 0.
	(make_diversion): Allocate new diversions as needed.
	* m4.h, m4.c: Remove NDIVERSIONS and ndiversion related stuff.
	* m4.c: Still accept -N, but do nothing with it.
	Reported by David MacKenzie.

	Freeze diversions:
	* output.c (freeze_diversions): New function.
	* m4.h: Declare freeze_diversions.
	* freeze.c: Document frozen file format, revise it, call
	freeze_diversions to add diversions to frozen format, and code to
	reload them properly.
	* m4.c: Do not undivert automatically at end when status being
	frozen.  Do not call builtin_init when reloading frozen state.

	Speed up diversion processing:
	* output.c: Add INITIAL_BUFFER_SIZE, MAXIMUM_BUFFER_SIZE,
	COPY_BUFFER_SIZE, in-memory diversion buffers, struct diversion
	structure and variables, cached variables out of output_diversion,
	reallocate_diversion_for and OUTPUT_CHARACTER.
	(shipout_text, make_diversion, insert_diversion): Adapted to new
	structures.
	(insert_file): Use better buffering.
	Reported by David MacKenzie.

Sun Aug 28 05:20:02 1994  François Pinard  (pinard@icule)

	* Makefile.in, lib/Makefile.in, checks/Makefile.in: Arrange so
	dist works from another build directory.

Sat Aug 27 14:32:45 1994  François Pinard  (pinard@icule)

	* symtab.c (hack_all_symbols): Use hash_table_size instead of
	constant HASHMAX, for -H option to work better.

	* builtin.c (DECLARE): Simplify by using _ ().

	* freeze.c: New file.
	* Makefile.in: Compile it, distribute it.
	* m4.c: Recognize, document and process --freeze-state (-F) and
	--reload-state (-R) options.  Pass a true flag to builtin_init
	only if no reloading some state.
	* builtin.c (define_builtin): Remove static specifier.
	(find_builtin_by_name): Remove static specifier.
	(builtin_init): Accept and obey a flag argument.
	* m4.h: Add declarations for freeze.c, changes for builtin.c.

Wed Aug 24 16:14:19 1994  François Pinard  (pinard@icule)

	* builtin.c (dumpdef_cmp): Rewrite so the cast protect the const
	specifier.

	* configure.in: Implement --with-dmalloc.
	* acconfig.h: Document WITH_DMALLOC.
	* m4.h: Add code for when WITH_DMALLOC.

Mon Aug 15 12:38:05 1994  François Pinard  (pinard@icule)

	* m4.c (long_options): Use "error-output", the dash was missing.
	Reported by Akiko Matsushita.

Fri Aug 12 16:38:01 1994  François Pinard  (pinard@icule)

	* m4.h: Include <sys/types.h>.
	* builtin.c, debug.c, m4.c, output.c, stackovf.c: Don't.
	* m4.h: Declare len_lquote and len_rquote as size_t, not int.
	int.
	* input.c: Declare len_lquote, len_rquote, len_bcomm and len_ecomm
	as size_t, not int.
	* builtin.c (dump_args): Declare len as size_t, not int.

	* debug.c: Prototype the forward declaration of debug_set_file.

	* builtin.c (m4_undivert):  Replace div by file, for avoiding the
	shadowing of this variable.
	* output.c (insert_diversion): Idem.

	* input.c: Delete def_rquote, def_lquote, def_bcomm and	def_ecomm.
	(input_init): Duplicate default quote and comment strings.
	(set_quotes): Free previous quote strings in all cases.  Duplicate
	even default quote strings.
	(set_comment): Free previous comment strings in all cases.
	Duplicate even default comment strings.

	* configure.in: Updated for Autoconf 2.0.
	* Makefile.in (distclean-local): Also delete config.cache.

	* m4.c (usage): Reorganize the --help output by topic.  Include a
	description for debugging flags.

Fri Jul 29 10:15:52 1994  François Pinard  (pinard@icule)

	* configure.in: If sigaction is available and SA_ONSTACK defined,
	use sigaction.  Otherwise, if sigvec is available and SV_ONSTACK
	defined, use sigvec.  Else don't compile stackovf.c.
	* stackovf.c (setup_stackovf_trap): Idem.
	Reported by Jim Avera, Karl Berry, Kaveh R. Ghazi, Matthias Rabe
	and Simon Leinen.

Thu Jul 21 22:43:17 1994  François Pinard  (pinard@icule)

	* m4.c (usage): Replace printf par fputs.

Mon Jul 18 23:48:23 1994  François Pinard  (pinard@icule)

	* Release 1.2

Sun Jul 17 08:08:25 1994  François Pinard  (pinard@icule)

	* configure.in: Check for sigaction and sigvec.  Add a new delayed
	check for RLIMIT_STACK, combine in the checking for getrlimit.
	All those things are not universally available.
	* stackovf.c: Split setting up the trap handler and catching
	signals, for better taking care of various configure outcomes.
	* examples/stackovf.sh: Correct a typo.
	Reported by Eric Backus, Jim Avera and Jim Meyering.

Sat Jul 16 20:36:19 1994  François Pinard  (pinard@icule)

	* ansi2knr.c: New version sent by its author, Peter Deutsch.

Fri Jul 15 14:36:21 1994  François Pinard  (pinard@icule)

	* Makefile.in: Modify so parallel make will not try making
	lib/libm4.a twice simultaneously.
	Reported by Jim Meyering.

Thu Jul 14 17:23:17 1994  François Pinard  (pinard@icule)

	* stackovf.c (setup_stackovf_trap): Replace "Don't" by "Do not" in
	error message, for when no code possibility exists.  Even if this
	line is completely #ifdef'ed out, it brings a syntax error.
	Reported by Andreas Schwab, Jim Meyering and Joseph E. Sacco.

	* Makefile.in (install): Have install depend on all too, for lib
	to be remade as needed.

	* examples/stackovf.sh: Try ksh, bsh and bash for shells
	providing ulimit, instead of using only ksh.
	Reported by Jim Avera and Joseph E. Sacco.

Tue Jul 12 06:54:31 1994  François Pinard  (pinard@icule)

	* Makefile.in (check): Have it depend on all instead of m4.  In
	this way, a change in lib will be detected and processed.

	* builtin.c (numeric_arg): Use strtol and verify the conversion,
	instead of using sscanf which stops as soon as there is a
	non-digit in the input.  Previously, incr(1xyzzy), eval(1,2xyzzy)
	and divert(1xyzzy) were all accepted without any warning or error
	messages.
	* m4.h: Declare strtol as long if not including stdlib.h.
	* configure.in: Check for limits.h, and replace strtol if missing.
	* lib/Makefile.in: Substitute LIBOBJS.  Distribute strtol.c.
	* lib/strtol.c: New file, from elsewhere.
	Reported by Andreas Schwab.

Thu Jul  7 22:38:10 1994  François Pinard  (pinard@icule)

	* macro.c (expand_macro): Cast value to (boolean) prior to
	assigning it to traced.
	Reported by Tom McConnell.

	* Makefile.in (m4): Always make all in lib first.
	Reported by Jim Meyering.

Wed Jul  6 13:16:31 1994  Jim Avera (jima@netcom.com)

	* stackovf.c: Isolated OS-dependent sections; Improved portability,
	adding support for SunOS/BSD (sigvec, sigstack, and 4-parameter signal
	handlers), and a default error message if the fault address is not
	available (when neither siginfo.h nor BSD sigcontext are supported).
	* configure.in: Changes for stackovf.h: Check for sigcontext,
	sigaction, sigstack, and define rlim_t as int if necessary.
	* acconfig.h: Added HAVE_SIGCONTEXT and rlim_t.
	* examples/stackovf.sh: Run m4 -L99999999 to allow stack overflow.
	* ansi2knr.c: Fix for func-ptr args; convert "..." to varargs syntax.

Tue Jul  5 19:13:54 1994  François Pinard  (pinard@icule)

	* configure.in: Use AC_SET_MAKE.
	* Makefile.in: Use @SET_MAKE@.
	Reported by Jim Meyering.

	* checks/check-them: Do not trap on SIGQUIT or SIGALRM.
	Reported by Ian Taylor.

Sat Jul  2 00:58:47 1994  François Pinard  (pinard@icule)

	* configure.in: Remove dependency of USE_STACKOVF on STDC_HEADERS,
	because siginfo.h is unrelated to standard headers, and siginfo.h
	is already checked for.
	Reported by Joseph E. Sacco.

	* acconfig.h, aclocal.m4, m4.h: Replace HAVE_PROTOTYPES by
	PROTOTYPES.
	* aclocal.m4, configure.in: Replace AC_HAVE_PROTOTYPES by
	AC_PROTOTYPES.

Wed Jun 29 22:41:53 1994  François Pinard  (pinard@icule)

	* builtin.c (substitute): Use \& to represent this part of the
	string which was matched by the whole regexp, instead of
	representing the whole string.  Any usage of \0 issues a warning
	and acts like \&, it will disappear in some subsequent release.

Mon Jun 27 14:24:23 1994  François Pinard  (pinard@icule)

	* m4.c: Complete prototype for forwarded declaration of usage.

	* input.c (init_macro_token): Correct own reference in error
	message.  Previous name get_macro_func was referred to instead.
	(next_char):  Correct own reference in error message.  Previous
	name advance_input was referred to instead.

	* m4.h: Declare eval_t and unsigned_eval_t typedefs to 32 bits.
	* eval.c (logical_or_term, logical_and_term, or_term, xor_term,
	and_term, not_term, logical_not_term, cmp_term, shift_term,
	add_term, mult_term, exp_term, unary_term, simple_term): Add
	prototype to forwarded declarations.  Declare parameter v1 as
	eval_t * instead of int *.  Same for local variable v2 in dyadic
	functions.  Same for result in exp_term.
	* builtin.c (m4_eval): Declare value as eval_t instead of int.
	(ntoa): Declare value as eval_t instead of int.  Declare uvalue as
	unsigned_eval_t instead of unsigned int.  Change casts accordingly.
	(shipout_int): Cast first argument of ntoa to eval_t.
	Reported by Thorsten Ohl.

	* macro.c: Complete the prototypes of forwarded expand_macro and
	expand_token.
	Reported by Thorsten Ohl.

	* m4.h: Define voidstar as void * or char * depending on __STDC__.
	The Ultrix 3.1 compiler cannot do much with void pointers.

	* builtin.c (dumpdef_cmp): Replace void * by voidstar.
	* m4.c (xfree):  Replace void * by voidstar.
	Reported by Tom McConnell.

	* ansi2knr.1: New, from elsewhere.
	* Makefile.in (DISTFILES): Distribute ansi2knr.1

	* Makefile.in (stamp-h.in): Avoid running ./config.status if
	stamp-h does not exist yet.  This avoids running it a second time
	just after the initial ./configure.
	Reported by David MacKenzie and Tom McConnell.

	* m4.h: Replace the enum debug_info declaration with a series of
	#define's.  The Ultrix 3.1 compiler would otherwise need casting
	(int) to most references, when used in expressions.
	Reported by Tom McConnell.

Sat Jun 25 00:10:05 1994  François Pinard  (pinard@icule)

	* aclocal.m4: Replace FP_PROTOTYPES by AC_HAVE_PROTOTYPES,
	following an idea from Brook G. Milligan.  AC_HAVE_PROTOTYPES
	calls the compiler.  Previously, FP_PROTOTYPES was only calling
	the preprocessor; by not being subject to CFLAGS, this was
	discouraging those flags asking for ANSI compilation.
	* acconfig.h: Document HAVE_PROTOTYPES.
	* configure.in: Use AC_HAVE_PROTOTYPES instead of FP_PROTOTYPES.
	* m4.h: Define _() according to HAVE_PROTOTYPES, not __STDC__.
	Reported by Eric Backus.

	* configure.in: Substitute CFLAGS and LDFLAGS, taking their value
	from the environment.  Default CFLAGS to -g if not set.
	* Makefile.in: Have CFLAGS and LDFLAGS substituted from configure.
	* lib/Makefile.in: Have CFLAGS substituted from configure.
	Reported by Eric Backus and Tom McConnell.

	* configure.in: m4_undefine changeword before using AC_ENABLE.

	* m4.h: Declare prototypes for error (for ANSI compilers only),
	prefix_all_builtins and reference_error.
	Reported by Tom McConnell.

	* input.c (set_word_regexp): Do not try to initialize the array
	test from a string, this does not work with non-ANSI compilers.
	Reported by Eric Backus.

	* Makefile.in (dist): Clean examples/ before saving it.
	(distclean-local): Also remove stamp-h.
	Reported by Eric Backus.

	* Makefile.in (_stackovf.c): Goal for compiling stacokovf.c with
	non ANSI compilers.
	Reported by Tom McConnell.

	* checks/Makefile.in (clean): Depends on mostlyclean.
	(mostlyclean): New goal.

Fri Jun 24 23:30:31 1994  François Pinard  (pinard@icule)

	* Makefile.in (DISTFILES): Distribute install.sh.
	* install.sh: New file, copied from elsewhere.
	Reported by Assar Westerlund and Kaveh R. Ghazi.

Thu Jun 23 00:00:30 1994  François Pinard  (pinard@icule)

	* configure.in: Define ENABLE_CHANGEWORD if --enable-changeword.
	* acconfig.h: Explain ENABLE_CHANGEWORD.

	[These modifs all depend upon ENABLE_CHANGEWORD and are adapted
	from code provided by Pete Chown]
	* m4.h: Add original_text field to u_t variant of union u.
	Declare TOKEN_DATA_FUNC macro.
	* builtin.c: Declare changeword.
	(m4_changeword): New function.
	* input.c: Include "regex.h", define variables with word regexps.
	(input_init): Initialize the word regexp.
	(set_word_regexp): New.
	(next_token): Declare local variables, use the previous code if
	default_word_regexp is true.  Else, match using a new code.  Save
	the original text.
	* macro.c (expand_token): Ship out original text if not a macro
	name.
	Reported by Krste Asanovic and Pete Chown.

	[These modifs all depend upon ENABLE_CHANGEWORD]
	* m4.h: Declare external user_word_regexp.
	* m4.c: Declare user_word_regexp, and initialize it from
	--word-regexp or -W, or NULL if not specified.
	* input.c: Use user_word_regexp if specified, instead of
	DEFAULT_WORD_REGEXP.

	* Makefile.in (m4): Revert Jan 3 1994 change.  I'm unable to
	agree with it.

	* Makefile.in, lib/Makefile.in: Limit suffixes to .c and .o.
	* checks/Makefile.in: Empty the suffix list.
	Reported by Geoff Russell, Joel Sherrill and Roland McGrath.

	* m4.c: Declare nesting_limit and initialize it to 250.
	Implement -LNUMBER or --nesting-limit=NUMBER to change its
	value.
	* m4.h: Declare nesting_limit as external.
	* macro.c (expand_macro): Stop execution whenever nesting limit
	is exceeded.
	Reported by Bengt Mertensson.

	* eval.c (evaluate): Diagnose excess characters in eval input.
	Things like `eval(08)' used to return 0 with no diagnostic.

	* m4.h: Capitalize first letter of all macro arguments in
	definitions.

	* m4.c: Declare warning_status, initialize it to 0.  Add new
	option -E, or --fatal-warnings, which sets warning_status to
	EXIT_FAILURE instead.
	* m4.h: Declare external warning_status.  Define EXIT_SUCCESS and
	EXIT_FAILURE if not otherwise done by header files.
	* m4.c: Delete declarations for EXIT_SUCCESS and EXIT_FAILURE.
	* m4.c, input.c, output.c, symtab.c, builtin.c, macro.c, debug.c,
	eval.c: Replace 0 by warning_status and 1 by EXIT_FAILURE in first
	argument of all M4ERROR calls.
	Reported by Noah Friedman.

	* examples/incl-test.m4: Renamed from incl_test.m4.
	* examples/include.m4: Include incl-test.m4 instead of
	incl_test.m4.
	* examples/multiquotes.m4: Renamed from multi-quotes.m.

Wed Jun 22 21:58:54 1994  François Pinard  (pinard@icule)

	* configure.in: Avoid USE_STACKOVF if <siginfo.h> not found.  Note
	that Jim developped stackovf.c on a 486 running SVR4.0 (ESIX), and
	also tested it on a Sun Sparc workstation running SunOS 4.x.

	* format.c (format): When not HAVE_EFGCVT, m4 was failing the
	49.format check, abusing a `union values' argument with sprintf
	without selecting the proper field.  Now, save the formatting type
	first, delaying the fetch of the corresponding argument.
	Reported by Joseph E. Sacco and Tom Quinn.

	* format.c (format): Remove const from char *fmt declaration when
	not HAVE_EFGCVT, because a NUL may be forced into it.

	* m4.h: Declare atof() when not STDC_HEADERS.
	Reported by Joseph E. Sacco.

	* Regenerate configure using Autoconf 1.11, this corrects a
	problem about an incorrect cpp seting on NeXT 3.1.
	Reported by Alexander Lehmann.

Sun Jun  5 16:25:19 1994  François Pinard  (pinard@icule)

	* m4.h (_): Change argument from `x' to `Args'.

Wed May  4 23:59:39 1994  François Pinard  (pinard@icule)

	* Makefile.in: Remove all occurrences of $(MFLAGS), which were
	bringing more evil than good on a few systems.
	Reported by Greg A. Woods.

Fri Apr 22 15:59:35 1994  François Pinard  (pinard@icule)

	* m4.h: Rename Args() to _().
	* m4.h: Remove extern specifier from all function declarations.

Fri Apr 22 15:51:21 1994  Jim Avera (jima@netcom.com)

	* stackovf.c: New file implementing stack-overflow detection.
	* configure.in: Check for getrlimit, sigaction.  If all of
	standard headers, getrlimit and sigaction, define USE_STACKOVF and
	substitute ${U}stackovf.o for STACKOVF.
	* acconfig.h: Declare USE_STACKOVF.
	* Makefile.in: Distribute stackovf.c, link with $(STACKOVF).
	* m4.h: Declare setup_stackovf_trap().
	* m4.c: Call setup_stackovf_trap().
	* tests/stackovf_test.sh: New file.

Wed Apr 13 14:10:30 1994  François Pinard  (pinard@icule)

	* checks/Makefile.in: Rename .all-stamp to stamp-checks.

	* Makefile.in (Makefile, etc.): Adapt for Autoconf 1.8.

Sun Jan 30 14:24:19 1994    (pinard at icule)

	* m4.h: Remove definition of volatile, not used anymore.
	Reported by Jim Meyering and Joseph E. Sacco.

	* m4.h: Consistently use `do { ... } while (0)' in macros, instead
	of `if ... else /* nothing */' for if macros.
	Reported by Jim Meyering.

	* builtin.c (m4_regexp): Reorganize the code for avoiding a
	warning from gcc about `repl' possibly used before defined.
	Reported by Jim Meyering.

	* m4.h: Avoid a pre-ANSI <memory.h> together with <string.h>.
	Reported by Jim Meyering.

Tue Jan 25 18:39:37 1994  François Pinard  (pinard at icule)

	* m4.h: Move the conditional definition of volatile after the
	inclusion of system files, because they may define it first.

Tue Jan  4 19:46:50 1994  François Pinard  (pinard@icule)

	* checks/Makefile.in (CHECKS): Add a useless `*' before `[', to
	get around a problem with Alpha make seeing a syntax error, there.
	Reported by Vern Paxson.

Mon Jan  3 00:21:45 1994  François Pinard  (pinard@icule)

	* Makefile.in: Do not define LDFLAGS, use CFLAGS on link calls.
	Reported by Richard Stallman.

Sat Dec 25 08:06:05 1993  François Pinard  (pinard@icule)

	* configure.in: Correct test for strerror, AC_FUNC_CHECK was used
	instead of AC_HAVE_FUNCS.
	Reported by Noah Friedman.

Wed Dec  1 09:37:53 1993  François Pinard  (pinard@icule)

	* m4.c: Initialize show_help and show_version to zero.

	* m4.c: Ensure EXIT_SUCCESS and EXIT_FAILURE are defined.
	Use them in exit() and usage() calls.

Sat Nov 27 10:43:24 1993  François Pinard  (pinard@icule)

	* m4.h: Delete extern sys_nerr, sys_errlist declarations, and
	syserr() macro.  Delete errref, add reference_error and M4ERROR.
	* m4.c: Replace errref, which was returning an input reference
	string, with reference_error, which prints it on standard error.
	* builtin.c, output.c: Use errno as second parameter to error,
	instead of using syserr() with %s.
	* *.c: Use M4ERROR instead of error: no more errref() with %s.
	Doing so, the program name appears after the input reference
	instead of before, which eases M-x next-error processing.

Wed Nov 24 22:16:15 1993  François Pinard  (pinard@icule)

	* checks/get-them: Escape braces with backslashes in patterns,
	because HPUX-9.01 awk needs this.
	Reported by Jim Meyering.

Mon Nov 22 10:55:52 1993  François Pinard  (pinard@icule)

	* builtin.c: Declare "FILE *popen ();".

	* m4.h: Remove MESSAGE{,1,2}, WARNING1, FATAL{,1}, INTERNAL_ERROR
	macros, replace error_message_prefix() declaration by errref()'s.
	Declare xrealloc, for use in errref().
	* m4.c: Delete error_message_prefix() function, add errref().
	* *.c: Use error() systematically in place of all error macros,
	now that error() flushes stdout first.  Make needed adjustments.

	* m4.h: Remove const in sys_errlist[] declaration, it creates
	conflicts on SGI and Alpha.
	Reported by Kaveh R. Ghazi.

Sat Nov 20 08:26:15 1993  François Pinard  (pinard@icule)

	* m4.c: Include <getopt.h> instead of "getopt.h".

	* configure.in: Output to config.h.  Use HAVE_FUNCS preferably.
	* acconfig.h: New, for documenting HAVE_EFGCVT.
	* Makefile.in: Distribute acconfig.h, .stamp-h.in and config.h.in,
	use them wherever appropriate.  Also use -I. for compilations.
	* lib/Makefile.in: Use -I.. for compilations.
	* *.c: Include <config.h> or "config.h".

	* m4.h: Test for HAVE_MEMORY_H instead of NEED_MEMORY_H.
	* configure.in: Use AC_HAVE_HEADERS(memory.h), delete AC_MEMORY_H.

Wed Nov 17 09:34:55 1993  François Pinard  (pinard@icule)

	* builtin.c (m4_eval): Cast strlen to (int) before comparing.

	* input.c (input_init): Initialize quote and comment strings
	explicitely instead of calling set_quotes and set_comment: by
	doing so, we ensure we do not free uninitialized variables.

	* checks/check-them: Reverse arguments to both diff, so the
	expected is on the left and the obtained on the right.

	* m4.h: Add MESSAGE{,1,2}, WARNING1, FATAL{,1} and INTERNAL_ERROR
	macros. Delete declarations for m4error, warning, fatal and
	internal_error, add declaration for error_message_prefix.
	* m4.c:  Delete m4error, warning, fatal and internal_error
	routines, add error_message_prefix routine.
	* *.c: Replace m4error routine calls with MESSAGE* macro calls,
	warning with WARNING*, fatal with FATAL* and internal_error with
	INTERNAL_ERROR*.
	* Makefile.in (_m4.c): Do not adjust ansi2knr output for va_alist,
	this is not needed anymore.

	* m4.h: Declare extern FILE *debug.  Add DEBUG_PRINT{1,3} and
	DEBUG_MESSAGE{,1,2} macros.  Delete declarations for debug_print
	and debug_message, add declaration for debug_message_prefix.
	* debug.c: Remove static specifier for FILE *debug declaration.
	Delete debug_print and debug_message routines, add
	debug_message_prefix routine.
	* builtin.c, debug.c: Replace debug_print routine calls with
	DEBUG_PRINT* macro calls.
	* input.c, path.c: Replace debug_message routine calls with
	DEBUG_MESSAGE* macro calls.

	* m4.h: Remove inclusion of <varargs.h>.
	* debug.c: Include <stdarg.h> or <varargs.h>.
	(trace_format): Use stdarg instead of varargs if __STDC__.

	* configure.in: Remove checks for vfprintf and _doprnt.  These
	implementations use varargs tricks which are not portable enough.
	* lib/vfprintf.c: Deleted.
	* lib/_doprnt.c: Deleted.
	* lib/Makefile.in: Adjusted accordingly.  Remove LIBOBJS.
	Reported by Joel Sherrill.

	* path.c (add_include_directory): Use xstrdup.

	* builtin.c (find_builtin_by_name): Declare static.

	* *.[ch]: Add const to a few "char *" declarations.

	* configure.in: Remove commented tests for fileno() and fstat().
	* debug.c: Remove comments about HAVE_FILENO and HAVE_FSTAT.

	* debug.c (debug_flush_files): New.
	* m4.h: Declares it.
	* builtin.c (m4_syscmd, m4_esyscmd): Use it.
	Reported by Nicolas Pioch.

Fri Nov 12 10:02:26 1993  François Pinard  (pinard@icule)

	* Makefile.in (m4.dvi): Use m4.texinfo instead of m4.texi.
	Reported by Joel Sherrill.

	* builtin.c (prefix_all_builtins): Instead of the table size, use
	the null entry at end for stopping the loop.  It was overwritten.
	Reported by Andreas Schwab and Jim Meyering.

	* builtin.c (prefix_all_builtins): Cast xmalloc to (char *).
	Reported by Kaveh R. Ghazi.

	* macro.c (call_macro): Add * in (*SYMBOL_FUNC (sym)) (...).
	Reported by Karl Vogel.

Tue Nov  9 09:31:47 1993  François Pinard  (pinard@icule)

	* m4.h: Do not define volatile if already defined.
	Reported by René Seindal.

	* lib/Makefile.in: Add a forgotten ALLOCA=@ALLOCA@.  Grrr!

	Reported by Bernhard Daeubler, Eric Backus, Hal Peterson, Hoang
	Uong, Ian Taylor, Kaveh R. Ghazi, Tom McConnell and Walter Wong.

Mon Nov  8 21:11:44 1993  François Pinard  (pinard@icule)

	* m4.h: Define strchr and strrchr in terms of index and rindex,
	instead of the other way around.
	* builtin.c, m4.c, path.c: Use strchr instead of index.

	* input.c (next_char): Remove a "break;" after a "return ...;".
	Reported by Tom McConnell.

Mon Nov  8 12:45:34 1993  François Pinard  (pinard@icule)

	* Release 1.1

	* configure.in: Do not copy check files in the build hierarchy.
	* checks/check-them: Identify the m4 version being checked.  For
	finding m4, look in $PATH instead of in the parent directory.
	* Makefile.in (check): Prepend `pwd` to $PATH before checking.
	* checks/Makefile.in (.all-stamp): Always create check files in
	the source hierarchy, not anymore in the build hierarchy.
	(check): cd to the source hierarchy before performing checks.
	Do not copy nor clean COPYING anymore, take it from `..'.
	Reported by Tom McConnell.

	* Makefile.in (Makefile): Use $(SHELL).
	(config.status): Use $(SHELL).  Use "config.status --recheck"
	instead of "configure --no-create", which is obsolete.
	Reported by Tom McConnell.

Fri Nov  5 09:49:30 1993  François Pinard  (pinard@compy.IRO.UMontreal.CA)

	* m4.c (usage): Use "%s" instead of "m4" in format string.
	Reported by Jim Meyering.

	* Makefile.in: Distribute mkinstalldirs.
	Reported by Pierre Gaumond.
	Reported by Jim Meyering.
	Reported by Tom McConnell.
	Reported by Andreas Gustafsson.

	* checks/check-them: Renamed from checks/check_them.
	* checks/get-them: Renamed from checks/get_them.
	* checks/.all-stamp: Renamed from checks/.all_stamp.
	* checks/Makefile.in: Changed accordingly.
	Reported by Jim Meyering.

Thu Nov  4 13:50:52 1993  François Pinard  (pinard@lagrande.IRO.UMontreal.CA)

	* lib/Makefile.in (dist): Correct permissions on files.

	* output.c: Declare tmpfile, some systems don't.

Wed Nov  3 09:09:16 1993  François Pinard  (pinard@icule)

	* checks/Makefile.in (dist): Correct permissions on files.

	* Makefile.in (dist): Ensure recursive linking for subdirectory
	`examples', also set read/write permissions on all its files.

	* mkinstalldirs: New, from elsewhere.
	* Makefile.in: Use it.

	* debug.c: Synchronize debug messages and regular output when
	the debug file and stdout are redirected to the same file.
	* configure.in: Add (commented) checks for fileno and fstat.
	Reported by Jim Avera.

	* builtin.c (m4_ifelse): Diagnose excess arguments if 5, 8, 11,
	etc., arguments, then ignore the superfluous one.  m4 used to
	diagnose missing arguments and return the empty string.
	Reported by Nick S. Kanakakorn.

Tue Nov  2 00:55:41 1993  François Pinard  (pinard@icule)

	* m4.c (main): At end of all input, ensure all undiverted text
	goes to the main output stream.
	Reported by Andreas Gustafsson.

	* m4.c (main): exit (0), instead of return 0.

	* m4.c: Implement -P and --prefix-builtins.
	* builtin.c: Delete const specifier on builtin_tab.
	(prefix_all_builtins): New.
	Reported by Noah Friedman.
	Reported by Scott Bartram.

	* c-boxes.el: New, from elsewhere.
	* Makefile.in: Distribute it.

	* m4.h: Do not define bcopy if <string.h> defines it.
	Reported by Stephen Perkins.

	* builtin.c (define_macro): Allow a missing second argument, in
	which case it is implied empty.  Affects define and pushdef.
	Reported by Eric Allman.

Mon Nov  1 07:45:24 1993  François Pinard  (pinard@icule)

	* m4.h: Add blind_if_no_args in struct builtin, blind_no_args in
	struct symbol adn SYMBOL_BLIND_NO_ARGS macro.
	* builtin.c: Initialize all the blindness fields in builtin_tab.
	(define_builtin): Copy the blindness of a builtin into its symbol.
	* macro.c (expand_token): Avoid processing a blind builtin if the
	next character is not an opening parenthesis.
	Reported by David MacKenzie.
	Reported by Noah Friedman.

	* configure.in: Ensure an exit status of 0 on completion.
	Reported by Vivek P. Singhal.

	* eval.c (eval_lex): Admit both lower and upper case letters for
	bases greater than 10.  Only lower case letters were accepted.

	* eval.c (eval_lex): Recognize 0bDIGITS and 0rRADIX:DIGITS syntax.
	Reported by Krste Asanovic.

	* eval.c:  Rename NOT to LNOT.  Add XOR, NOT, LSHIFT and RSHIFT.
	* eval.c (logical_not_term): New name for not_term.
	* eval.c (xor_term): New, between or_term and and_term.
	* eval.c (not_term): New, between and_term and logical_not_term.
	* eval.c (shift_term): New, between cmp_term and add_term.
	Reported by Krste Asanovic: ~, ^, <<, >>.
	Reported by Ben A. Mesander: ** vs ^.

	* m4.c: Delete xmalloc.c, xrealloc.c, xstrdup.c.
	* m4.h: Delete xrealloc.c.
	* lib/xmalloc.c: New, from elsewhere.
	* lib/xstrdup.c: New, from elsewhere.
	* lib/Makefile.in: Distribute and compile them.

	* m4.c: Change progname to program_name.
	* builtin.c, eval.c, m4.c, m4.h: Rename error to m4error.
	* lib/error.c: New, from elsewhere.
	* lib/Makefile.in: Distribute and compile error.c.
	* configure.in: Check AC_VPRINTF and for strerror.
	* m4.c: Delete cmd_error.  Use error instead.
	* m4.c: Change label capitalisation to "ERROR", "Warning", etc.

	* m4.h: Delete #define const, let Autoconf takes care of this.

	* m4.c: Remove all code conditionalized by IMPLEMENT_M4OPTS.
	Merge parse_args into main.  Declare argv to be `char *const *',
	then remove superfluous casts.

	* m4.c: Rename --no-gnu-extensions to --traditional.
	Reported by Ben A. Mesander.

	* m4.c (usage): Add a status parameter.  Supply one in various
	calls.  Add --help processing.  Remove -V for --version.

	* lib/Makefile.in: Put $(CFLAGS) last in .c.o rule.

	* lib/Makefile.in: Have an AR=ar declaration.
	Reported by Eric Backus.
	Reported by Bjorn R. Bjornsson.
	Reported by Tom Tromey.
	Reported by Kristine Lund.
	Reported by Marion Hakanson.

Sat Oct 30 12:51:47 1993  François Pinard  (pinard@icule)

	* Makefile.in (m4.info): Use -I$(srcdir) on $(MAKEINFO).
	Reported by Noah Friedman.

Mon Oct 25 14:58:48 1993  François Pinard  (pinard@icule)

	* Makefile.in: Remove MDEFINES and cleanup.

Wed Jun  9 14:59:46 1993  François Pinard  (pinard@icule)

	* Makefile.in (dist): Replace "echo `pwd`" by a mere "pwd".
	Create a gzip file.

Sat Feb  6 14:59:22 1993  François Pinard  (pinard@icule)

	* Makefile.in, lib/Makefile.in, check/Makefile.in: In dist goals,
	ensure 777 mode for directories, so older tar's will restore file
	modes properly.

Sun Jan 17 15:38:05 1993  François Pinard  (pinard@icule)

	* Makefile.in, lib/Makefile.in: Put $(CFLAGS) after $(CPPFLAGS),
	so the installer can override automatically configured choices.
	Reported by Karl Berry.

Fri Jan 15 16:07:00 1993  François Pinard  (pinard@icule)

	* lib/vfprintf.c: Stolen from Oleo distribution and adapted.  The
	previous version was not working properly on m68k-hp-bsd4.3.
	Reported by Roland McGrath.

	* lib/_doprnt.c: Stolen from Oleo distribution.
	* configure.in: Check for _doprnt.c if vfprintf.c selected.
	* lib/Makefile.in: Distribute _doprnt.c.
	Do not distribute regex.[ch].old anymore.

Fri Jan  1 19:42:23 1993  François Pinard  (pinard at icule)

	* Makefile.in, lib/Makefile.in: Reinstate $(CPPFLAGS), use it.
	Richard wants it there.

Sun Dec 27 07:01:54 1992  François Pinard  (pinard at icule)

	* Makefile.in: Add DEFS to MDEFINES.
	* lib/Makefile.in (.c.o): Remove $(CPPFLAGS).
	(libm4.a): Remove the library before creating it.
	(distclean): Remove tags and TAGS too.

Wed Dec 23 12:46:55 1992  François Pinard  (pinard at icule)

	* Makefile.in (dvi, m4.dvi): New goals.

	* builtin.c, eval.c, format.c, input.c, m4.[ch], m4.texinfo,
	macro.c, output.c, path.c, symtab.c: Change Copyright from
	1989-1992 to the explicit enumeration 1989, 1990, 1991, 1992.

	* examples/divert.m4: Deleted, this bug has been corrected.

	* Makefile.in (texclean, mostlyclean): New goals.

	* Makefile.in (clean): Remove clutter from ansi2knr.
	Reported by Pierre Gaumond.
	Reported by Greg A. Woods.

Sun Dec 20 10:40:20 1992  François Pinard  (pinard at icule)

	* Makefile.in: Remove $(CPPFLAGS) from the .c.o rule.  The user
	might well use CFLAGS is s/he needs it.

	* Makefile.in: Allow installation of info files from a separate
	build directory.
	Reported by Jason Merrill.
	Reported by David MacKenzie.
	Reported by Skip Montanaro.
	Reported by Erez Zadok.
	Reported by Assar Westerlund.

Sat Dec 19 08:21:34 1992  François Pinard  (pinard at icule)

	* Release 1.0.3
	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  François Pinard  (pinard at icule)

	* m4.c: Change `--no-warnings' to `--silent'.
	Reported by David MacKenzie.

	* m4.c: Put all M4OPTS code upon IMPLEMENT_M4OPTS control, and
	leave it off for now.  See comment in m4.c for justification.
	Reported by David MacKenzie.

	* 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  François Pinard  (pinard at icule)

	* *.[ch]: 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  François Pinard  (pinard at icule)

	* Makefile.in (realclean): Delete m4.info*.
	Reported by Jim Meyering.

	* 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  François Pinard  (pinard at icule)

	* *.[ch]: 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.

	* Makefile.in, lib/Makefile.in: Add a .c.o rule, so CFLAGS is not
	so heavily loaded.  It gets more easily overridable, calling make.
	Reported by Jim Meyering.

	* 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  François Pinard  (pinard at icule)

	* m4.h: Remove the tag `boolean' on the enum introducing typedef
	`boolean'.  This tag conflicts with <sys/types.h> on SVR4.
	Reported by Tom McConnell.

Fri Nov 13 00:12:50 1992  François 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  François 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.

	* m4.h: Before declaring errno, first include <errno.h> and
	ensure that it does not define errno.
	Reported by Richard Stallman.

Wed Nov 11 17:40:35 1992  François 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  François 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  François 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  François 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.

	* 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/*.
	Reported by Jason Merrill.

	* symtab.c (hash): Change (char) NULL to '\0'.
	Reported by Jason Merrill.

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

	* m4.c: Changes in order to use a newer getopt.h.
	Reported by David MacKenzie.

	* 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  François Pinard  (pinard at icule)

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

	* m4.c: Accept --no-warnings instead of --no_warnings, and
	--no-gnu-extensions instead of --no_gnu_extensions.  Make the
	usage message more informative.
	Reported by David MacKenzie.

Mon Mar  9 14:53:40 1992  François 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  François Pinard  (pinard at icule)

	* m4.h: Delete definitions for abort() and exit().
	Reported by Richard Stallman.

	* config/hmake-unicos, config/s-unicos.h: New files.
	Reported by Hal Peterson.

	* eval.c (exp_term): Have N^0 return 1.
	Reported by Michael Fetterman.

	* eval.c, input.c, m4.h: Remove last comma in enums.
	Reported by Mike Lijewski.

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

	* Release 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  René Seindal (seindal at diku.dk)

	* Fixed various bugs.  Release 0.99, manual 0.09.  Many thanks to
	François Pinard and Roland H. Pesch 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  René Seindal (seindal at diku.dk)

	* Updated and enhanced version.  Release 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  René Seindal (seindal at diku.dk)

	* Initial beta release.  Release 0.50, manual 0.05.

	-----

	Local Variables:
	coding: utf-8
	End:

	Copyright (C) 1990-1994, 2000-2001, 2003, 2005-2014, 2016-2017,
	2020-2021 Free Software Foundation, Inc.

	Copying and distribution of this file, with or without
	modification, are permitted provided the copyright notice
	and this notice are preserved.
