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

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

2008-12-06  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-06  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.

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-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>

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

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

	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-23  Eric Blake  <ebb9@byu.net>

	Adjust to new gnulib-tool layout.
	* ltdl/m4/gnulib-cache.m4: Reformat.

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.

	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-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>

	Stage 24: Allow embedded NUL in macro names.
	Replace const char *macro_name with const m4_call_info *call.  Use
	length rather than NUL-termination when tracking macro names,
	including in diagnostics.  Quote instances of problematic
	characters in macro names when presented to user.
	Memory impact: none.
	Speed impact: slight penalty, due to more bookkeeping.
	* m4/gnulib-cache.m4: Import xmemdup0 module.
	* src/m4.h (define_builtin, push_string_init, push_wrapup_init)
	(lookup_symbol): Add parameters.
	(struct call_info): Add name_len member.
	(struct token_data) [ENABLE_CHANGEWORD]: Add original_len member.
	(struct symbol): Add len member.
	(TOKEN_DATA_ORIG_LEN, SYMBOL_NAME_LEN): New accessors.
	(m4_error_at_line, m4_warn_at_line): Delete.
	(m4_error, m4_warn, debug_set_output, skip_line, set_word_regexp)
	(bad_argc, evaluate): Adjust parameter type.
	* src/m4.c (m4_error_at_line, m4_warn_at_line): Delete.
	(m4_verror_at_line, m4_error, m4_warn): Adjust parameter type.
	(main): Adjust caller.
	* src/symtab.c (profile_strcmp) [DEBUG_SYMTAB]: Rename...
	(profile_memcmp): ...and accomodate NUL.
	(hash, lookup_symbol): Add parameter to track length.
	(symtab_debug, symtab_print_list): Adjust callers.
	* src/input.c (push_string_init, push_wrapup_init): Take location
	as parameter rather than using global state.
	(skip_line, set_word_regexp, next_token): Adjust parameter type.
	(peek_input, next_char_1, match_input, lex_debug): Adjust
	callers.
	* src/macro.c (struct macro_arguments): Delete argv0 and argv0_len
	members, now covered by info.
	(expand_input, expand_token, expand_argument, collect_arguments)
	(expand_macro, arg_text, arg_empty, arg_len, make_argv_ref)
	(push_arg, wrap_args): Adjust callers.
	* src/builtin.c (define_builtin): Add parameter.
	(bad_argc, numeric_arg, mkstemp_helper, substitute): Adjust
	parameter type.
	(define_user_macro, builtin_init, define_macro, m4_undefine)
	(m4_popdef, m4_ifdef, m4_ifelse, dumpdef_cmp, m4_dumpdef)
	(m4_builtin, m4_indir, m4_defn, m4_syscmd, m4_esyscmd, m4_eval)
	(m4_incr, m4_decr, m4_divert, m4_divnum, m4_undivert, m4_shift)
	(m4_changequote, m4_changecom, m4_changeword, include)
	(m4_maketemp, m4_mkstemp, m4_errprint, m4___file__, m4___line__)
	(m4___program__, m4_m4exit, m4_m4wrap, m4_traceon, m4_traceoff)
	(m4_debugmode, m4_debugfile, m4_len, m4_index, m4_substr)
	(m4_translit, m4_format, m4_regexp, m4_patsubst): Adjust all
	callers.
	* src/debug.c (debug_set_file, debug_set_output): Adjust parameter
	type.
	(trace_flush, trace_prepre, trace_pre): Adjust all callers.
	* src/eval.c (logical_or_term, logical_and_term, or_term)
	(xor_term, and_term, equality_term, cmp_term, shift_term)
	(add_term, mult_term, exp_term, unary_term, simple_term)
	(evaluate): Adjust parameter type.
	* src/format.c (arg_int, arg_long, arg_double): Likewise.
	(expand_format): Adjust caller.
	* doc/m4.texinfo (Using frozen files): Test this.
	* examples/null.m4: Likewise.
	* examples/null.err: Adjust expected output.
	* examples/null.out: Likewise.

	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.
	* doc/m4.texinfo (Using frozen files): Test the fix from
	2007-11-22.
	* 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.

	Detect integer overflow when loading frozen file.
	* src/freeze.c (reload_frozen_state) [GET_NUMBER]: Rewrite to fail
	immediately on overflow.
	Reported by Jim Meyering.

	Stage 23: allow tracing of indirect macro calls.
	Track all trace information as part of the argv struct, rather
	than temporarily resetting global state.  Teach indir to trace
	macros that it invokes.
	Memory impact: slight penalty, due to larger argv struct.
	Speed impact: none noticed.
	* src/m4.h (struct call_info): New struct.
	(trace_prepre, trace_pre, trace_post, push_string_finish)
	(input_print, call_macro): Alter signatures.
	(arg_info): New prototype.
	(input_block): Delete...
	* src/input.c (input_block): ...and make typedef local again.
	(push_string_init): Initialize length.
	(push_string_finish, input_print): Change signature, so that
	printing can be done before finalization.
	* src/macro.c (struct macro_arguments): Add info member.
	(collect_arguments, make_argv_ref): Manage new field.
	(expand_macro): Change call context management.  Move tracing...
	(call_macro): ...here, and remove redundant parameter.
	(arg_info): New function.
	* src/debug.c (trace_format): Delete unused modifiers.
	(trace_header, trace_flush, trace_prepre, trace_pre, trace_post):
	Change signatures for stacked trace messages, and for using call
	context.
	* src/builtin.c (m4_builtin, m4_indir): Update callers.
	* src/m4.c (usage): Update debugmode flag summary.
	* doc/m4.texinfo (Defn): Update examples to match new behavior.
	(Trace): Mention new capability of indir.
	(Debug Levels): Enhance text for 'c' and 'x', update examples.
	(Incompatibilities): Mention risk of parsing trace output.
	* examples/null.m4: Enhance test.
	* examples/null.err: Update expected output.
	* NEWS: Mention these changes.
	Reported by Akim Demaille in the autoconf TODO file in 2000.

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-05  Eric Blake  <ebb9@byu.net>

	Stage 22: allow builtin token concatenation outside $@.
	Adjust the input and argument parsing engines to append builtins
	alongside text.  Make define warn when builtins must be
	flattened.
	Memory impact: slight penalty, with fewer builtins flattened.
	Speed impact: slight penalty, from more bookkeeping.
	* src/m4.h (arg_text): Add parameter.
	(ARG): Adjust callers.
	* src/input.c (init_macro_token): Add parameter.
	(next_token): Support concatenating builtins.
	* src/macro.c (warn_builtin_concat): Delete warning.
	(expand_argument, arg_adjust_refcount): Handle builtin tokens.
	(arg_text): Add parameter.
	(arg_print): Adjust caller.
	* src/builtin.c (define_macro): Flatten builtins, rather than
	doing nothing.
	(defn): Warn on undefined macro name.
	* src/m4.c (main): Avoid atoi.
	* src/output.c: Whitespace fixes.
	* doc/m4.texinfo (Defn): Document the new semantics.
	(Ifelse, Debug Levels, M4wrap): Enhance tests.
	* NEWS: Document this change.

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>

	Fix debugmode regression from 2008-04-14.
	* src/input.c (pop_input): Fix -di output on end of input.
	* doc/m4.texinfo (Debug Levels): Test this 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.

	Fix debugmode regression from 2008-02-18.
	* src/m4.h (DEBUG_TRACE_VERBOSE): Make -dV verbose again.
	* NEWS: Document this fix.

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.

	Avoid gcc shadowing warnings.
	* src/builtin.c (m4_ifelse): Avoid the name index.
	(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/macro.c (arg_token, arg_type, arg_text, arg_empty, arg_len)
	(arg_func, arg_print, make_argv_ref_token, make_argv_ref)
	(push_arg, push_arg_quote): Avoid the name index.
	* 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-14  Eric Blake  <ebb9@byu.net>

	Stage 21: $@ concatenates builtins, m4wrap takes builtins.
	Create a new input block type, which always fails with CHAR_EOF,
	so that remaining input routines no longer have to check for NULL
	input block.  Improve arg_print to handle builtin tokens when
	printing to a known chain, rather than always flattening builtins,
	allowing m4wrap and $@ references to handle embedded builtins.
	Memory impact: none.
	Speed impact: noticeable improvement, from fewer conditionals.
	* src/m4.h (append_macro): New prototype.
	(push_macro, push_wrapup_init, arg_print, func_print): Alter
	prototypes.
	* src/input.c (INPUT_MACRO): Delete, covered by INPUT_CHAIN.
	(INPUT_EOF): New input block type, for efficiency.
	(struct input_block): Remove u.func member.
	(input_eof): New input sentinel.
	(append_macro): New function.
	(push_macro, push_wrapup_init): Add parameter.
	(push_token): Support builtin tokens.
	(init_macro_token): Always use chain for builtin tokens.
	(push_string_init, pop_input, pop_wrapup, input_print)
	(peek_input, next_char, next_char_1, input_init): Adjust callers.
	* src/macro.c (arg_equal, wrap_args): Handle builtin tokens.
	(arg_print): Add parameter.
	(collect_arguments, arg_type, arg_text): Adjust callers.
	* src/builtin.c (m4_m4wrap): Handle builtin tokens.
	(func_print): Add parameter.
	(m4_defn): Allow pushing builtin alongside other text.
	(m4_errprint): Adjust caller.
	* src/debug.c (trace_pre): Likewise.
	* doc/m4.texinfo (Defn, Ifelse, Debug Levels): Update tests to new
	behavior.
	(M4wrap): New test.

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.

	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.
	* examples/null.m4 (esyscmd): Don't rely on printf to generate NUL
	byte.
	* examples/null.out (esyscmd): Check for esyscmd success.
	* THANKS: Update.
	Reported by Elbert Pol.

	Fix mingw build.
	* src/builtin.c (define_user_macro): Avoid compiler warning.
	* NEWS: Tweak 1.4.10b entry.

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-04-02  Eric Blake  <ebb9@byu.net>

	Mention 1.4.11 release.
	* NEWS: Update to match release on branch-1.4.
	* doc/m4.texinfo (History): Update release history.
	(Format): Test for C99 hex-float parsing.
	* src/Makefile.am (m4_LDADD): Use POW_LIB when needed.

	Improve release process.
	* maint.mk (alpha): Check for PREV_VERSION setting sooner, and
	remove tag operation.
	(version-check): Enhance this check.
	(prev-tarball): Depend on version-check.
	(web-manual): Fix VPATH usage.
	(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-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>

	Mention FIFO m4wrap more prominently in NEWS.
	* NEWS: Describe effect on autoconf 2.59 and earlier.
	* doc/m4.texinfo (History): The next version will be 1.6, not
	1.4.11.
	Reported by Ralf Wildenhues.

	Pull GNUmakefile from gnulib.
	* m4/gnulib-cache.m4: Import gnumakefile module.
	* GNUmakefile: Remove from version control; supplied by gnulib
	instead.
	* configure.ac (AC_CONFIG_LINKS): Let gnulib do this now.
	* Makefile.am (distclean-local): Likewise.
	(EXTRA_DIST): Likewise.  Also handle renamed files.
	* 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-19  Eric Blake  <ebb9@byu.net>

	Stage 20: make m4wrap obey POSIX fifo ordering.
	Improve input engine to support location changes within symbol
	chains, then convert m4wrap to always build symbol chain.  Also,
	avoid wasted peek at start of next_token, for fewer ungetc calls.
	Memory impact: none.
	Speed impact: noticeable improvement, from fewer function calls.
	* src/m4.h (enum token_chain_type): Add CHAIN_LOC.
	(struct token_chain): Add u_l member.
	(wrap_args): New prototype.
	* src/input.c (push_wrapup_init, push_wrapup_finish): Rewrite to
	guarantee a FIFO chain in the wrapup stack.
	(pop_input, peek_input, next_char_1): Support location link.
	(next_char): Add parameter.
	(init_macro_token, init_argv_token): Require user to consume empty
	input.
	(skip_line, match_input): Adjust callers.
	(next_token): Always consume first character.
	* src/macro.c (arg_text): Tighten assertion.
	(wrap_args): New method.
	* src/builtin.c (m4_m4wrap): Use it.
	(define_macro): Issue warning when ignoring builtin token during
	macro definition.
	* doc/m4.texinfo (M4wrap, Location, Incompatibilities)
	(Improved m4wrap): Adjust examples to corrected behavior.
	* NEWS: Document this fix.

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

	Update for fresh bootstrap.
	* m4/gnulib-cache.m4: Updated copyright from upstream.

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

	Document join, in order to fix bug in m4wrap example.
	* examples/join.m4: New file.
	* examples/wraplifo2.m4: Likewise.
	* examples/Makefile.am (EXTRA_DIST): Add new files.
	* 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-14  Eric Blake  <ebb9@byu.net>

	Stage 19: allow builtin tokens in more macros.
	Allow builtin tokens inside symbol chains, although for now, they
	are not allowed inside comments or quotes.  Enable builtin token
	handling in more macros, if only to consistently diagnose invalid
	macro names.
	Memory impact: none.
	Speed impact: slight impact, due to more bookkeeping.
	* src/m4.h (enum token_chain_type): Add CHAIN_FUNC.
	(struct token_chain): Add func member.
	* src/input.c (push_token, pop_input, input_print, peek_input)
	(next_char_1, init_macro_token): Handle builtin tokens from
	back-references.
	(next_token): Flatten builtin tokens inside comments or quotes,
	except when a builtin is the only thing inside quotes.
	* src/macro.c (expand_argument): Strengthen assertion.
	(collect_arguments): Handle builtin tokens.
	(expand_macro): Fix harmless typo.
	(arg_token): Add parameter.
	(arg_type, arg_text, arg_equal, arg_empty, arg_len, arg_func)
	(arg_print, push_arg_quote, push_args): Update callers to either
	require flattened arguments or to handle builtins.
	* src/builtin.c (m4_defn, m4_dumpdef, m4_ifdef, m4_ifelse)
	(m4_popdef, m4_shift, m4_traceoff, m4_traceon, m4_undefine):
	Handle builtin tokens, either by recognizing invalid macro names
	or passing them through transparently.
	(define_user_macro): Make all user macros handle builtin token
	arguments transparently.
	* doc/m4.texinfo (Defn, Ifdef, Ifelse, Debuglen): Document and
	test the new behavior.
	* NEWS: Document this change.

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

	Consistently cast malloc results, for C++ compilation.
	* src/builtin.c (compile_pattern): Add cast.
	* src/macro.c (expand_macro): Likewise.
	* src/output.c (m4_tmpname): Likewise.
	* src/stackovf.c (setup_stackovf_trap): Use correct type.

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.

	More maintainer fixes.
	* GNUmakefile (_created_version_file): Delete, now that VPATH
	builds include GNUmakefile.
	* configure.ac (AC_INIT): Base version on .tarball-version, not
	.version.
	Reported by Ralf Wildenhues, fix by Jim Meyering in coreutils.

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

	Fix nested builtin(`shift',$@) regression from 2008-02-22.
	* src/macro.c (make_argv_ref_token): Don't output expansion text
	when making wrapper for builtin or indir.
	* doc/m4.texinfo (Builtin): Test it.
	* NEWS: Document the fix.
	Reported by Andreas Schwab.

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

	Make GNUmakefile work with in-place builds.
	* configure.ac (AC_CONFIG_LINKS): Use m4_PACKAGE_VERSION to work
	with older autoconf.  Use shell variable to bypass older automake
	distclean rules.
	* Makefile.am (distclean-local): Remove GNUmakefile link in VPATH
	builds, since we bypassed automake.
	* GNUmakefile: Collapse redundant lines.
	(_is-dist-target): 'distclean' is not a dist target.
	* Makefile.maint (vc-diff-check): Support out-of-tree VPATH build.
	Reported by Ralf Wildenhues.

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

	More maintainer build adjustments.
	* configure.ac (AC_CONFIG_LINKS): Link GNUMakefile into VPATH
	build tree, but only if autoconf is new enough.
	* GNUmakefile (_have-Makefile, _dummy): Don't pollute Makefile.am
	namespace.
	(_is-dist-target): Support out-of-tree VPATH build.
	(check, install, dist, distcheck) [!_have-Makefile]: Forward
	common build targets on to all to get nicer error messages.
	* Makefile.maint (makefile-check, news-date-check)
	(changelog-check, m4-check, vc-diff-check, web-manual): Work in
	VPATH builds.
	* m4/gnulib-cache.m4: Remove obsolete free module.  Import memchr2
	for later use.

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

	* NEWS: Fix typos.
	Reported by Ralf Wildenhues.

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

	Make intra-release version numbers more intelligent.
	* m4/gnulib-cache.m4: Import git-version-gen module.
	* GNUmakefile (_curr-ver): Add rules to ensure releases have
	up-to-date version string.
	* Makefile.am (EXTRA_DIST): Distribute .version.
	(.version, dist-hook): New rule for generating it.
	* configure.ac (AC_INIT): Make version track intermediate
	commits.
	* .gitignore: Don't version-control version files.

	* Makefile.cfg (url_dir_list): Fix location.

	Minor tweaks, learned from the release.
	* Makefile.maint (VC-tag): Avoid dashed git commands, and use
	signing key from Makefile.cfg.
	(delta-diff): Avoid blank lines mid-macro.
	* HACKING: Tweak instructions.
	* NEWS: Bump version.
	* configure.ac (AC_INIT): Likewise.

	Beta Release Version 1.4.10b.
	* configure.ac (AC_INIT): Bump version.
	(AM_INIT_AUTOMAKE): Increase requirement, and add dist-lzma.
	* NEWS: Bump version.
	* HACKING: Update for git release procedures.
	* README: Update to mention this is a beta release on the stable
	branch.
	* bootstrap: Mention new automake dependency.
	* 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.
	* m4/gnulib-cache.m4: Import announce-gen module.

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

	Use size_t consistently for string length truncation.
	* src/m4.h (max_debug_argument_length): Change type to size_t.
	(shipout_string_trunc, arg_print): Change parameter type.
	* src/debug.c (trace_format, trace_pre): Adjust all callers.
	* src/input.c (input_print): Likewise.
	* src/m4.c (max_debug_argument_length, main): Likewise.
	* src/macro.c (arg_print): Likewise.
	* src/output.c (shipout_string_trunc): Likewise.
	Reported by Ralf Wildenhues.

	s/obstack_print/shipout_string_trunc/.
	* src/m4.h (obstack_print): Rename...
	(shipout_string_trunc): ...to this, to leave obstack_ prefix for
	actual obstack API.
	* src/debug.c (trace_format): Adjust caller.
	(obstack_print): Move...
	* src/output.c (shipout_string_trunc): ...here, including rename.
	* src/input.c (input_print): Adjust caller.
	* src/macro.c (arg_print): Likewise.
	Reported by Ralf Wildenhues.

	s/shipout_text/divert_text/.
	* src/m4.h (shipout_text): Rename...
	(divert_text): ...to this, so that shipout_ prefix can be used for
	functions that do not do #line tracking.
	* src/output.c (divert_text): Rename.
	* src/macro.c (expand_token): Adjust all callers.

	Stage 18: try harder to reuse argv in recursion.
	When pushing arguments that contain an existing $@ ref, reuse the
	ref rather than creating another layer of wrappers.
	Memory impact: noticeable improvement, due to better $@ reuse.
	Speed impact: noticeable improvement, due to O(n^2) to O(n)
	reduction in unboxed recursion.
	* src/macro.c (make_argv_ref_token): Avoid wrapping $@ when
	possible.
	(push_args): Let make_argv_ref_token take care of pending data.
	* doc/m4.texinfo (Improved foreach): Tweak wording to match new
	performance capability.  Add regression tests.
	* NEWS: Document the speedup.
	* src/m4.c (AUTHORS): Claim credit for my rewrite.

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

	Stage 17: pass argv through quoted strings.
	Allow the concatenation of $@ references with other text input
	inside quoted contexts, which requires distinguishing between a
	wrapper around many arguments vs. a reference serving as part of a
	single argument.  Also optimize based on whether argv contains
	builtin tokens that might need flattening to the empty string.
	Memory impact: noticeable improvement, due to O(n^2) to O(n)
	reduction from total reuse of $@ references.
	Speed impact: noticeable improvement, due to O(n^2) to O(n)
	reduction in boxed recursion.
	* src/input.c (append_quote_token): Allow an argv ref inside
	quotes.
	(init_argv_token): Populate new fields.
	(push_macro): Ensure a macro is actually pushed.
	* src/m4.h (struct token_chain): Add has_func member.
	(struct token_data): Add wrapper and has_func members.
	* src/macro.c (struct macro_arguments): Add flatten and has_func
	members.
	(expand_argument, collect_arguments, make_argv_ref_token)
	(make_argv_ref): Populate new fields.
	(arg_equal, arg_len) Handle embedded argv.
	(arg_token, arg_mark, arg_type): Use new fields.

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

	Stage 16: cache quotes and improve arg_print.
	Cache rather than always copying quotes when pushing $@ refs; in
	particular, reconstruct single-byte quotes on the fly.  Allow NUL
	through m4wrap.  Improve sharing of code that prints arguments.
	Memory impact: slight improvement, due to cached quotes.
	Speed impact: slight improvement, due to less copying.
	* src/m4.h (push_wrapup_init, push_wrapup_finish, quote_cache)
	(func_print): New prototypes.
	(arg_print): Adjust prototype.
	* src/builtin.h (func_print): New function.
	(define_user_macro): Slight cleanup.
	(dump_args): Delete, no longer used.
	(m4_errprint): Use arg_print.
	(m4_m4wrap): Handle embedded NUL.
	* src/debug.c (trace_pre): Use arg_print.
	* src/input.c (cached_quote): New variable.
	(push_wrapup): Split...
	(push_wrapup_init, push_wrapup_finish): ...into these.
	(input_print): Use arg_print.
	(quote_cache): New function.
	(pop_input, next_char_1, append_quote_token, set_quote_age):
	Adjust users.
	* src/macro.c (arg_text, make_argv_ref_token): Adjust users.
	(arg_print): Add parameters.
	* examples/null.m4: Test for NUL in m4wrap.
	* examples/null.out: Update expected output.
	* doc/m4.texinfo (Debug Levels): Test --arglength truncation.

	Fix out-of-bounds read for sanitized macro names, from 2008-02-06.
	* src/m4.c (m4_verror_at_line): Properly terminate the string.
	Reported by Ralf Wildenhues.

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-18  Eric Blake  <ebb9@byu.net>

	Avoid some magic numbers.
	* src/m4.h (DEBUG_TRACE_ARGS, DEBUG_TRACE_EXPANSION)
	(DEBUG_TRACE_QUOTE, DEBUT_TRACE_ALL, DEBUG_TRACE_LINE)
	(DEBUG_TRACE_FILE, DEBUG_TRACE_PATH, DEBUG_TRACE_CALL)
	(DEBUG_TRACE_INPUT, DEBUG_TRACE_CALLID, DEBUG_TRACE_VERBOSE)
	(DEBUG_TRACE_DEFAULT): Use hex constants, to make it obvious these
	are bit fields.
	* src/input.c (CHAR_EOF, CHAR_MACRO, CHAR_QUOTE, CHAR_ARGV):
	Define in terms of UCHAR_MAX.
	(set_word_regexp): Likewise.
	* src/builtin.c (compile_pattern, m4_translit): Likewise.
	Reported by Ralf Wildenhues.

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.

	Stage 15: return argv refs back to collect_arguments.
	Collect an entire $@ reference at once rather than one argument at
	a time, outside of quotes (but inside quotes, $@ is still
	flattened for now).  The skip_last field allows concatenation of
	$@ with other text when collecting arguments.
	Memory impact: noticeable improvement, due to better reuse of $@.
	Speed impact: noticeable improvement, due to less parsing.
	* src/m4.h (enum token_type): Add TOKEN_ARGV.
	(struct token_chain): Add skip_last member to argv link.
	(next_token): Update prototype.
	* src/input.c (CHAR_ARGV): New placeholder input character.
	(peek_input): Add parameter, to pass $@ at once.
	(next_char_1, append_quote_token): Handle $@ inside quotes.
	(init_argv_token): New function.
	(push_token, match_input, next_token, peek_token, lex_debug):
	Update callers.
	* src/macro.c (expand_input, collect_arguments): Likewise.
	(expand_argument): Handle incoming $@ token.
	(arg_adjust_refcount, arg_token, arg_text, make_argv_ref_token):
	Handle nested $@ refs.
	* src/symtab.c (symtab_debug): Update caller.
	* examples/null.m4: Document more tests that are needed.  Add
	tests for NUL with divert, patsubst, and regexp.
	* examples/null.out: Update for new tests.
	* doc/m4.texinfo (Syntax): Add test for m4exit and NUL.
	* checks/get-them (AWK): Give a default value.
	* checks/check-them: Allow tests to invoke child processes with
	same include path.  Perform message normalization on stderr.

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

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

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.

	Use gnulib's git-merge-changelog driver when available.
	* .gitattributes: New file.
	* bootstrap: Install driver, if not already present.

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

	Fix security hole introduced 2007-11-22.
	* src/m4.h (includes): Add quotearg.h.
	* src/m4.c (m4_verror_at_line): Properly escape macro names.
	(main): Manage quoteargs defaults.
	* doc/m4.texinfo (Indir): Document and test this.

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

	* m4/gnulib-cache.m4: Import the strtod module.

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

	Stage 14: allow pushing argv references.
	Push a $@ reference to the input engine in one go, rather than
	pushing each element.  For now, argument collection still gets one
	argument of a $@ at a time; but the penalties of this patch make
	it easier to manage $@ efficiently in future patches.
	Memory impact: noticeable penalty, due to larger struct and O(n)
	to O(n^2) on unboxed recursion.
	Speed impact: noticeable penalty, due to more bookkeeping.
	* src/m4.h (struct token_chain): Add comma and quotes fields.
	(arg_adjust_refcount, arg_print, push_arg_quote): New prototypes.
	* src/input.c (push_token, pop_input, input_print, peek_input)
	(next_char_1): Support $@ references.
	* src/macro.c (struct macro_arguments): Add level field.  Match
	type of arraylen to argc.
	(collect_arguments): Populate new field.
	(expand_macro, make_argv_ref, push_arg): Factor...
	(arg_adjust_refcount, make_argv_ref_token, push_arg_quote):
	...into these new methods.
	(arg_token): Add new parameter.
	(arg_print): New function.
	(arg_mark, arg_type, arg_text, arg_equal, arg_empty, arg_len)
	(arg_func, push_args): Adjust callers.
	* doc/m4.texinfo (Ifelse): Augment 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.

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

	Stage 13: push composite text tokens.
	Support pushing composite tokens, allowing back-references to be
	reused through multiple macro expansions.  Add hueristic that
	avoids creating new reference when pushing existing references.
	Memory impact: noticeable improvement due to better reference
	reuse, except for O(n) to O(n^2) copying in boxed recursion.
	Speed impact: slight penalty, due to more bookkeeping.
	* src/m4.h (push_token): Adjust prototype.
	* src/input.c (push_token): Add parameter, and handle composite
	tokens.
	(append_quote_token): Inline short strings.
	* src/macro.c (push_arg, push_args): Adjust callers.

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

	Stage 12: make token_chain a union, add string_pair.
	Shrink size of symbol chains by using a union.  Make passing quote
	delimiters around more efficient.  Other code cleanups.
	Memory impact: slight improvement, due to smaller struct.
	Speed impact: slight penalty, due to more bookkeeping.
	* src/m4.h (STRING): Delete typedef.
	(struct string_pair, enum token_chain_type): New types.
	(struct token_chain): Reduce size via a union.
	(ARG_LEN): New macro.
	(ARG): Move here...
	* src/builtin.c (ARG): ...from here.
	(dump_args, define_macro, m4_dumpdef, m4_builtin, m4_indir)
	(m4_defn, mkstemp_helper, m4_maketemp, m4_mkstemp, m4___file__)
	(m4___program__, m4_m4wrap, m4_len, m4_index, m4_substr)
	(m4_regexp, m4_patsubst): Adjust callers.
	* src/input.c (rquote, lquote, bcomm, ecomm): Delete...
	(curr_quote, curr_comm): ...replaced by these.
	(make_text_link, push_token, pop_input, input_print, peek_input)
	(next_char_1, input_init, set_quotes, set_comment, set_quote_age)
	(next_token, peek_token): Adjust callers.
	* src/macro.c (expand_macro, arg_token, arg_mark, arg_text)
	(arg_equal, arg_len, make_argv_ref, push_arg, push_args):
	Likewise.
	* src/format.c (ARG_INT, ARG_LONG, ARG_STR, ARG_DOUBLE, format):
	Likewise.
	* src/freeze.c (produce_frozen_state): Likewise.
	* src/debug.c (trace_format, trace_pre): Likewise.
	(debug_decode): Don't lose partial traces prior to reducing
	debugmode.

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

	Stage 11: full circle for single argument references.
	Pass quoted strings through to argument collection in a single
	action, so that an argument can be reused throughout macro
	recursion if it remains unchanged.
	Memory impact: noticeable improvement, due to more reuse in
	argument collection stacks; O(n^2) to O(n) on boxed recursion.
	Speed impact: noticeable improvement, due to less copying.
	* src/m4.h (struct token_chain): Add quote_age member.
	(struct token_data): Add end member to chain alternate.
	(make_text_link): New prototype.
	* src/input.c (CHAR_QUOTE): New macro.
	(word_start): Pre-allocate.
	(set_word_regexp): Simplify.
	(make_text_link): Export, and handle new fields.
	(next_char, next_char_1): Add parameter.
	(append_quote_token): New function.
	(match_input, next_token): Adjust callers to handle quoted input
	blocks.
	* src/macro.c (struct macro_arguments): Add wrapper member.
	(expand_argument): Accept composite blocks from input engine.
	(expand_macro): Reduce refcounts of composite arguments.
	(collect_arguments, arg_token, arg_mark, make_argv_ref): Update to
	use new fields.
	(arg_type, arg_text, arg_equal, arg_len): Treat composite
	arguments as text.
	(push_arg, push_args): Handle composites.

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

	Stage 10: avoid extra copying of strings and comments.
	When collecting tokens that are immune to further expansion, avoid
	copying data from one obstack to another by outputting it into the
	destination obstack to begin with.  Also reduce copying done in
	format builtin.
	Memory impact: slight improvement, due to better obstack usage.
	Speed impact: noticeable improvement, due less data copying.
	* m4/gnulib-cache.m4: Import the intprops and vasnprintf-posix
	modules.
	* src/m4.h (includes): Use new gnulib modules.
	(next_token): Adjust prototype.
	(bad_argc): New prototype.
	* src/format.c (arg_int, arg_long, arg_double): New helper
	functions.
	(ARG_INT, ARG_LONG, ARG_STR, ARG_DOUBLE): Track missing
	arguments.
	(format): Improve warnings, and avoid copying into obstack in the
	common case.
	* src/input.c (next_token): Add new parameter.
	(lex_debug): Adjust caller.
	* src/symtab.c (symtab_debug): Likewise.
	* src/macro.c (expand_input, expand_token, expand_argument)
	(collect_arguments): Likewise.
	* src/output.c (m4_tmpname): Guarantee correct buffer size.
	* src/builtin.c (builtin_init): Improve efficiency.
	(bad_argc): Export.
	(ntoa): Tighten buffer allocation.
	* doc/m4.texinfo (Format): Test the improvements.
	* NEWS: Document the improvement.

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

	Fix --warn-macro-sequence regression from 2007-11-29.
	* src/builtin.c (define_user_macro): Use correct length.
	* doc/m4.texinfo (Arguments): Test the fix.
	(History): Reword to account for new year and eventual result of
	the argv_ref branch.

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

	Bump copyright year.
	* NEWS: Update year.  Mention effect of my recent memmem
	contributions to gnulib.

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

	Stage 9: share rather than copy single-arg refs.
	Use hooks of previous patch to create back-references to arguments
	in the input engine, and inline short text rather than always
	creating a FIFO link.  Also start testing embedded NUL behavior.
	Until the argument collection engine also shares references, the
	memory usage increases.
	Memory impact: noticeable penalty, due to longer life of argv
	changing O(n) to O(n^2) on boxed recursion.
	Speed impact: slight improvement, due less data copying.
	* m4/gnulib-cache.m4: Import quote and memmem modules.
	* src/m4.h (arg_scratch): New prototype.
	* src/input.c (INPUT_INLINE_THRESHOLD): New define.
	(push_token): Use it to inline short text, and save references to
	longer text.
	(input_init, next_token): Simplify obstack handling.
	* src/macro.c (expand_argument): Likewise.
	(expand_macro): Track scratch space.
	(arg_scratch): New function.
	(make_argv_ref): Use it.
	(push_args): Likewise, and simplify comma handling, since most
	separators are short enough to be inlined.
	* src/builtin.c (builtin_init): Avoid cast.
	(m4_errprint, m4_index): Transparently support NUL.
	(m4_translit): Use scratch space, rather than leaking memory on
	expansion stack.
	* doc/m4.texinfo (Syntax): Add new test of embedded NUL.
	* checks/get-them: Extract test that uses external files.
	* checks/check-them: Run the new test.  Use unified diff if
	possible, and force text mode when debugging NUL handling.
	* examples/null.m4: New file.
	* examples/null.out: Likewise.
	* examples/null.err: Likewise.
	* examples/Makefile.am (EXTRA_FILES): Distribute these files.
	* .gitattributes: Treat new files as text, in spite of embedded
	NUL.

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

	Stage 8: extend life of references into argv.
	Add hooks to lengthen the lifetime of arguments reused in a macro
	expansion, rather than always discarding arguments at the end of
	expand_macro.  Rework the expand_macro obstacks to handle longer
	lifetimes.  For now, the hooks remain unused.
	Memory impact: slight penalty, due to larger structs.
	Speed impact: slight penalty, due to more bookkeeping.
	* src/m4.h (obstack_regrow): Delete, now that it is unused.
	(struct token_chain): Add level field.
	(push_token): Adjust prototype.
	(adjust_refcount): New prototype.
	* src/macro.c [DEBUG_MACRO]: Add debugging hooks for $@ reference
	counting.
	(argc_stack, argv_stack): Delete, replaced by...
	(struct macro_arg_stacks, stacks, stacks_count): ...these new
	structure for tracking $@ references.
	(expand_input): Initialize new structure.
	(collect_arguments): Alter signature.
	(expand_macro): Rework obstack handling, in order to keep $@
	references alive until they have been rescanned.
	(adjust_refcount, arg_mark): New functions.
	(make_argv_ref): Use new field.
	(push_arg, push_args): Update callers.
	* src/input.c (make_text_link): Use new field.
	(push_token): Change signature.
	(pop_input, next_char_1): Call new function.
	* doc/m4.texinfo: Clean up some examples of -d option usage.
	(Ifelse): Add some stress tests.

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

	Yet more rewording.
	* doc/m4.texinfo (Inhibiting Invocation): Missed one instance in
	the previous patch.

	* THANKS: Update.

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

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

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

	Stage 7: add chained token support to input parser.
	Allow the LIFO input engine to rescan a macro expansion composed
	of smaller chunks of FIFO data, rather than the old approach of a
	monolithic string.  For now, all chunks are still copied.
	Memory impact: slight penalty, due to FIFO chain overhead.
	Speed impact: noticeable penalty, due to extra bookkeeping.
	* src/m4.h (struct token_chain): Add const safety.
	(push_token): New prototype.
	* src/input.c (INPUT_CHAIN): New enumerator.
	(struct input_block): Add new input type u_c, and change u_s to
	length-based processing.
	(make_text_link): New helper function.
	(push_token): New function.
	(push_string_finish): Use it.
	(pop_input, input_print, peek_input, next_char, next_char_1):
	Adjust to handle new input type.
	* src/macro.c (push_arg, push_args): Use new function.

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

	Stage 6: convert builtins to push arg at a time.
	Add new methods to factor all builtins whose expansion includes an
	argument, making back-reference creation easier in future patches.
	Factor out length-limited printing to obstacks, and use -1 rather
	than 0 for unlimited length.
	Memory impact: none.
	Speed impact: slight improvement, due to better code sharing.
	* src/m4.h (includes): Include <limits.h> here, instead of in
	individual files.
	(input_block): New typedef.
	(trace_pre, trace_post, push_string_finish): Update prototypes.
	(obstack_print, input_print, push_arg, push_args): New
	prototypes.
	* src/input.c (push_string_finish): Change return type.
	(input_print): New function.
	* src/debug.c (trace_format): Add %B specifier, and use new
	function.
	(trace_pre): Remove redundant argc parameter.
	(trace_post): Likewise, and change signature.
	(obstack_print): New function.
	* src/macro.c (expand_macro): Update caller.
	(push_arg, push_args): New functions.
	* src/builtin.c (m4_ifdef, m4_ifelse, m4_shift, m4_substr)
	(m4_patsubst, expand_user_macro): Use new functions.
	(mkstemp_helper, m4_maketemp): Avoid extra trailing NULs.
	* src/m4.c (max_debug_argument_length, main): Set to INT_MAX, not
	0, for unlimited.
	* src/output.c: Update includes.
	* src/symtab.c: Likewise.

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.

	Stage 5: add notion of quote age.
	Cache the quoting rules that were in effect when a string was
	parsed, to avoid reparsing that string if no changequote or other
	quote age change took place in the meantime.  A quote_age of 0 is
	always safe, but does not benefit from caching.
	Memory impact: slight penalty, due to larger struct.
	Speed impact: slight penalty, due to more bookkeeping.
	* src/input.c: Comment cleanups.
	(current_quote_age): New global variable.
	(set_quote_age): New helper function.
	(input_init, set_word_regexp): Use it.
	(set_quotes, set_comment): Likewise, and detect no-op changes.
	(quote_age, safe_quotes): New functions.
	(next_token): Track quote age.
	* src/m4.h (struct token_data): Add quote_age member.
	(TOKEN_DATA_QUOTE_AGE, quote_age, safe_quotes): New prototypes.
	* src/macro.c (struct macro_arguments): Add quote_age member.
	(expand_token): Alter signature and track quote age.
	(expand_input, expand_argument): All callers changed.
	(collect_arguments, make_argv_ref): Track quote age.
	(arg_text, arg_len, arg_func): Detect type mismatch.
	* doc/m4.texinfo (Ifelse, Changequote): Add more tests.
	(Incompatibilities): Fix typo.
	* examples/wraplifo.m4: New file.
	* examples/Makefile.am (EXTRA_DIST): Distribute it.

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-29  Eric Blake  <ebb9@byu.net>

	Stage 4: route indir, builtin through ref; make argv opaque.
	Finish making struct opaque to all but the input engine, by
	reworking obstack usage in expand_macro to better support creation
	of a $@ reference.  Canonicalize the empty argument, to allow
	pointer comparison optimizations.
	Memory impact: slight penalty, due to larger struct.
	Speed impact: slight improvement, due to fewer function calls.
	* src/m4.h (obstack_regrow): Borrow definition from head.
	(struct token_chain): Add flatten and len members.
	(arg_equal, arg_empty, make_argv_ref): New prototypes.
	(struct macro_arguments): Move...
	* src/macro.c (struct macro_arguments): ...here, making it
	opaque.  Add has_ref member.
	(empty_token): New placeholder, for optimizing comparison with
	empty string.
	(collect_arguments): Change signature, and populate new fields.
	(expand_macro): Alter handling of obstacks.
	(arg_token): New helper method.
	(arg_equal, arg_empty, make_argv_ref): New methods.
	(arg_type, arg_text, arg_len, arg_func): Use new methods.
	* src/builtin.c (m4_ifelse, m4_builtin, m4_indir, m4_eval):
	Likewise.
	* src/format.c (format): Likewise.

	Stage 3: cache length, rather than computing it.
	Cache the length of a token, to avoid repeating lots of strlen
	calls.  Additionally, by using obstack length rather than strlen,
	the input engine can now support embedded NUL.
	Memory impact: slight penalty, due to larger struct.
	Speed impact: noticeable improvement, due to fewer function
	calls.
	* src/input.c (next_token): Grab length from obstack rather than
	calling strlen.
	* src/m4.h (token_data, macro_arguments): Add length field.
	(TOKEN_DATA_LEN): New accessor.
	(define_user_macro): Add parameter.
	* src/builtin.c (define_user_macro, mkstemp_helper): Use
	pre-computed length.
	(builtin_init, define_macro, m4_maketemp, m4_mkstemp): Adjust
	callers.
	(dump_args, m4_ifdef, m4_ifelse, m4_builtin, m4_indir, m4_eval)
	(m4_len, m4_substr, m4_translit, m4_regexp, m4_patsubst)
	(expand_user_macro): Use cached lengths.
	* src/freeze.c (reload_frozen_state): Adjust callers.
	* src/m4.c (main): Likewise.
	* src/macro.c (expand_token, expand_argument, collect_arguments)
	(arg_len): Use cached length.
	* doc/m4.texinfo (Mkstemp): Ensure mkstemp does not produce NUL.

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

	Stage 2: use accessors, not direct reference, into argv.
	Outside of macro.c, use accessor methods rather than direct access
	into the argv struct.
	Memory impact: none.
	Speed impact: slight penalty, due to increased function calls.
	* src/m4.h (TOKEN_EOF): Alter value, to ease debugging.
	(arg_argc, arg_type, arg_text, arg_len, arg_func): New
	prototypes.
	* src/macro.c (arg_argc, arg_type, arg_text, arg_len, arg_func):
	New accessor functions.
	* src/builtin.c (ARG, dump_args, define_macro, m4_builtin)
	(m4_indir): Use new accessors.
	* src/debug.c (trace_pre): Likewise.
	* src/format.c (ARG_INT, ARG_LONG, ARG_STR, ARG_DOUBLE):
	Likewise.

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

	Stage 1: convert token_data** into new object.
	Pass a variable-size wrapper structure instead of an array to
	builtins, so that subsequent optimizations in the structure need
	not impact every builtin client.
	Memory impact: slight penalty, since struct is larger than array.
	Speed impact: slight penalty, due to increased bookkeeping.
	* m4/gnulib-cache.m4: Import flexmember module.
	* src/m4.h (struct macro_arguments, struct token_chain): New
	structs.
	(builtin_func): Alter signature.
	(token_data): Add new TOKEN_COMP alternative.
	* src/builtin.c: All builtins changed.
	(ARG, dump_args, define_macro, expand_user_macro): Update to use
	struct.
	* src/debug.c (trace_pre, trace_post): Likewise.
	* src/format.c (ARG_INT, ARG_LONG, ARG_STR, ARG_DOUBLE, format):
	Likewise.
	* src/macro.c (collect_arguments): Build new struct.
	(call_macro, expand_macro): Update to use new struct.

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

	More error messages tied to macro names.
	* src/input.c (set_word_regexp): Take additional parameter.
	(input_init): Adjust caller.
	* src/debug.c (debug_set_file, debug_set_output): Take additional
	parameter.
	(debug_init): Adjust caller.
	(expansion_level): Move declaration...
	* src/m4.h (expansion_level): ...here.
	(debug_set_output, set_word_regexp): Adjust prototypes.
	* src/builtin.c (m4_changeword, m4_m4exit, m4_debugfile): Adjust
	callers.
	* src/m4.c (main): Likewise.

	Refactor error messages to avoid macros.
	* src/m4.h (_): Define, as a placeholder for now.
	(M4ERROR, M4ERROR_AT_LINE): Delete.
	(m4_error, m4_error_at_line): Change prototype.
	(m4_warn, m4_warn_at_line): New prototypes.
	* src/m4.c (m4_verror_at_line): New helper function.
	(m4_error, m4_error_at_line): Use new function, and properly call
	va_end.
	(m4_warn, m4_warn_at_line): New functions.
	(stackovf_handler, main): All callers changed.
	* 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/macro.c: Likewise.
	* doc/m4.texinfo (Indir, Builtin, Dumpdef, Incr, Eval, Substr)
	(Improved forloop): Adjust tests accordingly.

	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-21  Eric Blake  <ebb9@byu.net>

	Consistently report macro name first in messages.
	* src/m4.h (evaluate): Adjust prototype.
	* src/builtin.c (bad_argc, numeric_arg, m4_placeholder): Alter
	wording to match head.
	(mkstemp_helper, substitute): Adjust signature.  All callers
	changed.
	(m4_dumpdef, m4_builtin, m4_indir, m4_defn, m4_esyscmd, m4_eval)
	(m4_undivert, m4_maketemp, m4_m4exit, m4_debugmode)
	(m4_debugfile, m4_regexp, m4_patsubst): Mention macro name in
	message.
	(m4_format): Adjust call.
	* src/format.c (format): No longer skip argv[0].
	* src/eval.c (evaluate): Mention macro name in message.
	(logical_or_term, logical_and_term, or_term, xor_term, and_term)
	(equality_term, cmp_term, shift_term, add_term, mult_term)
	(exp_term, unary_term, simple_term): Adjust signature.
	* src/macro.c (warn_builtin_concat): Likewise.
	(expand_argument): Adjust caller.
	* doc/m4.texinfo (Macro Arguments, Ifdef, Ifelse, Debug Output)
	(Dnl, Improved fatal_error, Defn, Builtin, Index macro, Regexp)
	(Substr, Translit, Patsubst, Format, Eval, Dumpdef, Include)
	(Improved forloop, Indir, Trace, Incr): Adjust tests to match.

	Make argument checking a bit more sane.
	* src/builtin.c (bad_argc): Adjust signature, and don't force
	callers to add 1.  Adjust all callers.
	(numeric_arg): Adjust signature.  Adjust all callers.

	Make dnl diagnostic print macro name.
	* src/m4.h (skip_line): Adjust prototype.
	* src/input.c (skip_line): Report error on behalf of caller.
	* src/builtin.c (m4_dnl): Adjust caller.
	(dump_args, m4_dumpdef, m4_changequote, m4_changecom)
	(m4_changeword, m4_traceon, m4_traceoff, expand_user_macro): Use
	ARG macro instead of open-coding.
	* doc/m4.texinfo (Dnl): Adjust test.

2007-11-20  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* Makefile.am (EXTRA_DIST): gendocs.sh is gone here.

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

	Avoid builtin concatenation in macro arguments.
	* doc/m4.texinfo (Defn): Add tests.
	* src/macro.c (warn_builtin_concat): New function.
	(expand_argument): Use it to warn on more corner cases.
	* NEWS: Mention new warning.

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

	Simplify previous patch.
	* src/input.c (pop_input): Change signature.
	(push_string_init, next_char_1): Adjust callers.

	Note: Patches titled Stage 0 through N form a series of patches
	which decreases the algorithmic complexity of tail recursion in
	macro expansions from O(n^2) to O(n) in both time and memory, then
	performs cleanups, such as handling of embedded NUL, made easier
	by the code refactoring.

	Stage 0: Fix memory leak in tail recursion.
	Free expansion text in the input engine as soon as it is parsed,
	rather than when the recursive expansion completes.
	Memory impact: noticeable improvement, due to reduction from
	O(n^2) to O(n) on recursion.
	Speed impact: minor improvement, due to better memory usage.
	* src/input.c (push_string_init): Let go of memory earlier.
	(next_char_1): Make end of string detection reliable.
	(match_input): Simplify use of push_string_init.
	* 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 assert, rather than INTERNAL ERROR.
	* src/m4.h: Include <assert.h>.
	* src/builtin.c (m4_dumpdef, define_macro, m4_defn): Use assert.
	* src/debug.c (trace_pre): Likewise.
	* src/eval.c (evaluate, cmp_term, shift_term, mult_term):
	Likewise.
	* src/freeze.c (produce_frozen_state): Likewise.
	* src/input.c (push_string_init, pop_input, init_macro_token)
	(peek_input, next_char_1, set_word_regexp): Likewise.
	* src/m4.c (main): Likewise.
	* src/macro.c (expand_token, expand_argument, call_macro):
	Likewise.
	* src/output.c (make_diversion): Likewise.
	* src/symtab.c (symtab_init): Likewise.

	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.
	* bootstrap: Adjust accordingly.
	* m4/gnulib-cache.m4: Add --aux-dir option.
	* doc/Makefile.am (m4.1): Rewrite rule to use build-aux/missing.

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

	Update some documentation about version control.
	* NEWS: M4 is now stored in git.
	* HACKING: Likewise.
	* README: Likewise.
	* bootstrap: Likewise.
	* commit: Delete, now that CVS commits are no longer necessary.

	Adjust to recent gnulib change.
	* m4/gnulib-cache.m4: Drop vasprintf-posix and xvasprintf, and use
	xvasprintf-posix instead.

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

	Improve error message when early end of file occurs.
	* doc/m4.texinfo (Macro Arguments, Changequote, Changecom)
	(M4wrap): Adjust to new messages.
	(Improved capitalize): Enhance test.
	* src/m4.h (next_token): Adjust prototype.
	* src/input.c (next_token): Add new parameter, and improve error
	message.
	(lex_debug): Adjust callers.
	* src/symtab.c (symtab_debug): Likewise.
	* src/macro.c (expand_input, collect_arguments): Likewise.
	(expand_argument): Likewise, and add parameter.

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.
	* examples/foreachq3.m4: New file.
	* examples/loop.m4: New file.
	* examples/Makefile.am (EXTRA_DIST): Distribute them.

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-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* examples/Makefile.am (EXTRA_DIST): Add capitalize2.m4.

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

	Reduce number of mingw testsuite failures.
	* doc/m4.texinfo (Using frozen files): Skip test on mingw.

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

	Add DEBUG_REGEX debugging information.
	* src/m4.h (DEBUG_REGEX): New debug macro.
	* src/m4.c (main) [DEBUG_REGEX]: Open regex trace file when
	requested.
	* src/builtin.c (m4_patsubst, m4_regexp, compile_pattern)
	[DEBUG_REGEX]: Trace regex usage.

	Never let printf failures go undetected.
	* m4/gnulib-cache.m4: Augment with 'gnulib-tool --import
	xprintf'.
	* src/m4.h: Include xprintf.h.
	* src/format.c (format): Warn on format failures.
	* 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 (m4_tmpname, 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>

	* NEWS: Document recent speedups.

	Fix regexp regression of 2007-09-29.
	* src/builtin.c (substitute): Allow NULL regs when no
	subexpressions were present.
	(m4_regexp): Handle \ escapes even with empty regex.
	* doc/m4.texinfo (Regexp, Patsubst): Catch this bug.

	Cache regex compilation for another autoconf speedup.
	* src/m4.h (free_macro_sequence): Rename...
	(free_regex): ...to this.
	* src/m4.c (main): Update caller.
	* src/builtin.c (REGEX_CACHE_SIZE, m4_regex, regex_cache): New
	declarations.
	(compile_pattern): New function; cache recent regexes.
	(free_regex): Rename, and clean up additional memory.
	(m4_regexp, m4_patsubst): Use new function.

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

	Document quoting pitfalls in capitalize.
	* doc/m4.texinfo (Patsubst): Use the examples directory.  Also
	document shortfall.
	(Improved capitalize): New node.
	* examples/capitalize.m4: Update to match manual.
	* examples/capitalize2.m4: New file.

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

	Another Autoconf usage pattern optimization.
	* src/builtin.c (m4_index): Optimize search for one byte.
	* doc/m4.texinfo (Index macro, Regexp, Patsubst): Test the new
	code paths.

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

	Optimize for Autoconf usage pattern.
	* src/builtin.c (m4_regexp, m4_patsubst): Handle empty regex
	faster.

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  Francois 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  Francois 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  Francois 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  Francois 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  Francois 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  Francois 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  Francois 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  Francois 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  Francois Pinard  (pinard@icule)

	* src/m4.h: Get rid of CONFIG_BROKETS.

Sun Oct  2 16:48:10 1994  Francois 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  Francois 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  Francois 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  Francois Pinard  (pinard@icule)

	* src/Makefile.in (TAGS): Include a ../lib/TAGS reference.
	Reported by Karl Berry.

Wed Sep 14 10:00:22 1994  Francois 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  Francois 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  Francois 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  Francois 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  Francois 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  Francois Pinard  (pinard@icule)

	* lib/Makefile.in (install): Depend on all.

Wed Aug 31 11:17:21 1994  Francois 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  Francois 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  Francois 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  Francois 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  Francois 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  Francois 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  Francois 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  Francois 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  Francois 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  Francois Pinard  (pinard@icule)

	* m4.c (usage): Replace printf par fputs.

Mon Jul 18 23:48:23 1994  Francois Pinard  (pinard@icule)

	* Release 1.2

Sun Jul 17 08:08:25 1994  Francois 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  Francois Pinard  (pinard@icule)

	* ansi2knr.c: New version sent by its author, Peter Deutsch.

Fri Jul 15 14:36:21 1994  Francois 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  Francois 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  Francois 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  Francois 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  Francois 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  Francois 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  Francois 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  Francois 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  Francois 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  Francois 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  Francois 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  Francois 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  Francois Pinard  (pinard@icule)

	* m4.h (_): Change argument from `x' to `Args'.

Wed May  4 23:59:39 1994  Francois 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  Francois 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  Francois 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  Francois 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  Francois 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  Francois 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  Francois 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  Francois 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  Francois 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  Francois 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  Francois 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  Francois 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  Francois 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  Francois 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  Francois Pinard  (pinard@icule)

	* m4.h: Do not define volatile if already defined.
	Reported by Rene' 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  Francois 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  Francois 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  Francois 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  Francois 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  Francois 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  Francois 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  Francois 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  Francois Pinard  (pinard@icule)

	* Makefile.in (m4.info): Use -I$(srcdir) on $(MAKEINFO).
	Reported by Noah Friedman.

Mon Oct 25 14:58:48 1993  Francois Pinard  (pinard@icule)

	* Makefile.in: Remove MDEFINES and cleanup.

Wed Jun  9 14:59:46 1993  Francois Pinard  (pinard@icule)

	* Makefile.in (dist): Replace "echo `pwd`" by a mere "pwd".
	Create a gzip file.

Sat Feb  6 14:59:22 1993  Francois 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  Francois 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  Francois 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  Francois Pinard  (pinard at icule)

	* Makefile.in, lib/Makefile.in: Reinstate $(CPPFLAGS), use it.
	Richard wants it there.

Sun Dec 27 07:01:54 1992  Francois 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  Francois 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  Francois 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  Francois 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  Francois 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  Francois 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  Francois 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  Francois 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  Francois 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  Francois Pinard  (pinard at icule)

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

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

	* checks/get_them, checks/check_them: Reindented.

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

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

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

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

	* 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  Francois Pinard  (pinard at icule)

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

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

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

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

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

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

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

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

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

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

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

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

	* Many *.[hc] files: Correct intra-line spacing here and there,
	according to GNU indent 1.6 advice.

	* 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  Francois 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  Francois Pinard  (pinard at icule)

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

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

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

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

	* 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  Rene' 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  Rene' Seindal (seindal at diku.dk)

	* Fixed various bugs.  Release 0.99, manual 0.09.  Many thanks to
	Francois 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  Rene' 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  Rene' Seindal (seindal at diku.dk)

	* Initial beta release.  Release 0.50, manual 0.05.

	-----

	Local Variables:
	coding: utf-8
	End:

	Copyright (C) 1990, 1991, 1992, 1993, 1994, 2000, 2001, 2003,
	2005, 2006, 2007, 2008 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.
