diff options
Diffstat (limited to 'ChangeLog.old')
-rw-r--r-- | ChangeLog.old | 12324 |
1 files changed, 0 insertions, 12324 deletions
diff --git a/ChangeLog.old b/ChangeLog.old deleted file mode 100644 index ab146a8e..00000000 --- a/ChangeLog.old +++ /dev/null @@ -1,12324 +0,0 @@ -2010-03-02 Giuseppe Scrivano <gscrivano@gnu.org> (tiny change) - - Support bootstrap --gnulib-srcdir=DIR. - * bootstrap: Add --gnulib-srcdir option, which overrides - GNULIB_SRCDIR, for consistency with gnulib bootstrap. - -2010-03-01 Eric Blake <eblake@redhat.com> - - Mention release of version 1.4.14. - * gnulib: Update to latest. - * README: Drop CVS mention. - * HACKING: Tweak release instructions. - * NEWS: Mention the release. - * .prev-version: Record previous version. - * cfg.mk (old_NEWS_hash): Auto-update. - -2010-02-24 Eric Blake <eblake@redhat.com> - - Improve parsing example. - * doc/m4.texinfo (Input processing): Double-quote argument to - translit, for robustness. - * THANKS: Update. - Reported by Chris Penev. - -2010-01-29 Eric Blake <ebb9@byu.net> - - Document upcoming release. - * gnulib: Update to latest. - * doc/m4.texinfo (History): Mention 1.4.14. - * Makefile.am (src/getopt.h): Drop dependence on now-obsolete - link-warning.h. - -2010-01-08 Eric Blake <ebb9@byu.net> - - Address remaining 'make syntax-check' findings. - * gnulib: Update to latest. - * Makefile.am (tests/package.m4): Avoid @@ substitution. - (src_m4_LDADD): Link with libiconv. - * m4/m4private.h (STREQ): New macro. - * m4/resyntax.c (m4_regexp_syntax_encode): Use it. - * src/main.c (process_file): Likewise. - (includes): Drop unused header. - * m4/macro.c (m4_arg_equal): Adjust comment. - * m4/syntax.c: Likewise. - * m4/system_.h: Avoid useless preprocessor parenthesis. - * ltdl/m4/stackovf.m4 (M4_SYS_STACKOVF): Likewise. - * src/stackovf.c: Likewise. - (setup_stackovf_trap): Mark diagnostics. - * modules/mpeval.c (includes): Move quotearg.h inclusion... - * modules/evalparse.c (includes): ...to where it is used. - * cfg.mk (local-checks-to-skip): Exempt tests that cause spurious - failures, but first fix what they were intended to detect. - (_makefile_at_at_check_exceptions): Allow an exception. - -2010-01-07 Eric Blake <ebb9@byu.net> - - Use correct license on auxiliary documentation. - * gnulib: Update to latest. - * AUTHORS: Use GFDL 1.3, not 1.2. - * README-alpha: Likewise. - * README: Likewise. - * THANKS: Likewise. - * doc/STYLE: Likewise. - * modules/README: Likewise. - * NEWS: Place under GFDL. - * TODO: Likewise. - * cfg.mk (old_NEWS_hash): Update. - - Address 'make sc_error_message_uppercase' failures. - * m4/output.c (m4_freeze_diversions): Silence false positive. - * src/main.c (main): Use 'warning', not 'Warning', in messages. - * m4/utility.c (m4_verror_at_line): Likewise. - * doc/m4.texinfo (Operation modes, Macro Arguments, Undefine) - (Defn, Pushdef, Indir, Builtin, Ifdef, Ifelse, Dumpdef, Trace) - (Debuglen, Debugfile, Dnl, Changeresyntax, Standard Modules) - (Index macro, Regexp, Substr, Translit, Patsubst, Format, Incr) - (Eval, Mkstemp, Syncoutput, Improved forloop) - (Improved fatal_error): Adjust expected output. - * tests/builtins.at (define, mkdtemp, mkstemp): Likewise. - * tests/freeze.at (loading format 1, reloading unknown builtin): - Likewise. - * tests/macros.at (Arity and defn, 'Arity, defn, and freeze') - (pushdef/popdef): Likewise. - * tests/null.err: Likewise. - * tests/options.at (deprecated options, POSIXLY_CORRECT) - (--fatal-warnings, --regexp-syntax, --syncoutput): Likewise. - * tests/others.at (nul character, stdin seekable): Likewise. - * tests/modules.at (AT_CHECK_M4_MODTEST, modules: text): - Likewise. - - Address 'make sc_cast_of_argument_to_free' failures. - * m4/m4private.h (DELETE): Adjust comment and fix parentheses. - * m4/m4.c (m4_delete): Use it to avoid warning. - * m4/module.c (install_builtin_table, module_remove): Likewise. - * m4/symtab.c (m4_symbol_value_delete, m4_symbol_value_copy): - Likewise. - * .x-sc_cast_of_argument_to_free: New file. - * Makefile.am (syntax_check_exceptions): Distribute exceptions. - - More whitespace cleanup. - * HACKING: Nuke trailing whitespace. - * examples/WWW/Makefile: Likewise. - * examples/WWW/_footer.htm: Likewise. - * examples/WWW/_header.htm: Likewise. - * examples/WWW/m4lib/bugs.m4: Likewise. - * examples/WWW/m4lib/html.m4: Likewise. - * examples/WWW/m4lib/menu.m4: Likewise. - * examples/WWW/m4lib/visions.m4: Likewise. - * examples/esyscmd.m4: Likewise. - * examples/fstab.m4: Avoid space-tab. - * examples/patsubst.m4: Likewise. - * NEWS: Prefer space over tab for alignment. - * THANKS: Likewise. - * TODO: Likewise. - * bootstrap: Likewise. - * configure.ac: Likewise. - * ltdl/m4/stackovf.m4: Likewise. - * m4/hash.c: Likewise. - * m4/hash.h: Likewise. - * m4/input.c: Likewise. - * m4/m4.c: Likewise. - * m4/m4module.h: Likewise. - * m4/m4private.h: Likewise. - * m4/macro.c: Likewise. - * m4/module.c: Likewise. - * m4/output.c: Likewise. - * m4/path.c: Likewise. - * m4/resyntax.c: Likewise. - * m4/symtab.c: Likewise. - * m4/syntax.c: Likewise. - * m4/system_.h: Likewise. - * modules/evalparse.c: Likewise. - * modules/format.c: Likewise. - * modules/gnu.c: Likewise. - * modules/import.c: Likewise. - * modules/load.c: Likewise. - * modules/m4.c: Likewise. - * modules/m4.h: Likewise. - * modules/modtest.c: Likewise. - * modules/mpeval.c: Likewise. - * modules/perl.c: Likewise. - * modules/shadow.c: Likewise. - * modules/stdlib.c: Likewise. - * modules/time.c: Likewise. - * modules/traditional.c: Likewise. - * src/freeze.c: Likewise. - * src/main.c: Likewise. - * src/stackovf.c: Likewise. - * tests/stackovf.test: Likewise. - * doc/STYLE: Mention the change. - -2010-01-05 Eric Blake <ebb9@byu.net> - - Document new indentation policy. - * HACKING: Document indentation policy. - * .x-sc_prohibit_tab_based_indentation: New file. - * cfg.mk (sc_prohibit_tab_based_indentation): New rule. - * Makefile.am (syntax_check_exceptions): Ship exception. - - Switch to indentation by space, not tab. - * .gitmodules: Convert leading tabs to spaces. - * TODO: Likewise. - * bootstrap: Likewise. - * configure.ac: Likewise. - * examples/WWW/m4lib/html.m4: Likewise. - * examples/WWW/m4lib/layout.m4: Likewise. - * examples/WWW/m4lib/menu.m4: Likewise. - * ltdl/m4/debug.m4: Likewise. - * ltdl/m4/gmp.m4: Likewise. - * ltdl/m4/m4-obstack.m4: Likewise. - * ltdl/m4/stackovf.m4: Likewise. - * m4/builtin.c: Likewise. - * m4/debug.c: Likewise. - * m4/hash.c: Likewise. - * m4/hash.h: Likewise. - * m4/input.c: Likewise. - * m4/m4.c: Likewise. - * m4/m4module.h: Likewise. - * m4/m4private.h: Likewise. - * m4/macro.c: Likewise. - * m4/module.c: Likewise. - * m4/output.c: Likewise. - * m4/path.c: Likewise. - * m4/resyntax.c: Likewise. - * m4/symtab.c: Likewise. - * m4/syntax.c: Likewise. - * m4/utility.c: Likewise. - * modules/evalparse.c: Likewise. - * modules/format.c: Likewise. - * modules/gnu.c: Likewise. - * modules/load.c: Likewise. - * modules/m4.c: Likewise. - * modules/m4.h: Likewise. - * modules/mpeval.c: Likewise. - * modules/perl.c: Likewise. - * modules/stdlib.c: Likewise. - * modules/time.c: Likewise. - * src/freeze.c: Likewise. - * src/m4.h: Likewise. - * src/main.c: Likewise. - * src/stackovf.c: Likewise. - * tests/builtins.at: Likewise. - * tests/freeze.at: Likewise. - * tests/generate.awk: Likewise. - * tests/modules.at: Likewise. - * tests/others.at: Likewise. - * tests/stackovf.test: Likewise. - * tests/testsuite.at: Likewise. - - Update copyright year. - All files impacted, via 'make update-copyright'. Additionally: - * .gitignore: Ignore backup files. - - Prepare to bulk update copyright year. - * gnulib: Update. - * ltdl/m4/gnulib-cache.m4: Import update-copyright module. - * cfg.mk (update-copyright-env): Enforce longhand behavior. - * .x-update-copyright: New file. - * Makefile.am (syntax_check_exceptions): Distribute exception. - * ltdl/m4/debug.m4: Add FSF copyright. - * ltdl/m4/m4-error.m4: Fix FSF name in copyright. - * ltdl/m4/m4-getopt.m4: Likewise. - * ltdl/m4/m4-gettext.m4: Likewise. - * ltdl/m4/m4-obstack.m4: Likewise. - * ltdl/m4/m4-regex.m4: Likewise. - * ltdl/m4/m4-rename.m4: Likewise. - * ltdl/m4/m4-syscmd.m4: Likewise. - * modules/modtest.m4: Likewise. - * modules/perl.m4: Likewise. - * modules/shadow.m4: Likewise. - * modules/stdlib.m4: Likewise. - * modules/time.m4: Likewise. - * modules/time2.m4: Likewise. - * tests/iso8859.m4: Likewise. - - Use gnulib maintainer-makefile module. - * ltdl/m4/gnulib-cache.m4: Import maintainer-makefile module. - * cfg.mk (local-checks-to-skip): Drop changelog-check; add - sc_cast_of_x_alloc_return_value. - (gnu_ftp_host-alpha, gnu_ftp_host-beta, gnu_ftp_host-major) - (gnu_rel_host): Delete; provided by maint.mk. - (old_NEWS_hash): New macro. - * .prev-version: New file. - * .x-sc_require_config_h: Likewise. - * .x-sc_require_config_h_first: Likewise. - * Makefile.am (syntax_check_exceptions, EXTRA_DIST): Ship new - files. - * maint.mk: Remove from version control; use gnulib instead. - * .gitignore: Update. - - Update to latest gnulib. - * gnulib: Update. - * ltdl/m4/gnulib-cache.m4: Import xoset. - * m4/output.c (includes): Ensure that gnulib oset usage will - call xalloc_die on memory failure. - * Makefile.am (src/getopt.h): Update snippet from gnulib. - (LINK_WARNING_H, ARG_NONNULL_H): New macros. - - Fix testsuite failure on newer glibc. - * tests/testsuite.at (AT_CHECK_M4): Tolerate alternate getopt - spellings. - * tests/options.at (deprecated options, unknown option) - (--debugmode): Adjust expected output accordingly. - Reported by Ralf Wildenhues. - -2009-11-26 Eric Blake <ebb9@byu.net> - - Update to newer gnulib. - * gnulib: Update. - * ltdl/m4/gnulib-cache.m4: Import inttypes, setenv, and unsetenv - modules. - * modules/m4.c (m4_make_temp): Adjust gen_tempname client. - * bootstrap (src_modules): Pick up getopt-gnu and its - dependencies. - * configure.ac (gl_VERSION_ETC): Support ./configure - --with-packager. - (AC_CHECK_FUNCS_ONCE): Rely on gnulib for setenv, unsetenv. - * ltdl/m4/m4-getopt.m4: Rewrite to match current gnulib. - * Makefile.am (src/getopt.h): Likewise. - * modules/stdlib.c (setenv, unsetenv): Rely on gnulib. - -2009-08-24 Eric Blake <ebb9@byu.net> - - Pick up gnulib fixes for sub-process execution. - * gnulib: Update. - * tests/others.at (stdin and stdout closed): New test, to avoid - regression introduced on 1.4 branch on 2008-07-17. - * NEWS: Document the change. - - A status of 127 does not always imply esyscmd failure. - * modules/gnu.c (esyscmd): Silence gnulib message; regression - introduced 2009-03-13. - * doc/m4.texinfo (Sysval): Test this. - * NEWS: Document the change. - -2009-06-26 Eric Blake <ebb9@byu.net> - - Use bitrotate for hashing. - * gnulib: Update to latest. - * ltdl/m4/gnulib-cache.m4: Import bitrotate module. - * m4/hash.c (m4_hash_string_hash): Use it. - - Fix description of limits on diversions. - * doc/m4.texinfo (Diversions): Fix grammar. Be less pessimistic - about limitations. - * THANKS: Update. - Reported by Elias Benali. - -2009-06-17 Eric Blake <ebb9@byu.net> - - Stress test for hash resizing. - * tests/builtins.at (define): Enhance test. - -2009-06-15 Eric Blake <ebb9@byu.net> - - Document why bootstrap might touch state of tree. - * bootstrap: Fix typos. Add comment. - * HACKING: Add notes about this scenario. - * gnulib: Update to latest version. - * .gitignore: Track gnulib changes. - - Drop .cvsignore and redundant .gitignore files. - * .cvsignore: Delete. We are moving further away from CVS. - * build-aux/.cvsignore: Likewise. - * doc/.cvsignore: Likewise. - * examples/.cvsignore: Likewise. - * ltdl/.cvsignore: Likewise. - * m4/.cvsignore: Likewise. - * modules/.cvsignore: Likewise. - * po/.cvsignore: Likewise. - * src/.cvsignore: Likewise. - * tests/.cvsignore: Likewise. - * .gitignore: Consolidate from other files. - * build-aux/.gitignore: Delete, now that it is consolidated. - * doc/.gitignore: Likewise. - * examples/.gitignore: Likewise. - * ltdl/.gitignore: Likewise. - * m4/.gitignore: Likewise. - * modules/.gitignore: Likewise. - * po/.gitignore: Likewise. - * src/.gitignore: Likewise. - * tests/.gitignore: Likewise. - * bootstrap: Simplify accordingly. Sync gnulib tree prior to - libtoolize, to avoid libtool overwriting config.guess. - - Avoid compiler warning. - * m4/macro.c (process_macro): Use correct type for isdigit. - -2009-06-13 Eric Blake <ebb9@byu.net> - - Avoid snprintf link failures. - * ltdl/m4/gnulib-cache.m4: Import snprintf-posix module. - Reported by Ralf Wildenhues. - -2009-06-12 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> - - Avoid pointer arithmetic on `void *'. - * modules/m4.c (dump_symbol_CB): Cast obstack_base return value - to `char *' before using it. - -2009-05-04 Eric Blake <ebb9@byu.net> - - Silence verbose testsuite runs. - * tests/testsuite.at (m4_version_prereq): Bump to recent - autoconf.git version where stdout-nolog was added. - * tests/builtins.at (esyscmd, syscmd): Use new stdout-nolog. - * tests/freeze.at (AT_TEST_FREEZE): Likewise. - * tests/others.at (stderr closed): Likewise. - * HACKING: Mention new requirement. - * bootstrap: Likewise. - Reported by Ralf Wildenhues. - -2009-04-21 Eric Blake <ebb9@byu.net> - - Be more explicit about default quoting characters. - * doc/m4.texinfo (Quoted strings): Call out characters by name. - * THANKS: Update. - Suggested by Mehul Sanghvi. - -2009-04-16 Eric Blake <ebb9@byu.net> - - Use gnulib rename module. - * ltdl/m4/gnulib-cache.m4: Import rename module. At the moment, - we don't tickle either of the platform bugs that it fixes, but it - is better to be safe than sorry. - - Require newer automake features. - * configure.ac (AM_INIT_AUTOMAKE): Add dist-xz, color-tests, - parallel-tests, and silent-rules. Drop dist-lzma. - * HACKING: Update minimum requirements. - * gnulib: Update to latest version. - - Mention release of 1.4.13. - * NEWS: Update to match release on branch-1.4. - * doc/m4.texinfo (History): Update release history. - (copying): Finish conversion to GFDL 1.3, started 2008-11-04. - -2009-03-23 Eric Blake <ebb9@byu.net> - - Exploit git submodule by adding appropriate symlinks. - * bootstrap: No longer copy files from gnulib. - * COPYING: Change to symlink pointing into gnulib. - * INSTALL: Likewise. - * build-aux/compile: Likewise. - * build-aux/config.guess: Likewise. - * build-aux/config.sub: Likewise. - * build-aux/depcomp: Likewise. - * build-aux/install-sh: Likewise. - * build-aux/mdate-sh: Likewise. - * build-aux/missing: Likewise. - * build-aux/texinfo.tex: Likewise. - * .cvsignore: Reflect these changes. - * .gitignore: Likewise. - * build-aux/.cvsignore: New file. - * build-aux/.gitignore: Likewise. - - Make gnulib a git submodule. - * .gitmodules: New file. - * gnulib: Record which version of gnulib has been tested. - * bootstrap: Aid in submodule usage. - * cfg.mk (gnulib_dir): Alter default location of gnulib. - * HACKING: Mention how to use submodule. - -2009-03-21 Eric Blake <ebb9@byu.net> - - Use memcmp2 to simplify lexicographic comparisons. - * ltdl/m4/gnulib-cache.m4: Import memcmp2. - * modules/m4.c (dumpdef_cmp_CB): Use it. - -2009-03-19 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> - - Fix m4.1 build race, exposed by parallelism through GNUmakefile. - * Makefile.am (SUBDIRS): Add doc. - (Documentation rules): Move ... - * doc/Makefile.am: ... to this new file. - * configure.ac (AC_CONFIG_FILES): Generate doc/Makefile. - -2009-03-13 Eric Blake <ebb9@byu.net> - - Try to tolerate spaces in directory names in testsuite. - * tests/null.m4: Provide shell quoting, in case __program__ - contains spaces. - - Fix awk script portability. - * checks/get-them: In gsub, properly escape {. - Reported by Gary V. Vaughan. - - Make bootstrap easier on Solaris. - * bootstrap: Add GNULIB_SRCDIR. Useful when a wrapper script - gnulib-tool exists earlier on the path to work around /bin/sh - failure in parsing $GNULIB_SRCDIR/gnulib-tool. - -2009-03-13 Eric Blake <ebb9@byu.net> - - Allow configuration choice in syscmd shell. - * ltdl/m4/m4-syscmd.m4: New file. - * configure.ac (M4_SYSCMD): Use it to provide - --with-syscmd-shell. - (AC_CHECK_HEADERS_ONCE): No longer need to worry about - <sys/wait.h>. - * modules/m4.c (syscmd): Use it to avoid hard-coding the shell - location. - * modules/gnu.c (esyscmd): Likewise. - * doc/m4.texinfo (Syscmd, Esyscmd): Document this. - * README: Document new configure option. - * NEWS: Likewise. - - Use gnulib pipe module instead of popen(3). - * ltdl/m4/gnulib-cache.m4: Import pipe and wait-process modules. - * modules/gnu.c (M4_SYSVAL_EXITBITS, M4_SYSVAL_TERMSIGBITS): - Delete. - (esyscmd): Rewrite with pipe module. - Resolves a failure on AIX, reported by Gary V. Vaughan. - - Use gnulib execute module instead of system(3). - * ltdl/m4/gnulib-cache.m4: Import execute module. - * m4/utility.c (m4_info_name): New function. - * m4/m4module.h (m4_info_name): New prototype. - * modules/m4.c (syscmd): Rewrite with execute module. - (M4_SYSVAL_EXITBITS, M4_SYSVAL_TERMSIGBITS, m4_sysval): Move - computation... - * modules/gnu.c (M4_SYSVAL_EXITBITS, M4_SYSVAL_TERMSIGBITS) - (esyscmd): ...here. - Resolves a failure on AIX, reported by Gary V. Vaughan. - -2009-03-05 Eric Blake <ebb9@byu.net> - - Improve web-manual maintainer rule. - * maint.mk (web-manual): Factor package-specific detail... - * cfg.mk (manual_title): ...to new variable. - -2009-02-23 Eric Blake <ebb9@byu.net> - - Speed up translit when from argument is short. - * modules/m4.c (translit): Use memchr2 when possible. - * tests/builtins.at (translit): Add tests. - * NEWS: Document this. - -2009-02-18 Eric Blake <ebb9@byu.net> - - Prefer buffer over byte operations. - * modules/format.c (format): Use memchr for speed. - * modules/gnu.c (substitute): Likewise. - * m4/macro.c (locate_dollar): Inline into only caller... - (process_macro): ...and rearrange for readability. - * m4/input.c (consume_buffer): Allow C++ compilation. - * doc/m4.texinfo (Changesyntax): Enhance test. - - Speed up esyscmd with buffer reads. - * modules/gnu.c (esyscmd): Read blocks directly into obstack, - rather than repeatedly reading bytes. Detect read errors. - - Avoid risk of stack overflow. - * m4/output.c (insert_file): Avoid stack allocation of large - buffer. - - Synchronize THANKS with branch. - * THANKS: Import more names. - - Improve handling of $ in syntax table. - * m4/m4module.h (m4_is_syntax_single_dollar): New function. - (M4_SYNTAX_DOLLAR, M4_SYNTAX_LBRACE, M4_SYNTAX_RBRACE): Change to - be context rather than basic syntax categories. - (M4_SYNTAX_MASKS): Adjust macro. - * m4/m4private.h (struct m4_syntax_table): Add dollar and - is_single_dollar members. - (m4_is_syntax_single_dollar): Add fast alternative. - * m4/syntax.c (m4_syntax_create, reset_syntax_set): Adjust to - account for change to context categories. - (m4_set_syntax): Manage is_single_dollar. - (m4_is_syntax_single_dollar): New function. - * m4/macro.c (locate_dollar): New helper function. - (process_macro): Use it to speed up macro expansion. - * m4/input.c (m4__next_token): Adjust client. - * doc/m4.texinfo (Changesyntax): Document this. - -2009-02-17 Eric Blake <ebb9@byu.net> - - Sync changecom documentation with branch. - * doc/m4.texinfo (Changecom): Tweak wording. - * NEWS: Import changes from the branch. - - Stage 29b: Process quotes and comments by buffer, not bytes. - Search for quote and comment delimiters by buffer when possible. - Memory impact: none. - Speed impact: noticeable improvement, from fewer function calls. - * ltdl/m4/gnulib-cache.m4: Import memchr2 module. - * m4/input.c (m4__next_token): Add buffer reads to quote and - comment parsing. - * NEWS: Document this. - -2009-02-16 Eric Blake <ebb9@byu.net> - - Stage 29a: Process dnl and macro names by buffer, not bytes. - Enhance input engine to provide lookahead buffer, rather than - forcing clients to call next_char for every byte. Utilize this - for the simplest clients. - Memory impact: none. - Speed impact: noticeable improvement, from fewer function calls. - * ltdl/m4/gnulib-cache.m4: Import freadptr and freadseek modules. - * m4/input.c (struct input_funcs): Add virtual functions - buffer_func and consume_func. - (file_buffer, file_consume, string_buffer, string_consume) - (composite_buffer, composite_consume, eof_buffer): Implement - them. - (file_funcs, string_funcs, composite_funcs, eof_funcs): Update - vtables accordingly. - (buffer_retry): New sentinel. - (next_buffer, consume_buffer): New functions. - (m4_skip_line, match_input, consume_syntax): Use them for faster - parsing. - Suggested by Bruno Haible. - - Unify single and multi-character delimiter handling. - * m4/input.c (MATCH): Add a parameter. - (m4__next_token): Simplify logic and reduce redundancy. - (m4__next_token_is_open): Adjust caller. - * m4/syntax.c (m4_set_comment, m4_set_quotes): Handle delimiters - of differing lengths. - (m4_set_syntax): Recognize restoration of single delimiters. - - Revamp changesyntax vs. changequote interactions. - * m4/m4module.h (M4_SYNTAX_VALUE): Delete unused macro. - (M4_SYNTAX_SUSPECT): New macro. - * m4/m4private.h (struct m4_syntax_table): Add suspect field. - * m4/syntax.c (check_is_single_quotes, check_is_single_comments) - (check_is_macro_escaped): Delete, by inlining body... - (m4_set_syntax): ...into here. Improves handling between - changesyntax and changequote/changecom. - (add_syntax_set, subtract_syntax_set, set_syntax_set): Simplify, - and let suspect field track needed cleanup. - (m4_set_quotes, m4_set_comment): Adjust meaning of - is_single_quotes and is_single_comment flags to always be true if - only one delimiter exists, regardless of its length. Ensure that - the syntax categories M4_SYNTAX_LQUOTE and M4_SYNTAX_BCOMM are - only used on 1-byte delimiters. - (add_syntax_attribute, remove_syntax_attribute): Change signature - to allow the use of fewer casts. Adjust the suspect field when - necessary. - (m4_reset_syntax, set_quote_age): Adjust callers. - * m4/input.c (m4__next_token, m4__next_token_is_open): Simplify - callers. - * doc/m4.texinfo (Changesyntax): Update documentation and tests. - - Improve changesyntax documentation. - * doc/m4.texinfo (Changesyntax): Merge two tables into one - multitable. - - Fix regression in multicharacter quotes, from 2008-01-26. - * m4/input.c (m4__next_token): Fix typo. - * tests/builtins.at (changequote): Enhance test. - -2009-02-13 Eric Blake <ebb9@byu.net> - - Speed up parsing when detecting input file change. - * m4/input.c (next_char): Clear input_change flag. Bug introduced - 2006-10-25. - -2009-02-12 Eric Blake <ebb9@byu.net> - - Avoid quadratic code when walking definition stack. - * examples/stack_sep.m4: Use linear, not quadratic - implementation. - * doc/m4.texinfo (Improved copy): Fix documentation, based on - recent autoconf bug fix. - * tests/others.at (recursion): Enhance test. - -2009-02-11 Eric Blake <ebb9@byu.net> - - Stage 28c: Warn on embedded NUL in remaining cases. - Ensure all remaining warnings can handle embedded NUL. - Memory impact: none. - Speed impact: none noticed. - * m4/m4module.h (m4_debug_decode, m4_parse_truth_arg): Add - parameter. - * m4/macro.c (m4_macro_call): Improve diagnostic. - * modules/m4.c (defn): Likewise. - * m4/debug.c (m4_debug_decode): Handle embedded NUL. - * m4/utility.c (m4_parse_truth_arg): Likewise. - * modules/format.c (arg_int, arg_long, arg_double): Likewise. - (arg_string): New function. - (ARG_INT, ARG_LONG, ARG_STR, ARG_DOUBLE): Update callers. - * src/main.c (main): Likewise. - * src/freeze.c (reload_frozen_state): Likewise. - * modules/gnu.c (debugmode, syncoutput): Likewise. - * tests/options.at (--regexp-syntax): Adjust test. - * tests/freeze.at (reloading nul): Likewise. - * tests/null.m4: Likewise. - * tests/null.out: Likewise. - * tests/null.err: Likewise. - - Stage 28b: Warn on embedded NUL in file arguments. - Quote warning messages related to file and other NUL-terminated - system commands. - Memory impact: none. - Speed impact: none noticed. - * m4/path.c (m4_path_search): Quote file names in message. - * modules/m4.c (syscmd, include, m4_make_temp): Handle embedded - NUL. - * modules/gnu.c (debugfile, esyscmd): Likewise. - * tests/others.at (nul character): Adjust test. - * tests/builtins.at (mkdtemp, mkstemp): Likewise. - * tests/null.m4: Likewise. - * tests/null.out: Likewise. - * tests/null.err: Likewise. - - Stage 28a: Warn on embedded NUL in numeric arguments. - Quote warning messages related to numeric parsing in order to - handle embedded NUL. - Memory impact: none. - Speed impact: none noticed. - * m4/m4module.h (m4_numeric_arg): Adjust prototype. - * m4/utility.c (m4_numeric_arg): Add parameter. - * modules/gnu.c (debuglen): Adjust callers. - * modules/m4.c (incr, decr, divert, undivert, m4exit, substr) - (index): Likewise. - * modules/evalparse.c (m4_evaluate): Likewise. - * modules/stdlib.c (setenv, getpwuid, srand): Likewise. - * modules/time.c (ctime, gmtime, localtime, mktime, strftime): - Likewise. - * doc/m4.texinfo (Changesyntax): Fix typo. - * tests/others.at (nul character): Adjust test. - * tests/null.m4: Likewise. - * tests/null.out: Likewise. - * tests/null.err: Likewise. - -2009-02-11 Eric Blake <ebb9@byu.net> - - Avoid regression in popdef(undef). - * doc/m4.texinfo (Trace): Enhance test, to cover regression - recently fixed on the branch. - -2009-02-09 Eric Blake <ebb9@byu.net> - - Enhance index to support starting offset. - * modules/m4.c (index): Add optional third argument. - * NEWS: Document this. - * doc/m4.texinfo (Index macro): Likewise. - (Macro Arguments): Adjust tests. - -2009-01-24 Eric Blake <ebb9@byu.net> - - Add URLs to --help output. - * src/main.c (usage): Use enhanced version-etc features. - -2009-01-07 Eric Blake <ebb9@byu.net> - - Enhance substr to support replacement text. - * doc/m4.texinfo (Substr): Document new semantics. - * modules/m4.c (substr): Support optional fourth argument. - * NEWS: Document this. - - Enhance substr to support negative values. - * doc/m4.texinfo (Substr): Document new semantics, and how to - simulate old. - * modules/m4.c (substr): Support negative values. - * NEWS: Document this. - -2009-01-05 Eric Blake <ebb9@byu.net> - - Maintainer cleanups. - * HACKING: Remove mention of xdelta. - * Makefile.am (EXTRA_DIST, MAINTAINERCLEANFILES): Let gnulib take - care of distributing gendocs.sh. - * maint.mk (web-manual): Use new feature of gendocs. - * ltdl/m4/gnulib-cache.m4: Regenerate. - -2008-12-24 Eric Blake <ebb9@byu.net> - - Relax eval as allowed by POSIX 2008. - * modules/evalparse.c (m4_evaluate): Warn, not error, on invalid - operator. Quote expression in warning. - * modules/mpeval.c (includes): Add quotearg.h. - * doc/m4.texinfo (Eval, Improved forloop): Update tests. - * NEWS: Update to reflect 1.6 support for `?:'. - -2008-12-23 Eric Blake <ebb9@byu.net> - - Add debugmode(o) to control dumpdef output location. - * m4/m4module.h (M4_DEBUG_TRACE_OUTPUT_DUMPDEF): New enumerator. - (M4_DEBUG_TRACE_VERBOSE): Update. - * m4/debug.c (m4_debug_decode): Support new debug option. - * src/freeze.c (produce_debugmode_state): Likewise. - * modules/m4.c (dumpdef): When set, force dumpdef to stderr rather - than the debug file. - * src/main.c (usage): Document it. - * doc/m4.texinfo (Debugmode, Dumpdef, Debugging options) - (Debugfile): Likewise. - * NEWS: Likewise. - Based on an autoconf bug report by Paolo Bonzini. - - Make --debugfile argument optional. - * src/main.c (long_options): Make the argument optional, to allow - setting debug file back to stderr. - (main): Make --debugfile order-dependent. - (usage): Document this. - * doc/m4.texinfo (Debugging options): Likewise. - * NEWS: Likewise. - * tests/options.at (--debugfile): Enhance test. - (--safer): Adjust to new semantics. - -2008-12-22 Eric Blake <ebb9@byu.net> - - Use @var correctly. - * doc/m4.texinfo (Operation modes, Preprocessor features) - (Limits control, Frozen state, Debugging options) - (Dynamic loading features): Use lower case names in @var. - (Improved copy): Use @code, not @var, as appropriate. - -2008-12-18 Eric Blake <ebb9@byu.net> - - Deal with M4 1.4.x limitation on builtin tokens. - * doc/m4.texinfo (Composition): Mention limitation on curry. - (Improved copy): New node. - (Stacks): Fix typo. - * examples/stack.m4: Likewise. - * examples/stack_sep.m4: New file. - * Makefile.am (dist_pkgdata_DATA): Distribute it. - -2008-12-15 Eric Blake <ebb9@byu.net> - - Double size of temp file cache. - * m4/output.c (tmp_file, tmp_file_owner): Split... - (tmp_file1, tmp_file2, tmp_file1_owner, tmp_file2_owner): ...into - two variables. - (tmp_file2_recent): New variable. - (m4_tmpopen, m4_tmpclose, m4_tmpremove, m4_tmprename) - (m4_output_exit): Adjust callers. - - Use fewer seeks on cached files. - * m4/output.c (m4_tmpfile): Use write, not append mode. - (m4_tmpopen): Add parameter to decide when to skip seeks. - (m4_tmprename, m4_make_diversion, insert_diversion_helper) - (m4_freeze_diversions): Adjust callers. - - Cache most recently spilled diversion. - * m4/output.c (tmp_file, tmp_file_owner): New variables, for - 1-deep cache of spilled diversions. - (m4_tmpfile): Open in append mode, since we might revisit - diversion without closing it now. - (m4_tmpopen): Check cache first. - (m4_tmpclose): Update cache, rather than closing. Add parameter. - (m4_tmpremove): Close cache before removing. - (m4_tmprename): Deal with open files when renaming. - (m4_output_exit): Close cache before exiting. - (make_room_for, m4_make_diversion, insert_diversion_helper): - Adjust callers. - * ltdl/m4/m4-rename.m4 (M4_RENAME): New file. - * configure.ac (M4_RENAME): Invoke it. - - Correctly track size of in-memory diversions. - * m4/output.c (insert_diversion_helper): Correctly track total - in-memory diversion size after undivert. - - Avoid quadratic behavior for some cases of divert/undivert. - * m4/output.c (struct m4_diversion): Improve comments. - (m4_tmpname, m4_make_diversion): Strengthen preconditions. - (m4_tmprename): New function. - (m4_output_init, m4_output_exit): Move after internal functions. - (make_room_for): Don't bother copying uninitialized bytes. - (insert_diversion_helper): Transfer metadata, rather than copying - contents, when undiverting into a previously unused diversion. - * tests/builtins.at (divert): Add a check to the test. - * doc/m4.texinfo (Undivert): Enhance test. - * NEWS: Document the speedup. - -2008-12-02 Eric Blake <ebb9@byu.net> - - Stage 27: Allow embedded NUL in text processing macros. - Pass NUL through regular expressions, format, and translit, and - diagnose it in eval and changeresyntax. Improve warning - capabilities of format. - Memory impact: none. - Speed impact: none noticed. - * modules/m4.c (m4_expand_ranges): Don't append extra bytes. - (translit): Manage NUL bytes. - * modules/format.c (format): Likewise. - * modules/gnu.c (substitute, regexp_substitute): Likewise. - (m4_resyntax_encode_safe): Add parameter. - (regexp, patsubst, renamesyms): Update callers. - (regexp_compile): Adjust error message. - * modules/evalparse.c (m4_evaluate): Use consistent message. - (end_text): New variable. - (eval_init_lex): Add parameter. - (eval_lex): Detect embedded NUL. - * src/freeze.c (reload_frozen_state): Likewise. - * doc/m4.texinfo (Format): Update to cover new behavior. - (Eval): Mention that result is unquoted. - * tests/freeze.at (reloading nul): Enhance test. - * tests/null.m4: Likewise. - * tests/null.err: Update expected output. - * tests/null.out: Likewise. - * tests/options.at (--regexp-syntax): Likewise. - -2008-11-28 Eric Blake <ebb9@byu.net> - - Resync NEWS with branches. - * NEWS: Mention 1.4.12, update state of 1.6. - -2008-11-26 Eric Blake <ebb9@byu.net> - - 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. - -2008-11-26 Eric Blake <ebb9@byu.net> - - Document optimized forloop. - * doc/m4.texinfo (Improved forloop): Mention alternate style that - avoids define overhead. - * examples/forloop3.m4: New file. - * Makefile.am (dist_pkgdata_DATA): Distribute it. - - Document copy composite using stack_foreach and curry. - * doc/m4.texinfo (Stacks): New node, to document pushdef stack - manipulation. - (Ifelse): Move define_blind... - (Composition): ...to this new node. Document currying, then use - it to implement copy and rename. - * examples/curry.m4: New file. - * examples/stack.m4: Likewise. - * Makefile.am (dist_pkgdata_DATA): Distribute them. - -2008-11-04 Eric Blake <ebb9@byu.net> - - Upgrade to FDL 1.3. - * ltdl/m4/gnulib-cache.m4: Replace fdl module with fdl-1.3. - * Makefile.am (doc_m4_TEXINFOS, MAINTAINERCLEANFILES): Reflect - file change. - * doc/m4.texinfo (GNU Free Documentation License): Likewise. - -2008-10-22 Eric Blake <ebb9@byu.net> - - Give nicer error if user modifies testsuite but lacks autoconf. - * Makefile.am (AUTOM4TE): Use missing in the definition. - -2008-10-09 Eric Blake <ebb9@byu.net> - - Allow user to choose which sed to use in testsuite. - * tests/atlocal.in (SED): Inherit from configure results. - * tests/builtins.at (__m4_@&t@version__, divert, esyscmd) - (mkstemp, syscmd): Use $SED. - * tests/generate.awk (new_test): Likewise. - * tests/options.at (deprecated options, unknown option) - (--debugmode, --help and --version): Likewise. - * tests/testsuite.at (AT_CHECK_M4): Likewise. - * tests/others.at (directory, stderr closed, stdin seekable) - (stdout closed): Likewise. - (nul character): Likewise. Also, skip test if sed can't handle - NUL bytes. - - Clean up testsuite invocation. - * tests/atlocal.in: Fix copyright notice. - * Makefile.am (TESTS_ENVIRONMENT): Delete; it wasn't being used. - (check-local, installcheck-local): Adjust clients. Add missing - dependency. - -2008-09-25 Eric Blake <ebb9@byu.net> - - Tweak error message on command line failure. - * m4/m4private.h (includes): Use "quotearg.h". - * src/main.c (process_file, main): Use nicer quotes for file name - in error messages. - * m4/input.c (file_clean, m4_push_file): Likewise. - * m4/module.c (m4__module_open): Likewise. - * src/freeze.c (produce_frozen_state, reload_frozen_state): - Likewise. - * modules/gnu.c (debugfile): Likewise. - * modules/m4.c (undivert, include): Likewise. - * tests/others.at (directory, stdin closed): Update tests. - * tests/options.at (file names, --debugmode): Likewise. - * doc/m4.texinfo (Debugmode): Likewise. - - Unify error handling for reading directories. - * m4/path.c (m4_path_search): Factor open attempts... - (m4_fopen): ...into new function, to reject directories. - * tests/others.at (directory): Enhance test. - * doc/m4.texinfo (Include): Document that directories cannot be - input files. - - Avoid bugs on platforms that mishandle trailing /. - * ltdl/m4/gnulib-cache.m4: Import fopen module. - * tests/others.at (directory): New test. - -2008-09-16 Eric Blake <ebb9@byu.net> - - Fix bootstrap for Solaris /bin/sh. - * bootstrap: Avoid shell quoting pitfall. - -2008-09-01 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> - - Typos in source code comments. - * modules/m4.c: Fix typos in comments. - * m4/input.c: Likewise. - * src/main.c: Likewise. - -2008-08-29 Eric Blake <ebb9@byu.net> - - Fix manual date information. - * doc/m4.texinfo: UPDATED refers to the day the manual was built, - not the release date of M4. - Based on a bison patch by Akim Demaille. - -2008-08-27 Eric Blake <ebb9@byu.net> - - Tweak -d examples. - * doc/m4.texinfo (Invoking m4): Fix example, since order of -d - matters. - (Dumpdef): Fix typo. - -2008-08-23 Eric Blake <ebb9@byu.net> - - Allow debugmode control over whether defn(undef) warns. - * ltdl/m4/gnulib-cache.m4: Import verify module. - * m4/m4module.h (M4_DEBUG_TRACE_DEREF, M4_DEBUG_TRACE_INITIAL): - New values. - (M4_DEBUG_TRACE_VERBOSE, M4_DEBUG_TRACE_DEFAULT): Adjust. - * m4/m4.c (m4_create): Start with debugmode = d. - * src/main.c (usage): Mention this. - (main): Let -E impact debug mode. - * m4/utility.c (m4_symbol_value_lookup): Squelch undefined warning - if flag is clear. - * modules/gnu.c (builtin, inder): Likewise. - * m4/debug.c (m4_debug_decode): Parse new mode. - * src/freeze.c (produce_debugmode_state): Accomodate new mode. - * doc/m4.texinfo (Debugging options): Mention change in the - default behavior. - (Debugmode): Mention new flag d. - (Operation modes): Mention interaction with -E. - (Undefine, Defn, Pushdef, Indir, Builtin, Dumpdef): Document and - test its effect. - * tests/options.at (--debugmode): Update tests. - * tests/freeze.at (reloading debugmode): Likewise. - * NEWS: Document this. - Reported by Ralf Wildenhues; without this patch, M4 1.6+ would be - incompatible with Autoconf 2.62. - -2008-08-22 Eric Blake <ebb9@byu.net> - - Improve --debugmode behavior. - * m4/m4module.h (m4_debug_decode): Simplify interface. - * m4/debug.c (m4_debug_decode): Remove parameter, and handle - setting the new value. - * modules/gnu.c (debugmode): Adjust caller. - * src/freeze.c (reload_frozen_state): Likewise. - * src/main.c (main): Likewise. - (usage): Fix default for --debug. - * doc/m4.texinfo (Debugging options): Add an example. - -2008-08-21 Eric Blake <ebb9@byu.net> - - Avoid regression in defn(undef). - * doc/m4.texinfo (Trace): Enhance test, to cover regression - recently fixed on the branch. - -2008-08-18 Eric Blake <ebb9@byu.net> - - Remove deprecated -N option; fixes a regression from 2006-09-14. - * src/main.c (DIVERSIONS_OPTION): Delete. - (long_options, OPTSTRING, main): Remove -N/--diversions option. - * doc/m4.texinfo (Limits control): Remove it from the manual. - * NEWS: Mention that it is gone. - * tests/options.at (deprecated options): Update test. - - Improve 'git diff' of manual source. - * .gitattributes (*.texi*): Add diff attribute. - * bootstrap: Tell git how to use it. - Inspired by Jim Meyering's similar patch for coreutils. - -2008-08-07 Bruno Haible <bruno@clisp.org> (tiny change) - - Run m4 tests prior to gnulib unit tests. - * Makefile.am (SUBDIRS): Swap order of directories. - -2008-08-03 Eric Blake <ebb9@byu.net> - - Stage 26: Allow embedded NUL in macro definitions. - Clean up final few locations that did not track macro definitions - by length, to allow embedded NUL. Make m4_arg_len callers aware - of issue of flattening builtins when determining length. - Memory impact: none. - Speed impact: none noticed. - * m4/m4module.h (m4_arg_len): Add parameter. - (M4ARGLEN): Provide default for the parameter. - * m4/m4private.h (includes): Share xmemdup0.h among all libm4 - files. - * m4/macro.c (m4_arg_len): Fail if builtins are not flattened. - * m4/syntax.c (includes): Rely on m4private.h for xmemdup0. - * m4/symtab.c (includes): Likewise. - (m4_symbol_value_copy): Use xmemdup0. - * m4/module.c (install_macro_table): Likewise. - * src/freeze.c (reload_frozen_state): Likewise. - * tests/freeze.at (reloading nul): Enhance test. - * tests/null.m4: Likewise. - * tests/null.err: Update expected output. - * tests/null.out: Likewise. - - Fix regression in commenting unbalanced quotes, from 2008-02-16. - * m4/m4private.h (m4__token_type): Add M4_TOKEN_COMMENT. - * m4/input.c (m4__next_token, m4_print_token): Supply new token - type for comments. - * m4/macro.c (expand_token): Penalize comments, as they can - contain unbalanced quotes; latent bug since 2007-12-07, exposed by - passing $@ references built from comments. - (expand_argument): Adjust caller. - * tests/others.at (Comments): Enhance test to catch it. - * NEWS: Mention the fix. - -2008-07-30 Eric Blake <ebb9@byu.net> - - Fix regression in trace output, introduced 2008-05-08. - * m4/input.c (m4__push_symbol): When cloning chains, break pointer - back to original chain; latent bug from 2008-02-02 that did not - cause misbehavior until trace output read unfinished chain. - * tests/builtins.at (debug): Add test for this. - -2008-07-28 Eric Blake <ebb9@byu.net> - - Optimize iteration examples. - * examples/forloop2.m4: Avoid excess indir, by passing current - counter value as parameter. - * examples/foreachq3.m4: Avoid unneeded ifelse, by injecting an - ignored argument. - * doc/m4.texinfo (Improved forloop, Improved foreach): Update the - documentation to match. - -2008-07-26 Eric Blake <ebb9@byu.net> - - Give example for O(n) foreach on m4 1.4.x. - * examples/foreachq4.m4: New file. - * Makefile.am (dist_pkgdata_DATA): Distribute it. - * tests/others.at (recursion): Test it. - * doc/m4.texinfo (Improved foreach): Document linear foreach with - m4 1.4.5 and greater. - -2008-07-19 Eric Blake <ebb9@byu.net> - - Resynchronize docs from branch. - * doc/m4.texinfo (Undefine, Pushdef): Mention warning on undefined - name, particularly since the old documentation didn't match code. - (Standard Modules): Add caveat about using __m4_version__. - -2008-07-11 Eric Blake <ebb9@byu.net> - - Bump required automake to 1.10a; regression introduced 2008-01-22. - * configure.ac (AM_INIT_AUTOMAKE): Undo requirement downgrade to - 1.10.1, since we also rely on pkglibexecdir. - * HACKING: Fix minimum requirement. - * bootstrap: Likewise. - * THANKS: Update. - Reported by Joel E. Denny. - - Avoid bogus whitespace in @ovar, @dvar. - * doc/m4.texinfo (ovar, dvar): Add @c. - Based on patch by Ralf Wildenhues to Autoconf manual. - -2008-06-23 Eric Blake <ebb9@byu.net> - - Adjust to new gnulib-tool layout. - * ltdl/m4/gnulib-cache.m4: Reformat. - - Fix bootstrap comment. - * bootstrap: DOWNLOAD_PO was previously removed. - -2008-06-19 Eric Blake <ebb9@byu.net> - - Revert speed regression from 2008-06-16. - * m4/output.c (m4_shipout_int): Avoid obstack_printf in hot path. - * modules/m4.c (numb_obstack): Likewise. - * m4/input.c (MATCH): Use fewer conditionals, and factor - adjustment of S... - (match_input): ...here for smaller code size. - * m4/syntax.c (m4_reset_syntax, m4_set_quotes, m4_set_comment): - Supply trailing NUL to delimiters, to meet contract of faster - MATCH. - -2008-06-18 Eric Blake <ebb9@byu.net> - - Whitespace cleanup. - * m4/m4module.h: Use consistent spacing for pointer parameters. - * m4/m4private.h: Likewise. - - Stage 25b: Handle embedded NUL in changesyntax and friends. - Track quote and comment delimiters by length, to allow embedded - NUL. Improve changesyntax to support assigning syntax to NUL. - Memory impact: none. - Speed impact: none noticed. - * m4/m4module.h (m4_set_quotes, m4_set_comment, m4_set_syntax): - Add parameter. - (m4_reset_syntax): New prototype. - * m4/syntax.c (add_syntax_set, subtract_syntax_set) - (set_syntax_set, m4_set_quotes, m4_set_comment): Add parameter, to - handle embedded NUL. - (m4_set_syntax): Likewise. Also, split code to reset the table... - (m4_reset_syntax): ...into a new function. - (m4_syntax_create): Adjust callers. - * m4/input.c (match_input, MATCH): Add parameter. - (m4__next_token, m4__next_token_is_open): Adjust callers. - * modules/m4.h (m4_expand_ranges_func): Add parameter. - * modules/m4.c (dumpdef): Handle NUL in dumped quotes. - (changequote, changecom, translit, m4_expand_ranges): Track - delimiter length. - * modules/gnu.c (changesyntax): Handle embedded NUL. - * src/freeze.c (reload_frozen_state): Adjust callers. - * tests/freeze.at (reloading nul): Enhance test. - * tests/null.m4: Likewise. - * tests/null.out: Update expected output. - * tests/null.err: Likewise. - -2008-06-16 Eric Blake <ebb9@byu.net> - - Stage 25a: Use obstack_printf for easier output. - Convert macro tracing and other locations to use obstack_printf - rather than hand-rolled equivalents. Ensure that embedded NUL in - trace output does not truncate the trace string. - Memory impact: none. - Speed impact: noticeable penalty, from obstack_printf overhead. - * ltdl/m4/gnulib-cache.m4: Import obstack-printf-posix module. - * m4/macro.c (trace_format): Delete; use obstack_printf instead. - (trace_header, trace_pre, trace_post): All callers updated. - * m4/output.c (m4_shipout_int, m4_tmpname): Use obstack_printf. - (m4_divert_text): Speed up syncline output. - * modules/m4.c (dumpdef): Handle embedded NUL. - (numb_obstack): Speed up eval output. - (maketemp): Use obstack_printf. - * modules/format.c (format): Likewise. - - Add missing const qualifications. - * m4/resyntax.c (m4_resyntax_map): Declare array elements as - const. - * modules/gnu.c (m4_builtin_table, m4_macro_table): Likewise. - * modules/import.c (m4_builtin_table): Likewise. - * modules/load.c (m4_builtin_table, m4_macro_table): Likewise. - * modules/m4.c (m4_builtin_table): Likewise. - * modules/modtest.c (m4_builtin_table, m4_macro_table): Likewise. - * modules/mpeval.c (m4_builtin_table, m4_macro_table): Likewise. - * modules/perl.c (m4_builtin_table, m4_macro_table): Likewise. - * modules/shadow.c (m4_builtin_table, m4_macro_table): Likewise. - * modules/stdlib.c (m4_builtin_table): Likewise. - * modules/time.c (m4_builtin_table): Likewise. - * modules/traditional.c (m4_macro_table): Likewise. - -2008-06-10 Eric Blake <ebb9@byu.net> - - Avoid corrupted frozen file if NUL appears on block boundary. - * m4/output.c (insert_file): Separate consecutive quotearg blocks - with \<newline>, in case last byte of first block was NUL. - -2008-06-03 Eric Blake <ebb9@byu.net> - - Fix printf type mismatches. - * m4/m4module.h (m4_bad_argc): Alter parameter type. - * m4/m4private.h (struct m4_call_info): Alter call_id type. - * m4/macro.c (expand_macro, m4__adjust_refcount): Use correct - specifiers. - * m4/utility.c (m4_bad_argc): Likewise. - - Borrow bootstrap ideas from gnulib. - * bootstrap (options, DOWNLOAD_PO): Remove --download-po; the - advertized subset of languages didn't work. Use --skip-po - instead, for consistency with gnulib bootstrap. - (func_get_translations): Use rsync, not wget. - (func_update_po): Use a reference directory, to avoid changing - timestamps on unchanged .po files. - * TODO: Update accordingly. - - Fix fallout from previous patch. - * doc/m4.texinfo (Builtin): Adjust expected output. - -2008-06-02 Eric Blake <ebb9@byu.net> - - Stage 24c: Improve display of macro names with embedded NUL. - Quote instances of problematic characters in macro names when - presented to user. Track location via call_info rather than - munging context for every expansion. - Memory impact: none. - Speed impact: slight penalty, due to more bookkeeping. - * m4/m4module.h (m4_push_string_init): Add parameters. - * m4/m4private.h (struct m4_macro_args): Remove argv0 and - argv0_len, now redundant with info. - (m4__push_wrapup_init): Add parameter. - * m4/input.c (m4_push_string_init, m4__push_wrapup_init): Track - location from caller, rather than context. - (composite_peek, composite_read, match_input): Adjust callers. - * m4/utility.c (m4_symbol_value_lookup): Quote macro name. - (m4_verror_at_line): Allow NUL in macro name. - * m4/macro.c (trace_flush, m4_trace_prepare, trace_pre): Allow NUL - in trace. - (expand_macro): No longer munge context location. - (collect_arguments, m4_arg_text, m4_arg_empty, m4_arg_len) - (m4_make_argv_ref, m4_push_arg, m4_wrap_args): Adjust callers. - * modules/gnu.c (builtin, indir): Likewise. - * tests/null.m4: Enhance test. - * tests/null.err: Adjust expected output. - * tests/null.out: Likewise. - - Stage 24b: Allow embedded NUL in macro names. - Use length rather than NUL-termination when tracking macro names. - All APIs dealing with symbol table changed. - Memory impact: none. - Speed impact: slight penalty, due to more bookkeeping. - * m4/m4module.h (m4_symtab_apply_func, m4_symbol_lookup) - (m4_symbol_pushdef, m4_symbol_define, m4_symbol_popdef) - (m4_symbol_rename, m4_symbol_delete): Add length parameter. - (m4_string): New type. - * ltdl/m4/gnulib-cache.m4: Import xmemdup0 module. - * m4/hash.c (m4_hash_string_hash, m4_hash_string_cmp): Account for - length. - * m4/symtab.c (m4_symtab_delete, m4_symtab_apply, symtab_fetch) - (m4__symtab_remove_module_references, symbol_destroy_CB) - (m4_symbol_lookup, m4_symbol_pushdef, m4_symbol_define) - (m4_symbol_popdef, m4_symbol_rename, m4_set_symbol_name_traced) - (m4_symbol_delete): Likewise. - * modules/m4.h (struct m4_dump_symbol_data): Adjust type to allow - passing length. - * m4/macro.c (expand_token): Adjust all callers. - * m4/module.c (install_builtin_table, install_macro_table): - Likewise. - * m4/utility.c (m4_symbol_value_lookup): Likewise. - * modules/gnu.c (indir, renamesyms, m4symbols): Likewise. - * modules/m4.c (define, undefine, pushdef, popdef) - (dumpdef_cmp_CB, dump_symbol_CB, m4_dump_symbols, dumpdef) - (traceon, traceoff): Likewise. - * src/main.c (main): Likewise. - * src/freeze.c (dump_symbol_CB, reload_frozen_state): Likewise. - * tests/freeze.at (reloading nul): Augment test. - * tests/null.out: Adjust expected output. - - Stage 24a: Use full call context in error reporting. - Replace const char *macro_name with const m4_call_info *call, so - that the next patch can pass the length of macro_name with - embedded NUL. Simplifies handling of global state. - Memory impact: none. - Speed impact: none noticed. - * m4/m4module.h (m4_error, m4_warn): Change parameter type. - (m4_error_at_line, m4_warn_at_line): Delete. - (m4_debug_set_output, m4_skip_line, m4_bad_argc, m4_numeric_arg) - (m4_parse_truth_arg, m4_symbol_value_lookup): Adjust all clients. - * m4/m4private.h (m4__next_token): Likewise. - * m4/utility.c (m4_verror_at_line): Alter parameter, and use - caller's location if caller is provided. - (m4_error, m4_warn): Change parameter type. - (m4_error_at_line, m4_warn_at_line): Delete. - (m4_bad_argc, m4_numeric_arg, m4_parse_truth_arg) - (m4_symbol_value_lookup): Adjust all callers. - * m4/debug.c (set_debug_file, m4_debug_set_output): Likewise. - * m4/input.c (m4_skip_line, m4__next_token): Likewise. - * m4/macro.c (expand_argument, collect_arguments, m4_macro_call) - (process_macro): Likewise. - * modules/m4.h (m4_make_temp_func): Likewise. - * modules/evalparse.c (m4_evaluate): Likewise. - * modules/format.c (arg_int, arg_long, arg_double, format): - Likewise. - * modules/gnu.c (builtin, changeresyntax, changesyntax, debugfile) - (debuglen, debugmode, esyscmd, indir, mkdtemp, patsubst, regexp) - (renamesyms, syncoutput, regexp_compile, substitute) - (regexp_substitute, m4_resyntax_encode_safe): Likewise. - * modules/m4.c (define, undefine, pushdef, popdef, ifdef, ifelse) - (m4_dump_symbols, defn, syscmd, incr, decr, divert, undivert, dnl) - (include, maketemp, mkstemp, m4exit, traceon, traceoff, substr): - Likewise. - * modules/stdlib.c (setenv, getpwuid, srand): Likewise. - * modules/time.c (ctime, gmtime, localtime, mktime, strftime): - Likewise. - * tests/options.at (--syncoutput): Add test for invalid - command-line argument. Split xfailed portion... - (--syncoutput and diversions): ...into new test. - (unknown option): New test. - * tests/freeze.at (reloading unknown builtin): Update expected - output. - - Adjust to recent gnulib change. - * configure.ac (AB_INIT): Delete, now that gnulib does this. - -2008-05-28 Eric Blake <ebb9@byu.net> - - Improve frozen debugmode behavior. - * m4/debug.c (m4_debug_decode): Make empty debugmode additive. - * src/main.c (main): Interleave -d with files. - * tests/options.at (--debugmode): Update test. - * tests/freeze.at (reloading debugmode): New test. - * doc/m4.texinfo (Debugging options, Debugmode): Document the - change. - * NEWS: Likewise. - -2008-05-27 Eric Blake <ebb9@byu.net> - - Fix some testsuite failures on Solaris 8. - * tests/builtins.at (esyscmd, syscmd): Skip tests if system(2) is - broken. - * tests/others.at (stderr closed): Likewise. Also support Solaris - wording for EBADF. - (stdin closed): Skip test if closed stdin gets reopened. - (stdout closed): Support Solaris wording for EBADF. - * tests/testsuite.at (AT_CHECK_M4): Likewise. - - Fix configure message nesting, broken since 2001-09-20. - * ltdl/m4/gmp.m4 (M4_LIB_GMP): Don't cache result; the test is - not expensive, and AC_MSG_WARN doesn't work in AC_CACHE_CHECK. - - Support 'make dist' with BSD make. - * Makefile.am (TESTSUITE_AT, MAINTAINERCLEANFILES): Qualify uses - of the generated file tests/generated.at. - (EXTRA_DIST, $(TESTSUITE)): Likewise for tests/package.m4. - * tests/others.at (stdout closed): Accomodate OpenBSD /bin/sh. - -2008-05-24 Eric Blake <ebb9@byu.net> - - Test NUL in frozen files. - * tests/testsuite.at (AT_CHECK_M4): Add parameter. - * tests/freeze.at (reloading nul): New test. - (AT_TEST_FREEZE): Inhibit -d when reloading frozen file. - (reloading unknown builtin): Likewise. - -2008-05-23 Eric Blake <ebb9@byu.net> - - Improve handling of frozen file errors. - * src/freeze.c (produce_frozen_state): Detect write failures. - (reload_frozen_state): Use close_stream. - * tests/freeze.at (freezing failure): New test. - * THANKS: Update. - Reported by Jean-Charles Longuet. - -2008-05-19 Eric Blake <ebb9@byu.net> - - In frozen file, split consecutive strings with newline. - * src/freeze.c (dump_symbol_CB): Add newline to 'T', 'F'. - (produce_frozen_state): Likewise for 'Q', 'C'. - (reload_frozen_state): Parse the new layout. - [GET_DIRECTIVE]: Fix format 1 regression from 2008-05-13. - * tests/freeze.at (loading format 2): Rewrite to new format. - (reloading unknown builtin): Likewise. - (loading format 1): Make sure backslash-newline is not - interpreted. - * doc/m4.texinfo (Frozen file format 2): Document the format. - * NEWS: Document this change. - - Fix xgettext options. - * po/Makevars (XGETTEXT_OPTIONS): The " must be passed to - xgettext. - - Fix spelling of René Seindal's name in --version output. - * ltdl/m4/gnulib-cache.m4: Import propername module. - * src/main.c (AUTHORS): Rewrite in terms of proper_name. - * po/Makevars (XGETTEXT_OPTIONS): Detect new functions. - * HACKING: Mention new prerequisite of gperf. - -2008-05-18 Eric Blake <ebb9@byu.net> - - Allow freezing the trace status of macros. - * src/freeze.c (produce_symbol_dump): Let undefined traced macros - through. - (dump_symbol_CB): Also freeze trace state. - * tests/freeze.at (reloading traced macros): New test. - * doc/m4.texinfo (Using frozen files): Update documentation to - mention new state. - (Frozen file format 1): Improve synchronization with branch. - (Frozen file format 2): Reorder directives, and add `d', `t'. - * NEWS: Document this change. - -2008-05-15 Eric Blake <ebb9@byu.net> - - Fix frozen file regression in pushdef stacks from 2001-09-01. - * src/freeze.c (dump_symbol_CB): Push all values on the stack, not - just the current definition. - (reverse_symbol_value_stack): New helper method. - * tests/freeze.at (AT_TEST_FREEZE): New helper macro. - (reloading pushdef stack): New test. - (reloading unknown builtin): Enhance test. - -2008-05-13 Eric Blake <ebb9@byu.net> - - Fix frozen file regression in diversions from 2007-01-21. - * m4/output.c (insert_diversion_helper): Add parameter. - (m4_insert_file): Move contents... - (insert_file): ...to this new helper, with added parameter. - (m4_insert_diversion, m4_undivert_all, m4_freeze_diversions): - Update callers. - * src/freeze.c (produce_mem_dump): Simplify. - * tests/freeze.at (large diversion): Test for this. - - Improve error message when frozen file is invalid. - * src/freeze.c (decode_char): Add parameter. Allow \<newline> - line continuations. - (reload_frozen_state): Track current line. - * tests/freeze.at (loading format 1, loading format 2): Update to - test this. - -2008-05-10 Eric Blake <ebb9@byu.net> - - Detect integer overflow when loading frozen file. - * src/freeze.c (reload_frozen_state) [GET_NUMBER]: Rewrite to fail - immediately on overflow. - * tests/freeze.at (loading format 2): Test this. - Reported by Jim Meyering. - -2008-05-08 Eric Blake <ebb9@byu.net> - - 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. - * m4/m4module.h (m4_input_block): Remove. - (m4_call_info): New opaque type. - (m4_trace_prepare, m4_arg_info): New prototypes. - (m4_macro_call, m4_push_string_finish, m4_input_print): Change - prototypes. - * m4/m4private.h (struct m4_macro_args): Add info field. - (struct m4_call_info): New structure. - (m4_arg_info): New accessor. - * m4/input.c (m4_input_block): Make typedef local. - (m4_push_string_init): Initialize length. - (m4_push_string_finish, m4_input_print): Change signature, so that - printing can be done before finalization. - (struct input_funcs): Add parameter to print_func. - (file_print, string_print, composite_print): Adjust accordingly. - * m4/macro.c (trace_header, trace_flush, trace_pre, trace_post): - Change signatures for stacked trace messages, and for using call - context. - (trace_prepre): Export and rename... - (m4_trace_prepare): ...to this, for use by indir. Alter signature - to use call context. - (collect_arguments): Alter signature, to manage new field. - (expand_macro): Change call context management. Move tracing... - (m4_macro_call): ...here. Remove redundant parameter. - (m4_arg_argc): New function. - (m4_make_argv_ref): Replace unused skip parameter with new trace - parameter; manage new field. - * modules/gnu.c (builtin, indir): Adjust callers. - * src/main.c (usage): Update debugmode flag summary. - * tests/null.m4: Enhance test. - * tests/null.err: Update expected output. - * tests/macros.at (Tracing Hanoi Towers): Likewise. - * doc/m4.texinfo (Trace): Mention more about trace formatting. - (Debugmode): Enhance description of 'c' and 'x'. Enhance test to - cover line numbering details in traces. - (Debuglen): Enhance test to cover indir tracing. - * NEWS: Mention these changes. - Reported by Akim Demaille in the autoconf TODO file in 2000. - -2008-05-07 Eric Blake <ebb9@byu.net> - - Test for traceon regression just fixed in branch-1.6. - * doc/m4.texinfo (Trace): Enhance test. - * NEWS: Port news item from branch. - -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. - * m4/m4module.h (m4_is_arg_composite): New prototype. - (m4_symbol_value_copy): Change return type. - (m4_arg_text): Add parameter. - (M4ARG): Adjust callers. - * m4/m4private.h: Adjust comments. - * m4/symtab.c (m4_symbol_value_copy): Detect when builtins are - flattened. - * m4/input.c (init_builtin_token): Add parameter, and allow - concatenating builtins. - (m4__next_token): Adjust caller. - * m4/macro.c (m4_is_arg_composite): New function. - (expand_argument): Allow builtin concatenation. - (m4_arg_text): Add parameter. - (m4__arg_adjust_refcount, m4__arg_print): Adjust callers. - (m4_arg_equal): Fix comparison of builtin tokens. - * modules/m4.c (define, pushdef): Warn when flattening builtins. - * doc/m4.texinfo (Define): Remove dead comment. - (Defn): Update to reflect code changes. - * tests/builtins.at (defn): Remove xfail. - * 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-05-01 Eric Blake <ebb9@byu.net> - - Avoid -Wshadow compiler warnings. - * m4/output.c (threshold_diversion_CB): s/div/diversion/. - * m4/macro.c (make_argv_ref, arg_symbol, m4_arg_symbol) - (m4_is_arg_text, m4_is_arg_func, m4_arg_text, m4_arg_empty) - (m4_arg_len, m4_arg_func, m4__arg_print, m4_make_argv_ref) - (m4_push_arg, m4__push_arg_quote): s/index/arg/. - * modules/format.c (format): Likewise. - * modules/m4.c (ifelse): Likewise. - - Improve debugmode testing, based on recent branch-1.6 regressions. - * doc/m4.texinfo (Debugmode): Enhance tests. - * tests/generate.awk: Run tests from stdin, not input.m4. Support - stderr munging when using -I examples. - - Fix regression in define from 2008-02-22. - * m4/m4module.h (m4_symbol_value_copy): Add parameter. - * m4/symtab.c (m4_symbol_value_copy): Support copying $@ - back-references. - * m4/macro.c (expand_argument): Update callers. - * modules/m4.c (define, pushdef): Likewise. - * tests/builtins.at (define): Enhance test to catch this. - -2008-04-21 Eric Blake <ebb9@byu.net> - - Simplify previous patch. - * tests/m4.in: Compress assignment. - Suggested by Gary V. Vaughan. - - Fix --disable-shared testsuite regression from previous patch. - * tests/m4.in: Export M4MODPATH, so that recursive m4 invocations - will also work. - - 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 testsuite bug when SIGPIPE is ignored. - * tests/builtins.at (divert): Consume all of m4's output, to avoid - spurious write failure. - * src/main.c (main): In batch mode, restore default handling of - SIGPIPE. - * doc/m4.texinfo (Operation modes): Document SIGPIPE behavior. - * THANKS: Update. - Reported by Bob Proulx, via his autobuilder. - -2008-04-15 Eric Blake <ebb9@byu.net> - - Fix 'make installcheck' after './configure --prefix-progname'. - * tests/testsuite.at (AT_CHECK_M4): Allow overriding the m4 - program name. - (HELP_OTHER, PREPARE_TESTS): Document and use $M4. - * tests/builtins.at (patsubst): Avoid space-tab. - (divert, mkdtemp, mkstemp): Adjust tests to use $M4. - * tests/options.at (--debugfile): Likewise. - * tests/others.at (stdin seekable): Likewise. - (fstab): Avoid space-tab. - * Makefile.am (installcheck-local): Accomodate transformed name. - (DISTCHECK_CONFIGURE_FLAGS): Ensure no regressions, by using gm4 - during 'make distcheck'. - * cfg.mk: New file, borrowed from branch. - - Update prerequisite tools to match recent releases. - * configure.ac (AC_PREREQ): Rely on released autoconf. - (LT_PREREQ): Rely on released libtool. - * tests/testsuite.at (m4_version_prereq): Update dependence. - * bootstrap: Mention prerequisites. - - Work around OS/2 limitation of printf(1). - * tests/null.m4: Use m4, not printf, to generate NUL byte. - * tests/null.out: Check for esyscmd failure. - Reported by Elbert Pol. - -2008-04-14 Eric Blake <ebb9@byu.net> - - Stage 21b: $@ concatenates builtins, m4wrap takes builtins. - Improve arg_print to handle builtin tokens when printing to a - known chain, rather than always flattening builtins. This allows - m4wrap and $@ back-references to handle embedded builtin tokens. - Memory impact: none. - Speed impact: slight penalty, from more bookkeeping. - * m4/m4module.h (m4_push_builtin): Add parameter. - (m4_builtin_print, m4_push_wrapup_init, m4_push_wrapup_finish) - (m4_arg_print, m4_symbol_value_print): Rename and reduce scope... - * m4/m4private.h (m4__builtin_print, m4__push_wrapup_init) - (m4__push_wrapup_finish, m4__arg_print, m4__symbol_value_print): - ...to these, in some cases adding a parameter. - (m4__append_builtin): New prototype. - * m4/builtin.c (m4_builtin_print): Alter signature to print - builtin to a growing symbol chain. - * m4/symtab.c (m4__symbol_value_print): Alter signature. - (m4_symbol_print, dump_symbol_CB): Adjust callers. - * m4/input.c (builtin_peek, builtin_read, builtin_unget) - (builtin_print, builtin_funcs): Delete, handled via composite - blocks now. - (struct m4_input_block): Delete u.builtin member. - (init_builtin_token): Only use composite block. - (m4__append_builtin): New function. - (m4_push_builtin, m4__push_wrapup_init): Alter signature. - (m4__push_symbol): Allow builtin tokens. - (m4__push_wrapup_finish): Rename. - (composite_print, m4_print_token): Adjust callers. - * m4/macro.c (m4_wrap_args, collect_arguments): Allow builtin - tokens. - (m4__arg_print): Alter signature. - (trace_prepre, trace_pre, m4_arg_text, m4_arg_equal): Adjust - callers. - * modules/m4.c (m4wrap): Allow builtin tokens. - (defn, errprint): Adjust callers. - * modules/gnu.c (builtin): Likewise. - * doc/m4.texinfo (M4wrap): New test. - (Debuglen): Adjust expected output. - - Stage 21a: Optimize checks for end of input. - Create a new polymorphic input block type, which always fails with - CHAR_EOF, so that remaining input routines no longer have to check - for NULL input block. - Memory impact: none. - Speed impact: noticeable improvement, from fewer conditionals. - * m4/input.c (eof_funcs, input_eof): New objects. - (eof_peek, eof_read, eof_unget): New functions. - (file_clean, m4_push_string_init, pop_input, m4_push_wrapup_init) - (m4_pop_wrapup, next_char, peek_char, unget_input, m4_input_init) - (m4_input_exit): Use placeholder to guarantee non-NULL isp and - wsp. - (next_char): Rename retry to allow_unget, and change sense for - easier manipulation. All callers changed. - - Improve OS/2 detection. - * modules/gnu.c (m4_macro_table): Ensure all possible identifiers - are defined, not just the first. The testsuite ensures that - exactly one gets defined. - * m4/system_.h [__EMX__]: OS/2 is not Unix-compatible, no matter - what other pre-defined macros it has. - * THANKS: Update. - Reported by Elbert Pol. - - Ensure __m4_version__ is unquoted. - * tests/builtins.at (__m4_@&t@version__): Augment test. - - Avoid GNU make failure on tarball. - * Makefile.am (EXTRA_DIST): Distribute cfg.mk and maint.mk. - -2008-04-10 Eric Blake <ebb9@byu.net> - - Allow back-referenced macro names; fixes 2008-03-13 regression. - * m4/m4module.h (m4_symbol_value_lookup): Change prototype. - * m4/utility.c (m4_symbol_value_lookup): Change signature. - * modules/m4.c (undefine, popdef, ifdef, m4_dump_symbols, defn): - Adjust all callers. - * tests/others.at (ifndef): New test. - - Be namespace clean for M4 version; fixes 2008-04-08 regression. - * configure.ac (version): Rename... - (M4_VERSION): ...to this, since using 'version' broke po.m4. - -2008-04-09 Eric Blake <ebb9@byu.net> - - Mention 1.4.11 release. - * doc/m4.texinfo (History, Defn, Ifdef, Ifelse, M4wrap) - (Extensions, Improved foreach): Distinguish 1.4.11 and 1.6. - (Format): Add test of C99 hex-float parsing. - * NEWS: Mention 1.4.11 release. - * tests/builtins.at (divert): Add additional test. - -2008-04-08 Eric Blake <ebb9@byu.net> - - Overhaul inter-version releases to work with git. - * configure.ac (version): New variable, which has nicer version - contents when using git 1.5.5+, hardcoded to 1.9a otherwise. - (TIMESTAMP): Delete, since CVS id expansion died with transition - to git. - (AM_INIT_AUTOMAKE): Use version to decide gnu vs. gnits. - * build-aux/mkstamp: Delete, no longer used. - * Makefile.am (CONFIG_STATUS_DEPENDENCIES): Kill, to speed up - rebuilds when timestamps don't matter. - (MKSTAMP): Delete, no longer used. - (EXTRA_DIST): No longer worry about mkstamp. - (.version): New rule and distributed file. - (doc/m4.1, tests/package.m4): Depend on .version, not - configure.ac, for timestamp. - * ltdl/m4/gnulib-cache.m4: Import git-version-gen module. - * modules/gnu.c (__m4_version__): TIMESTAMP no longer exists. - * src/main.c (main): Likewise. - -2008-03-28 Eric Blake <ebb9@byu.net> - - Use GNUmakefile module. - * ltdl/m4/gnulib-cache.m4: Import gnumakefile module. - * Makefile.am: Split off maintainer rules... - * maint.mk: ...into this new file. - -2008-03-18 Eric Blake <ebb9@byu.net> - - Stage 20b: make m4wrap obey POSIX fifo ordering. - Improve input engine to support location changes within symbol - chains, then convert m4wrap to always build symbol chain. - Memory impact: none. - Speed impact: slight penalty, from more m4wrap bookkeeping. - * m4/m4module.h (m4_wrap_args): Add prototype. - * m4/m4private.h (enum m4__symbol_chain_type): Add M4__CHAIN_LOC. - (struct m4__symbol_chain): Add struct u_l. - * m4/input.c (m4_push_wrapup_init, m4_push_wrapup_finish): Use - new link type. - (composite_peek, composite_read, composite_clean): Handle location - link. - * m4/macro.c (m4_wrap_args): New function. - * modules/m4.c (m4wrap): Use it. - * doc/m4.texinfo (M4wrap): Sync with branch and POSIX. - (Extensions): Document extension of multiple arguments. - (Location, Improved m4wrap): Adjust example to match FIFO order. - * tests/builtins.at (wrap): Likewise. - * NEWS: Document this change. - -2008-03-17 Eric Blake <ebb9@byu.net> - - Stage 20a: reduce unget's in input engine. - Now that out-of-range input placeholders like CHAR_BUILTIN are - consumed outside of next_char, next_token should always consume - rather than peek at the first character. Fewer peeks results in - less ungetc overhead. - Memory impact: none. - Speed impact: noticeable improvement, from fewer function calls. - * m4/input.c (struct input_funcs): Alter read_func prototype. - (next_char, file_read, buildin_read, string_read, composite_read): - Add allow_argv parameter. - (init_builtin_token, init_argv_symbol): Require all prior input to - be consumed. - (m4_skip_line, match_input, consume_syntax): Adjust callers. - (m4__next_token): Consume first byte without peek. - - Update for fresh bootstrap. - * ltdl/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. - * 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-13 Eric Blake <ebb9@byu.net> - - Stage 19c: 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. - * m4/m4module.h (m4_symbol_value_lookup, m4_builtin_print): New - prototypes. - * m4/m4private.h (enum m4__symbol_chain_type): Add - M4__CHAIN_FUNC. - (struct m4__symbol_chain): Add builtin member. - * m4/utility.c (m4_symbol_value_lookup): New method. - * m4/builtin.c (m4_builtin_print): New function. - * m4/symtab.c (m4_symbol_value_print): Use it. - * m4/input.c (builtin_print): Likewise. - (m4__push_symbol): Allow pushing builtin tokens. - (composite_peek, composite_read, composite_unget, composite_clean) - (composite_print): Handle builtin tokens. - (init_builtin_token): Allow builtin tokens from composite input. - (m4__next_token): Flatten builtins inside comment or string. - * m4/macro.c (expand_argument): Strengthen assertion. - (collect_arguments, m4_arg_equal, m4_arg_print, m4_push_args): - Handle builtin tokens. - (arg_symbol): Add parameter, and allow NULL level. - (m4_arg_symbol, m4__push_arg_quote): Adjust callers. - (m4_arg_text): Ensure all builtins have been flattened. - * modules/m4.c (defn, dumpdef, popdef, traceoff, traceon) - (undefine, m4_dump_symbols): Warn on invalid macro names. - (ifdef, ifelse, shift): Handle builtin tokens. - * modules/gnu.c (m4symbols): Likewise. - * doc/m4.texinfo (Defn, Ifdef, Ifelse): Document and test the new - behavior. - (Debuglen): Likewise, and remove xfail. - * NEWS: Mention the change. - - Stage 19b: invert sense of bit for handling builtin tokens. - Pass builtin tokens by default, rather than as the exception, so - that the logic can consistently refer to flattening arguments. - Memory impact: none. - Speed impact: none. - * m4/m4module.h (M4BUILTIN_ENTRY): New convenience macro. - (M4_BUILTIN_GROKS_MACRO): Rename... - (M4_BUILTIN_FLATTEN_ARGS): ...and invert sense. - (m4_symbol_value_groks_macro, m4_symbol_groks_macro): Likewise... - (m4_symbol_value_flatten_args, m4_symbol_flatten_args): ...to - this. - * m4/m4private.h (VALUE_MACRO_ARGS_BIT) - (m4_symbol_value_groks_macro): Likewise... - (VALUE_FLATTEN_ARGS_BIT, m4_symbol_value_flatten_args): ...to - this. - * m4/symtab.c (m4_symbol_value_groks_macro): Likewise... - (m4_symbol_value_flatten_args): ...to this. - * m4/macro.c (collect_arguments): Accomodate changed sense. - * m4/module.c (m4__module_open): Require arguments if flattening - is requested. - * m4/input.c (m4_push_string_finish): For now, flatten all - builtins pushed as back-references. - * modules/gnu.c (m4_builtin_table, builtin): Adjust all clients. - * modules/import.c (m4_builtin_table): Likewise. - * modules/load.c (m4_builtin_table): Likewise. - * modules/modtest.c (m4_builtin_table): Likewise. - * modules/mpeval.c (m4_builtin_table): Likewise. - * modules/perl.c (m4_builtin_table): Likewise. - * modules/shadow.c (m4_builtin_table): Likewise. - * modules/stdlib.c (m4_builtin_table): Likewise. - * modules/time.c (m4_builtin_table): Likewise. - * modules/m4.c (m4_builtin_table): Likewise. - (mkstemp): Undo #undef hack from 2006-10-23, now that macro names - are stringized without preprocessor expansion. - * doc/m4.texinfo (Defn): Update comments to match reality. - (Debuglen): Update test now that user macros pass builtin tokens. - - Stage 19a: sort and cache builtins loaded by a module. - Rather than repeatedly using dlsym to browse the builtin table, - copy off the table at module load time. Then, the input engine - merely refers to the copy instead of duplicating information. - Memory impact: slight penalty, due to more memory per module, but - offset by less memory in input engine. - Speed impact: slight improvement, due to faster builtin lookups. - * m4/m4module.h (m4_set_symbol_value_builtin): Delete. Use - m4_builtin_find_by_* instead. - (m4_builtin_find_by_func): Change return type. - * m4/m4private.h (m4__builtin): New struct. - (m4_module): Add sorted list of loaded builtins. - (struct m4_symbol_value): Change type of builtin value. - (m4__set_symbol_value_builtin): New prototype and fast accessor. - (m4_get_symbol_value_func, m4_get_symbol_value_builtin): Adjust to - new field type. - * m4/symtab.c (m4_set_symbol_value_builtin): Rename... - (m4__set_symbol_value_builtin): ...and populate additional fields, - based on new type. - (m4_get_symbol_value_func, m4_get_symbol_value_builtin): Adjust to - new field type. - * m4/module.c (install_builtin_table): Use cached table. - (compare_builtin_CB): New helper function. - (m4__module_open): Populate table. - (module_remove): Free table. - * m4/builtin.c (compare_builtin_name_CB): New helper function. - (m4_builtin_find_by_name): Rewrite to use sorted table. - (m4_builtin_find_by_func): Change return type. - * m4/input.c (struct m4_input_block): Simplify u_b, since most - fields can be determined from builtin. - (builtin_peek, builtin_read, builtin_unget, init_builtin_token) - (m4__next_token): Alter parsing so that only init_builtin_token - consumes a builtin. - (builtin_print, m4_push_builtin): Adjust all users. - * tests/macros.at (Arity, defn, and freeze): Fix typo. - - Consistently cast malloc results, for C++ compilation. - * m4/builtin.c (m4_builtin_find_by_name): Add cast. - * m4/hash.c (m4_hash_new, m4_get_hash_iterator_next, node_new) - (m4_hash_resize, maybe_grow): Likewise. - * m4/m4.c (m4_create): Likewise. - * m4/macro.c (expand_macro): Likewise. - * m4/output.c (m4_tmpname): Likewise. - * m4/path.c (search_path_add): Likewise. - * m4/symtab.c (m4_symtab_create, m4_symbol_value_create) - (symtab_fetch): Likewise. - * m4/syntax.c (m4_syntax_create): Likewise. - * modules/gnu.c (regexp_compile): Likewise. - * src/main.c (main): Likewise. - * src/freeze.c (reload_frozen_state): Likewise. - -2008-03-06 Eric Blake <ebb9@byu.net> - - Fix nested builtin(`shift',$@) regression from 2008-02-23. - * m4/macro.c (make_argv_ref): Don't output expansion text when - making wrapper for builtin or indir. - * tests/builtins.at (builtin): New test. - * NEWS: Document the fix. - Reported by Andreas Schwab. - -2008-03-04 Eric Blake <ebb9@byu.net> - - The gnulib module free was deprecated. - * ltdl/m4/gnulib-cache.m4: Remove free module. - -2008-02-29 Eric Blake <ebb9@byu.net> - - Import news from 1.4.10b. - * NEWS: Update from branch. - -2008-02-23 Eric Blake <ebb9@byu.net> - - 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. - * m4/macro.c (make_argv_ref): Avoid wrapping $@ when possible. - (m4_push_args): Let make_argv_ref take care of pending data. - * doc/m4.texinfo (Improved foreach): Tweak wording to match new - performance capability. - * tests/others.at (recursion): Add tests to avoid performance - regression. - -2008-02-22 Eric Blake <ebb9@byu.net> - - Update NEWS. - * NEWS: Document change to __gnu__ on 2008-02-11. - - 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. - * m4/m4module.h (m4_arg_equal, m4_arg_len): Add parameter. - (M4ARGLEN): Adjust definition. - * m4/m4private.h (struct m4__symbol_chain): Add has_func member. - (struct m4_symbol_value): Add wrapper and has_func members. - (struct m4_macro_args): Add flatten and has_func members. - * m4/input.c (append_quote_token): Return argv refs inside quoted - strings. - (init_argv_symbol): Populate new fields. - * m4/macro.c (expand_argument, collect_arguments, make_argv_ref) - (m4_make_argv_ref): Likewise. - (arg_symbol, arg_mark, m4_is_arg_text, m4_is_arg_func): Use new - fields. - (m4_arg_equal, m4_arg_len): Handle quoted argv references, and add - new parameter. - * modules/m4.c (ifelse): Adjust caller. - -2008-02-22 Gary V. Vaughan <gary@gnu.org> - - Fix regression in argument collection, from 2008-01-21. - * m4/input.c (m4__next_token): When DEBUG_INPUT is defined, - undo argument collection optimisation for strings, so that - m4_print_token doesn't abort when it otherwise receives an - unprintable M4_SYMBOL_VOID type token. - -2008-02-20 Eric Blake <ebb9@byu.net> - - Stage 16: cache quotes and improve m4_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. - * m4/m4module.h (m4_symbol_value_print, m4_symbol_print) - (m4_arg_print): Adjust prototypes. - (m4_dump_args): Delete. - (m4_push_wrapup): Split... - (m4_push_wrapup_init, m4_push_wrapup_finish): ...into these - prototypes. - * m4/m4private.h (struct m4_syntax_table): Add cached_quote - member. - (m4__quote_cache, m4__quote_uncache): New prototypes. - * m4/syntax.c (m4_syntax_create): Initialize the cache. - (m4__quote_cache): New function. - (m4_set_syntax): Update caller. - * m4/symtab.c (m4_symbol_value_print): Add parameter. - (m4_symbol_print, dump_symbol_CB): Adjust all callers. - * m4/utility.c (m4_dump_args): Delete; callers should use - m4_arg_print instead. - * m4/input.c (m4_push_wrapup_init, m4_push_wrapup_finish): Split - implementation, and allow embedded NUL. - (m4_print_token, pop_input, composite_print, composite_peek): - (composite_read, append_quote_token): Adjust all callers. - * m4/macro.c (trace_prepre, m4_arg_text, make_argv_ref): - Likewise. - (m4_arg_print): Add parameters. - (trace_pre): Rewrite in terms of m4_arg_print. - * modules/m4.c (errprint): Likewise. - (m4wrap): Rewrite to allow embedded NUL. - (dumpdef): Adjust caller. - * doc/m4.texinfo (Debuglen): Enhance debuglen test. - * tests/null.m4: Test for NUL in m4wrap. - * tests/null.out: Update expected output. - - Fix out-of-bounds read for sanitized macro names, from 2008-02-06. - * m4/utility.c (m4_verror_at_line): Properly terminate the string. - Reported by Ralf Wildenhues. - - * doc/m4.texinfo (Debuglen, Changesyntax): Fix typos. - -2008-02-19 Eric Blake <ebb9@byu.net> - - Clean up example on filtering defined symbols. - * doc/m4.texinfo (Foreach, Improved foreach): Document another - shortcoming in foreach.m4, and improve filter example by using - foreach2.m4. - - * src/main.c (usage): Fix typo. - -2008-02-18 Eric Blake <ebb9@byu.net> - - Avoid some magic numbers. - * m4/m4private.h (CHAR_EOF, CHAR_BUILTIN, CHAR_QUOTE, CHAR_ARGV) - (CHAR_RETRY): Define in terms of UCHAR_MAX. - * m4/syntax.c (m4_syntax_create, set_syntax_set) - (reset_syntax_set, check_is_single_quotes) - (check_is_single_comments, check_is_macro_escaped) - (m4_set_quotes, m4_set_comment): Likewise. - * modules/gnu.c (regexp_compile): Likewise. - * modules/m4.c (translit): Likewise. - * src/freeze.c (produce_syntax_dump): 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. - * m4/m4private.h (CHAR_ARGV): New input engine sentinel. - (enum m4__token_type): Add M4_TOKEN_ARGV. - (struct m4__symbol_chain): Add skip_last member to argv link. - (m4__next_token): Add parameter. - * m4/input.c (peek_char, file_peek, builtin_peek, string_peek) - (composite_peek, m4__next_token): Add new parameter. - (composite_read, append_quote_token): Support argv in quotes. - (init_argv_symbol): New function. - (m4__push_symbol, match_input, consume_syntax) - (m4__next_token_is_open, m4_print_token): Adjust callers. - * m4/macro.c (m4_macro_expand_input, m4__arg_adjust_refcount) - (arg_mark, m4_arg_text, make_argv_ref): Likewise. - (expand_argument, collect_arguments): Handle new token. - (arg_symbol): Drill through $@ reference. - * m4/syntax.c (set_quote_age): Detect disabled comments. - * m4/symtab.c (dump_symbol_CB) [DEBUG_SYM]: Fix debug code. - -2008-02-15 Eric Blake <ebb9@byu.net> - - * modules/gnu.c (regexp_compile): Use a fastmap for regex speed. - -2008-02-13 Eric Blake <ebb9@byu.net> - - Fix texinfo grammar. - * doc/m4.texinfo (Eval, Incompatibilities): Use @. after capital. - (History): Use @: after abbreviations. - (M4exit): Use correct Latin abbreviation. - (Dumpdef, Debugmode, Frozen file format 2): Use correct spacing - between sentences. - -2008-02-11 Eric Blake <ebb9@byu.net> - - Allow builtin text macros to specify number of arguments. - * m4/m4module.h (struct m4_macro): Add argument limits to builtin - text macros. - * m4/module.c (install_macro_table): Allow text macros to warn on - extra arguments. - * modules/gnu.c (m4_macro_table): Update all clients. - * modules/load.c (m4_macro_table): Likewise. - * modules/mpeval.c (m4_macro_table): Likewise. - * modules/perl.c (m4_macro_table): Likewise. - * modules/shadow.c (m4_macro_table): Likewise. - * modules/traditional.c (m4_macro_table): Likewise. - * modules/modtest.c (m4_macro_table): Likewise. Also add text - macros, for testing this. - * doc/m4.texinfo (Standard Modules): Update text, and enhance - test. - * tests/modules.at (modules: text): New test. - - Fix regression in command line -D option, from 2006-08-25. - * m4/m4private.h (m4_symbol_value_create): Delete fast accessor. - * m4/m4module.h: Fix typo. - * m4/symtab.c (m4_symbol_value_create): Prime the maximum number - of arguments. - * tests/macros.at (Command line define): Enhance test. - * tests/others.at (nul character): Enhance test. - * tests/null.m4: Likewise. - * tests/null.out: Likewise. - - Use gnulib's git-merge-changelog driver when available. - * .gitattributes: Add merge attributes for ChangeLog. - * bootstrap: Install driver, if not already present. - -2008-02-06 Eric Blake <ebb9@byu.net> - - Fix security hole introduced 2007-11-23. - * m4/utility.c (m4_verror_at_line): Properly escape macro names. - * src/main.c (main): Manage quoteargs defaults. - * doc/m4.texinfo (Indir): Document and test this. - - Using raw strtod is not portable. - * ltdl/m4/gnulib-cache.m4: Import the strtod module. - -2008-02-02 Eric Blake <ebb9@byu.net> - - Consistently use size_t for number of arguments. - * m4/m4module.h (m4_builtin_func): Alter prototype. - (struct m4_builtin): Adjust type of min_args, max_args. - (M4BUILTIN, M4BUILTIN_HANDLER): Adjust all builtins. - (m4_bad_argc, m4_dump_args, m4_macro_call, m4_arg_argc) - (m4_arg_symbol, m4_is_arg_text, m4_is_arg_func, m4_arg_text) - (m4_arg_equal, m4_arg_empty, m4_arg_len, m4_arg_func) - (m4_arg_print, m4_push_arg): Adjust all clients. - * m4/m4private.h (struct m4__symbol_chain, m4_symbol_value) - (m4_macro_args): Adjust type of various fields. - (m4__push_arg_quote): Adjust all clients. - * m4/input.c (m4_pop_wrapup): Likewise. - * m4/macro.c (m4_macro_call, trace_pre, make_argv_ref) - (arg_symbol, m4_arg_symbol, m4_is_arg_text, m4_is_arg_func) - (m4_arg_text, m4_arg_equal, m4_arg_empty, m4_arg_len) - (m4_arg_func, m4_arg_print, m4_make_argv_ref, m4_push_arg) - (m4__push_arg_quote, m4_push_args, m4_arg_argc): Likewise. - * m4/utility.c (m4_bad_argc, m4_dump_args): Likewise. - * modules/evalparse.c (m4_evaluate): Likewise. - * modules/gnu.c (changesyntax): Likewise. - * modules/m4.c (m4_dump_symbols, undefine, popdef, ifelse, defn) - (undivert, traceon, traceoff): Likewise. - * modules/m4.h (m4_dump_symbols_func): Likewise. - * modules/perl.c (perleval): Likewise. - - Stage 14b: 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. - * m4/m4private.h (struct m4__symbol_chain): Add comma and quotes - fields. - (struct m4_macro_args): Add level field. - (m4__arg_adjust_refcount, m4__push_arg_quote): New prototypes. - * m4/input.c (m4__push_symbol, composite_peek, composite_read) - (composite_unget, composite_clean, composite_print): Support $@ - refs. - * m4/macro.c (collect_arguments): Populate new field. - (expand_macro): Move argv cleanup... - (m4__arg_adjust_refcount): ...to this new function. - (m4_arg_symbol, m4_make_argv_ref, m4_push_arg): Factor... - (arg_symbol, make_argv_ref, m4__push_arg_quote): ...to these new - helper functions, to add parameters. - (m4_push_args): Adjust caller. - * m4/symtab.c (m4_symbol_value_print): Likewise. - - Stage 14a: allow printing argv references. - Refactor symbol-value printing code for better sharing, and to - allow printing a contiguous text representation of a $@ ref. - Memory impact: none. - Speed impact: none. - * m4/m4module.h (m4_arg_print): New prototype. - (m4_symbol_value_print): Alter prototype. - * m4/input.c (struct input_funcs): Add parameter to peek_func. - (file_peek, builtin_peek, string_peek): Ignore new parameter. - (composite_peek): Ignore new parameter, for now. - (composite_clean, pop_input): Rework to minimize indirection, and - to avoid infinite recursion in next patch. - * m4/macro.c (trace_prepre, trace_pre): Adjust callers. - (m4_arg_print): New function. - * m4/symtab.c (m4_symbol_value_print): Update signature. - (m4_symbol_print): Update caller. - * m4/output.c (m4_shipout_string_trunc): Update comments. - * m4/syntax.c (set_quote_age): Require comma as argument separator - when dealing with $@ as a unit. - * tests/builtins.at (ifelse): Augment test. - * doc/m4.texinfo (Changesyntax): Document changesyntax deficiency. - -2008-01-31 Eric Blake <ebb9@byu.net> - - Kill hack for M4 1.4.4. - * configure.ac (AM_GNU_GETTEXT_INTL_SUBDIR): Delete, now that - we require new enough autoconf which in turn requires M4 1.4.5. - -2008-01-31 Gary V. Vaughan <gary@gnu.org> - and Eric Blake <ebb9@byu.net> - - Depend on new libtool to use non-recursive build. - * configure.ac (LT_PREREQ): Bump to alpha release version. - (LTDL_INIT): Choose nonrecursive mode. Perform sanity check that - installed libtool has correct symbols. - * Makefile.am (SUBDIRS): Drop ltdl, now that it is built from the - top level. - (AM_CPPFLAGS): Drop directories covered by libtool. - (AM_LDFLAGS): Drop -no-undefined, covered by libtool. - (include_HEADERS, noinst_LTLIBRARIES, EXTRA_LTLIBRARIES): New - macros, used by libtool. - (lib_LTLIBRARIES): Also used by libtool. - (ltdl/libltdlc.la): Delete, now that libtool does this. - * bootstrap: Mention new requirements. - (LIBTOOLIZE): Provide default program, and run libtoolize prior to - autoreconf. - (autoreconf): Also neutralize libtoolize, since it is run early. - * HACKING: Mention updated prerequisites. - -2008-01-28 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> - - Fix build failure if installed libltdl is used. - * Makefile.am (m4_libm4_la_DEPENDENCIES): Use $(LTDLDEPS). - -2008-01-28 Eric Blake <ebb9@byu.net> - - Depend on newer autoconf, for testsuite -C dir. - * Makefile.am (CD_TESTDIR): Delete, no longer required. - (check-local, installcheck-local, clean-local-tests): Use new -C - option from autotest. - * configure.ac (AC_PREREQ): Bump to 2.61a.347. - * bootstrap: Mention new dependency. - * HACKING: Likewise. - -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. - * m4/m4private.h (m4__push_symbol): Adjust prototype. - * m4/input.c (m4__push_symbol): Add parameter, and support - composite tokens. - (append_quote_token): Add parameter, and support inlining of short - text. - (m4__next_token): Adjust caller. - * m4/macro.c (m4_push_arg, m4_push_args): Likewise. - -2008-01-26 Eric Blake <ebb9@byu.net> - - Stage 12c: add macro for m4_arg_len. - Make a common action easier to type. - Memory impact: none. - Speed impact: none. - * m4/m4module.h (M4ARGLEN): New macro. - * m4/macro.c (process_macro): Adjust all callers. - * m4/utility.c (m4_dump_args): Likewise. - * modules/m4.c (divert, maketemp, mkstemp, m4wrap, len, index) - (substr): Likewise. - * modules/gnu.c (builtin, indir, mkdtemp, patsubst, regexp) - (renamesyms): Likewise. - * modules/stdlib.c (setenv): Likewise. - - Stage 12b: add m4_string_pair. - Make passing quote delimiters around more efficient. - Memory impact: none. - Speed impact: slight penalty, due to more bookkeeping. - * m4/m4module.h (m4_string_pair): New type. - (m4_get_syntax_quotes, m4_get_syntax_comments): New prototypes. - (m4_symbol_value_print, m4_symbol_print, m4_shipout_string_trunc): - Alter signature. - * m4/m4private.h (struct m4_string): Delete. - (struct m4_syntax_table): Combine quote and comment members. - (m4_get_syntax_lquote, m4_get_syntax_rquote, m4_get_syntax_bcomm) - (m4_get_syntax_ecomm): Adjust accessors. - (m4_get_syntax_quotes, m4_get_syntax_comments): New fast - accessors. - * m4/symtab.c (m4_symbol_value_print, m4_symbol_print): - Alter signatures. - * m4/input.c (string_print, composite_print, m4_input_print): - All callers updated. - * m4/syntax.c (m4_syntax_delete, m4_set_syntax) - (check_is_single_quotes, m4_set_quotes, set_quote_age) - (m4_get_syntax_lquote, m4_get_syntax_rquote) - (m4_get_syntax_quotes, check_is_single_comments, m4_set_comment) - (m4_get_syntax_bcomm, m4_get_syntax_ecomm) - (m4_get_syntax_comments): Likewise. - * m4/macro.c (trace_prepre, trace_pre, m4_push_args): Likewise. - * m4/output.c (m4_shipout_string, m4_shipout_string_trunc): - Likewise. - * modules/m4.c (dumpdef, m4_make_temp): Likewise. - * src/freeze.c (produce_frozen_state): Likewise. - * tests/freeze.at (reloading unknown builtin): Update test. - - Stage 12a: make m4_symbol_chain a union. - Shrink size of symbol chains by using a union. - Memory impact: slight improvement, due to smaller struct. - Speed impact: slight improvement, due to less bookkeeping. - * m4/m4private.h (enum m4__symbol_chain_type): New enum. - (struct m4_symbol_chain): Rename... - (struct m4__symbol_chain): ...to this, since it is internal. - * m4/symtab.c (m4_symbol_value_copy, m4_symbol_value_print): All - callers updated. - * m4/input.c (struct m4_input_block, m4__push_symbol) - (composite_peek, composite_read, composite_unget) - (composite_clean, composite_print, m4__make_text_link) - (append_quote_token): Likewise. - * m4/macro.c (expand_macro, arg_mark, m4_arg_symbol, m4_arg_text) - (m4_arg_equal, m4_arg_len, m4_make_argv_ref, m4_push_arg) - (m4_push_args): Likewise. - -2008-01-23 Eric Blake <ebb9@byu.net> - - Adjust to recent libtool interface change. - * configure.ac (LT_PREREQ): Require bleeding-edge libtool. - (LT_WITH_LTDL): Delete, now that it is obsolete. - (LTDL_INIT): Use new libtool macro. - -2008-01-22 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> - and Eric Blake <ebb9@byu.net> - - Rely on newer automake. - * configure.ac (AM_INIT_AUTOMAKE): Require 1.10.1, and add lzma - distribution. - * bootstrap: Update automake requirement. - (func_version): Fix --version output, broken since 2007-08-06. - * HACKING: Likewise. Add lzma requirement. - * Makefile.am (clean-local-src): Not needed any more with newest - Automake. - (clean-local): Adjust. - * TODO: Remove completed item. - -2008-01-22 Eric Blake <ebb9@byu.net> - - Doc tweak. - * doc/m4.texinfo (Renamesyms): Avoid underfull hbox, and improve - example. - -2008-01-21 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. - * m4/m4module.h (m4_arg_text): Add parameter. - (M4ARG): Adjust. - * m4/m4private.h (CHAR_QUOTE): New input engine sentinel. - (m4__make_text_link): New prototype. - (struct m4_symbol_chain): Add quote_age member. - (struct m4_symbol_value): Add end member to chained symbol. - (struct m4_macro_args): Add wrapper member. - * m4/symtab.c (m4_symbol_value_print): Print composite tokens. - (m4_symbol_value_copy, m4_symbol_value_delete): Recognize - composite tokens. - * m4/input.c (make_text_link): Rename... - (m4__make_text_link): ...to this, and export. - (m4_push_string_finish): Adjust caller. - (make_text_link, m4__push_symbol): Update new field. - (file_read, builtin_read, string_read, composite_read, next_char): - Add parameter. - (m4_skip_line, match_input, consume_syntax): Adjust callers. - (append_quote_token): New function. - (m4__next_token): Pass quoted strings onto argument collection. - (m4_print_token) [DEBUG_INPUT]: Update. - * m4/macro.c (expand_argument): Collect composite arguments. - (collect_arguments): Update new field. - (expand_macro): Reduce ref-count of back-references after use. - (arg_mark, m4_arg_symbol, m4_make_argv_ref): Adjust to new member - names. - (m4_is_arg_text): Also recognize composite symbols as text. - (m4_arg_text, m4_arg_len): Merge composite symbols as needed. - (m4_arg_equal): Compare composite symbols. - (m4_push_arg, m4_push_args): Handle composite symbols. - (m4_arg_symbol): Relax assertion. - (process_macro): Use single-argument references. - * m4/output.c (m4_shipout_string_trunc): Update comment. - * tests/macros.at (Rescanning macros): Augment test. - -2008-01-16 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. - * ltdl/m4/gnulib-cache.m4: Import intprops and vasnprintf-posix - modules. - * m4/m4private.h (m4__token_type): Adjust prototype. - * m4/input.c (m4__next_token): Support new parameter. - * m4/macro.c (m4_macro_expand_input, expand_token) - (expand_argument, collect_arguments): Adjust callers. - * modules/m4.c (ntoa): Tighten buffer size. - * m4/output.c (m4_tmpname): Guarantee no buffer overflow. - * modules/format.c (arg_int, arg_long, arg_double): New helper - functions, to detect overflow or unparsed characters. - (ARG_INT, ARG_LONG, ARG_STR, ARG_DOUBLE): Adjust to check for - missing or excess arguments. - (format): Likewise, and also output directly into obstack if there - is room. - * doc/m4.texinfo (History): Update for new year. - (Format): Test for new warnings. - -2008-01-15 Eric Blake <ebb9@byu.net> - - * TODO: Update with some newer URLs. - - Verify linear `index'. - * tests/builtins.at (index): New test. - (translit): Make test take longer, to make quadratic algorithms - more apparent. - -2007-12-20 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. - * ltdl/m4/gnulib-cache.m4: Import memmem and quote modules. - * m4/m4module.h (m4_arg_scratch): New prototype. - * m4/m4private.h (m4__push_symbol): Add parameter. - (m4_arg_scratch): Add fast accessor. - (struct m4): Add expansion_level member, taken... - * m4/macro.c (expansion_level): ...from here. Adjust all users. - (expand_argument): Minor cleanup. - (expand_macro): Track scratch space per macro call. - (m4_arg_scratch): New function. - (m4_make_argv_ref): Call new function. - (m4_push_arg): Push reference to $0. - (m4_push_args): Rework separator usage, since separators will - usually be inlined. - (process_macro): Allow embedded NUL. - * m4/input.c (INPUT_INLINE_THRESHOLD): New define. - (m4__push_symbol): Add parameter. Inline short strings, and save - references through rescanning. - * m4/symtab.c (m4_set_symbol_value_text): Weaken assertion. - * modules/m4.c (errprint, index): Handle NUL transparently. - (dumpdef, translit): Use scratch space, rather than expansion - stack. - * modules/gnu.c (renamesyms, m4symbols): Likewise. - * tests/others.at (nul character): New test. - (iso8859): Quote absolute file name, remove XFAIL. - * tests/iso8859.m4: Avoid raw NUL in output. - * tests/null.m4: New file. - * tests/null.out: Likewise. - * tests/null.err: Likewise. - * Makefile.am (OTHER_FILES): Distribute new files. - * .gitattributes: Treat new files as text. - -2007-12-17 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. - * m4/system_.h (obstack_regrow): Delete. - * m4/m4private.h (struct m4_symbol_chain): Add level field. - (m4__push_symbol): Adjust prototype. - (m4__adjust_refcount): New prototype. - (DEBUG_MACRO) [DEBUG]: New debug control. - (struct m4__macro_arg_stacks): New structure. - (struct m4): Add arg_stacks, stacks_count fields. - * m4/m4module.h (m4_make_argv_ref): Add parameter. - * m4/macro.c (argc_stack, argv_stack): Delete, replaced by - context->arg_stacks. - (m4_macro_expand_input) [DEBUG_MACRO]: Add debug hooks, - conditional on M4_DEBUG_MACRO envvar. - (collect_arguments): Adjust signature. - (expand_macro): Rework obstack handling. - (m4__adjust_refcount, arg_mark): New functions. - (m4_make_argv_ref): Populate new field. - (m4_push_arg, m4_push_args): Track inuse. - (process_macro): One less cast. - * m4/m4.c (m4_delete): Clean up arg_stacks. - * m4/input.c (make_text_link): Use new field. - (m4__push_symbol, file_clean): Update signature. - (composite_read): Bump refcount when done with reference. - (composite_clean): New function. - (pop_input): Adjust caller. - * m4/debug.c (m4_debug_message): Make assertion match comment. - * modules/gnu.c (builtin, indir): Adjust callers. - * tests/builtins.at (ifelse): New test. - (exp): Move and rename... - * tests/others.at (countdown): ...to this. - * doc/m4.texinfo (Improved foreach): Fix tracing usage in - example. - -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: use chained input support in 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: slight penalty, due to extra bookkeeping. - * m4/m4private.h (m4__push_symbol): New prototype. - (struct m4_symbol_chain): Add const-safety. - * m4/symtab.c (m4_symbol_value_print): Simplify. - (dump_symbol_CB): Update caller. - * m4/input.c (struct m4_input_block): Alter u_c member, first - introduced 2006-10-25, but unused until now. - (composite_peek, composite_read, composite_unget) - (composite_print, init_builtin_token): Rewrite accordingly. - (m4_push_wrapup): No longer need trailing NUL. - (m4__push_symbol, make_text_link): New functions. - (m4_push_string_finish): Use them. - * m4/macro.c (m4_push_arg, m4_push_args): Likewise. - (expand_macro): Simplify logic of nesting_limit. - * src/main.c (main): Likewise. - * doc/m4.texinfo (Dumpdef): Augment test. - -2007-12-08 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. - * m4/m4module.h (m4_shipout_text): Rename... - (m4_divert_text): ...to this, to avoid confusion with m4_shipout_* - that does not worry about sync lines. - (m4_shipout_string_trunc): New prototype. - * m4/output.c (m4_shipout_text): Rename... - (m4_divert_text): ...to this. - (m4_shipout_string): Move guts... - (m4_shipout_string_trunc): ...to this new function. - * m4/macro.c (m4_push_arg, m4_push_args): New functions. - (expand_token, process_macro): Update callers. - * m4/input.c (string_print): Likewise. - * modules/m4.c (ifdef, ifelse, shift, substr, translit, divert): - Likewise. - * modules/gnu.c (patsubst): Likewise. - (debuglen): Use SIZE_MAX for unlimited debug length. - * src/main.c (main): Likewise. - * m4/m4.c (m4_create): Default max_debug_length to SIZE_MAX, not - zero. - -2007-12-07 Eric Blake <ebb9@byu.net> - - Minor security fix: Quote output of mkstemp. - * modules/m4.c (m4_make_temp): Produce quoted output. - * doc/m4.texinfo (Mkstemp, Mkdtemp): Update the documentation and - tests. - - 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 improvement, due to smaller struct in input - engine. - Speed impact: slight penalty, due to more bookkeeping. - * m4/m4module.h (m4_get_symbol_value_quote_age): New prototype. - (m4_set_symbol_value_text): Adjust prototype. - (m4_has_syntax): Factor out the unsigned char cast. - * m4/m4private.h (struct m4_syntax_table): Add syntax_age and - quote_age members. - (m4__quote_age, m4__safe_quotes): New accessor macros, no need for - functions at this point. - (struct m4_symbol_value, struct m4_macro_args): Add quote_age - member. - (m4_set_symbol_value_text): Adjust fast accessor. - (m4_get_symbol_value_quote_age): New fast accessor. - * m4/symtab.c (m4_set_symbol_value_text): Add parameter. - (m4_get_symbol_value_quote_age): New function. - (m4_symbol_value_copy): Adjust callers. - * m4/macro.c (expand_token): Add parameter, and track quote age. - (expand_argument, collect_arguments): Track quote age. - (m4_macro_expand_input, process_macro, m4_make_argv_ref) - (m4_macro_expand_input): Update callers. - (m4_arg_text, m4_arg_len, m4_arg_func): Abort on type mismatch. - * m4/input.c: Comment cleanups. - (struct m4_input_block): Reduce size. - (m4__next_token): Report quote age. - (m4_push_builtin, init_builtin_token): Update callers. - * m4/utility.c (skip_space): Adjust callers. - * m4/module.c (install_macro_table): Likewise. - * m4/syntax.c (m4_set_syntax): Initialize and update quote age. - (m4_set_quotes, m4_set_comment): Detect no-op changes, and update - quote age. - (set_quote_age): New helper function. - (check_is_single_quotes, check_is_single_comments): Adjust - callers. - * src/freeze.c (reload_frozen_state): Likewise. - * src/main.c (main): Likewise. - * modules/m4.c (define, pushdef): No need to set macro text. - * tests/builtins.at (changequote, defn): New tests. - * examples/wrapfifo.m4: New file. - * examples/wraplifo.m4: New file. - * Makefile.am (dist_pkgdata_DATA): Distribute new examples. - -2007-12-04 Eric Blake <ebb9@byu.net> - - Fix builds with OpenBSD make. - * Makefile.am (HELP2MAN): New macro. - (dist_man_MANS, doc/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. - * m4/system_.h (obstack_regrow): Fix precedence. - * m4/m4module.h (m4_arg_equal, m4_arg_empty, m4_make_argv_ref): - New prototypes. - (struct m4_macro_args): Move... - * m4/m4private.h (struct m4_macro_args): ...here, making it opaque - to modules. Add has_ref member. - (bool_bitfield): New helper typedef. - (struct m4_symbol_chain): Add flatten and len members. - * m4/macro.c (empty_symbol): New placeholder, for optimizing - comparison with empty string. - (m4_macro_expand_input): Initialize it. - (collect_arguments): Alter signature, and populate new fields. - (trace_pre, trace_post): Remove redundant parameter. - (expand_macro): Alter handling of obstacks. - (m4_arg_symbol): Account for wrapped argv. - (m4_arg_equal, m4_arg_empty, m4_make_argv_ref): New methods. - (m4_arg_text, m4_arg_len, m4_arg_func): Use new methods. - * modules/m4.c (ifelse, syscmd): Likewise. - * modules/evalparse.c (m4_evaluate): Likewise. - (undefine, popdef, m4_dump_symbols): Optimize. - * modules/gnu.c (builtin, indir, esyscmd, debugfile): Use new - methods. - (changesyntax, regexp): Optimize. - * m4/output.c (diversion_storage): Use typedef. - - Stage 3b: cache length, rather than computing it, in modules. - Use cached token length in builtins and output engine. - Memory impact: none. - Speed impact: noticeable improvement, due to fewer function calls. - * m4/hash.c (m4_hash_remove): Avoid double free on remove - failure. - * m4/output.c (m4_shipout_string): Change semantics of len param. - (m4_shipout_int): Use cached length. - * m4/input.c (m4_push_string_finish): Likewise. - * modules/m4.h (m4_make_temp_func): Add parameter. - * m4/macro.c (expand_token, m4_arg_len): Use cached length. - (collect_arguments, expand_macro): Alter signature. - (trace_format): Don't use out-of-scope buffer. - (process_macro): All callers changed. - * m4/utility.c (m4_dump_args): Likewise. - * m4/symtab.c (m4_symbol_value_print): Likewise. - * modules/gnu.c (__file__, __program__, builtin, indir) - (m4symbols, mkdtemp, regexp_compile, regexp_substitute, - renamesyms, patsubst, regexp, regexp_compile): Likewise. - * modules/load.c (m4modules): Likewise. - * modules/m4.c (defn, m4wrap, maketemp, m4_make_temp) - (numb_obstack, ifdef, ifelse, divert, len, substr): Likewise. - * modules/perl.c (perleval): Likewise. - * modules/stdlib.c (getcwd, getenv, getlogin, getpwnam, getpwuid) - (hostname, uname, setenv): Likewise. - * modules/mpeval.c (numb_obstack): Likewise. - * src/freeze.c (dump_symbol_CB): Likewise. - * doc/m4.texinfo (Renamesyms, Dumpdef, Changesyntax): Adjust test. - * tests/builtins.at (mkstemp): Likewise. - * tests/others.at (iso8859): XFAIL this test, now that - length-based handling allows NUL through part but not all of M4. - -2007-11-28 Eric Blake <ebb9@byu.net> - - Stage 3a: cache length, rather than computing it, in libm4. - Cache the length of a token in the input engine and symbol table, - 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: slight improvement, due to fewer function calls. - * m4/m4module.h (struct m4_macro_args): Cache length. - (m4_get_symbol_len, m4_get_symbol_value_len): New accessors. - (m4_set_symbol_value_text): Change signature. - * m4/m4private.h (struct m4_symbol_value): Store string length. - (m4_get_symbol_value_text, m4_get_symbol_value_placeholder) - (m4_set_symbol_value_placeholder): Update accordingly. - (m4_set_symbol_value_text): Change signature. - (m4_get_symbol_value_len): New accessor. - * m4/input.c (struct m4_input_block, string_peek, string_read) - (string_unget, string_print, m4_push_string_finish) - (m4_push_wrapup): Track length of string input. - (m4__next_token): Adjust all users of symbol text to track length, - too. - * m4/macro.c (expand_argument, collect_arguments): Likewise. - * m4/module.c (install_macro_table): Likewise. - * modules/gnu.c (builtin, indir): Likewise. - * modules/m4.c (define, pushdef): Likewise. - * src/main.c (main): Likewise. - * src/freeze.c (reload_frozen_state): Likewise. - * m4/symtab.c (m4_symbol_value_copy): Likewise. - (m4_get_symbol_value_len): New function. - (m4_get_symbol_value_text, m4_get_symbol_value_placeholder) - (m4_set_symbol_value_text, m4_set_symbol_value_placeholder): - Adjust implementation. - -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. - * m4/m4private.h (m4_arg_argc): New fast accessor. - * m4/m4module.h (m4_arg_argc, m4_arg_symbol, m4_is_arg_text) - (m4_is_arg_func, m4_arg_text, m4_arg_len, m4_arg_func): New - prototypes. - (m4_builtin_func, M4BUILTIN, M4BUILTIN_HANDLER, m4_dump_args) - (m4_macro_call): Make argc unsigned. - (M4ARG): Use new accessors. - * modules/m4.c (define, pushdef): Likewise. - (undefine, popdef, ifelse, m4_dump_symbols, defn, undivert) - (traceon, traceoff): Make argc unsigned. - * modules/m4.h (m4_dump_symbols_func): Likewise. - * modules/evalparse.c (m4_evaluate): Likewise. - * modules/gnu.c (builtin, indir): Use new accessors. - (changesyntax): Make argc unsigned. - * modules/perl.c (perleval): Likewise. - * m4/utility.c (m4_dump_args): Use new accessors. - * m4/macro.c (trace_pre): Likewise. - (m4_arg_symbol, m4_arg_argc, m4_is_arg_text, m4_is_arg_func) - (m4_arg_text, m4_arg_len, m4_arg_func): New functions. - (expand_macro, trace_pre, trace_post, m4_macro_call): Update argc - usage. - -2007-11-24 Eric Blake <ebb9@byu.net> - - Stage 1: convert m4_symbol_value** 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. - * ltdl/m4/gnulib-cache.m4: Import flexmember module. - * m4/m4module.h (m4_macro_args): New type, will be opaque to - modules later. - (m4_builtin_func, M4BUILTIN, M4BUILTIN_HANDLER, m4_dump_args) - (m4_macro_call): Alter signature to use m4_macro_args object. - (M4ARG): Redefine to access new struct. - * m4/m4private.h (M4_SYMBOL_COMP): New enumerator. - (struct m4_symbol_chain): New type. - (struct m4_symbol_value): Add chain alternative. - * m4/macro.c (collect_arguments): Build new struct. - (expand_macro, m4_macro_call, process_macro, trace_pre) - (trace_post): Adjust implementation to use it. - * m4/utility.c (m4_dump_args): Likewise. - * modules/gnu.c (builtin, indir): Likewise. - * modules/format.c (format): Likewise. - * modules/m4.h (m4_dump_symbols_func): Likewise. - * modules/m4.c (m4_dump_symbols, define, pushdef, defn, ifelse) - (shift, include, errprint, m4wrap): Likewise. - * modules/evalparse.c (m4_evaluate): Likewise. - - Pass only macro name to utility functions. - * m4/m4module.h (m4_bad_argc, m4_numeric_arg): Adjust signature. - * m4/utility.c (m4_bad_argc, m4_numeric_arg): Adjust - implementation. - * m4/macro.c (m4_macro_call): Adjust callers. - * modules/gnu.c (builtin, debuglen): Likewise. - * modules/m4.c (ifelse, incr, decr, divert, undivert, m4exit) - (substr): Likewise. - * modules/evalparse.c (m4_evaluate): Likewise. - * modules/stdlib.c (setenv, getpwuid, srand): Likewise. - * modules/time.c (ctime, gmtime, localtime, mktime, strftime): - Likewise. - -2007-11-23 Eric Blake <ebb9@byu.net> - - Add macro name to debugfile messages. - * m4/m4module.h (m4_debug_set_output): Add parameter. - * m4/debug.c (m4_debug_set_output, set_debug_file): Pass macro - name through. - * modules/gnu.c (debugfile): Adjust caller. - * modules/m4.c (m4exit): Likewise. - * src/main.c (main): Likewise. - - Factor out handling of macro name in error messages. - * m4/m4module.h (m4_error, m4_error_at_line, m4_warn) - (m4_warn_at_line): Add new parameter. - * m4/utility.c (m4_verror_at_line): New helper method. - (m4_error, m4_error_at_line, m4_warn, m4_warn_at_line): Add new - parameter. - (m4_bad_argc, m4_numeric_arg, m4_parse_truth_arg): All callers - changed. - * m4/debug.c: Likewise. - * m4/input.c: Likewise. - * m4/macro.c: Likewise. - * m4/module.c: Likewise. - * m4/output.c: Likewise. - * m4/path.c: Likewise. - * modules/evalparse.c: Likewise. - * modules/format.c: Likewise. - * modules/gnu.c: Likewise. - * modules/load.c: Likewise. - * modules/m4.c: Likewise. - * modules/mpeval.c: Likewise. - * src/freeze.c: Likewise. - * src/main.c: Likewise. - -2007-11-14 Eric Blake <ebb9@byu.net> - - Handle some defn corner cases differently. - * doc/m4.texinfo (Defn): Update documentation; although this still - doesn't match the branch, since it may be changed before 2.0. - * m4/macro.c (expand_argument): Consistently ignore builtins in - concatenation contexts. - * m4/m4private.h (m4__symbol_type): Fix C89 compliance bug. - -2007-11-13 Eric Blake <ebb9@byu.net> - - 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. - * m4/input.c (pop_input): Add flag parameter and return type. - (next_char): Adjust caller. - (m4_push_string_init): Let go of memory earlier. - -2007-11-07 Eric Blake <ebb9@byu.net> - - * tests/macros.at (Rescanning macros): Test more corner cases. - -2007-11-06 Eric Blake <ebb9@byu.net> - - * build-aux/mkstamp: Rename from ltdl/config/mkstamp. - - * Makefile.am (tests/package.m4): Work around bash bug. - Reported by Ralf Wildenhues. - -2007-11-05 Eric Blake <ebb9@byu.net> - - For consistency with other GNU projects, use build-aux directory. - * configure.ac (AC_CONFIG_AUX_DIR): Change ltdl/config to - build-aux. - * bootstrap (config_aux_dir): Likewise. - * Makefile.am (config_aux_dir): Likewise. - * ltdl/m4/gnulib-cache.m4: Use --aux-dir option. - -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. - * ltdl/config/mailnotify: No longer necessary; git's patch - generation and mail capability is more powerful. - - Update to recent gnulib changes. - * ltdl/m4/gnulib-cache.m4: Replace fprintf-posix, vasprintf-posix, - xprintf, and xvasprintf with xprintf-posix and xvasprintf-posix. - -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. - * m4/m4private.h (m4__next_token): Adjust prototype. - * m4/input.c (m4__next_token): Add new parameter, and improve - error message. - * m4/macro.c (m4_macro_expand_input, collect_arguments): Adjust - callers. - (expand_argument): Likewise, and add parameter. - -2007-10-31 Eric Blake <ebb9@byu.net> - - Test more corner cases. - * tests/macros.at (Rescanning macros): Beef up test. - * doc/m4.texinfo (Changecom): Beef up test. - (Improved foreach): Document alternate foreachq style. - * examples/foreachq3.m4: New file. - * examples/loop.m4: New file. - * Makefile.am (dist_pkgdata_DATA): Distribute them. - -2007-10-28 Eric Blake <ebb9@byu.net> - - More test coverage for autoconf usage patterns. - * doc/m4.texinfo (Shift): Document cond macro, and add new test. - * tests/macros.at (Rescanning macros): New test. - * tests/builtins.at (include): Augment test. - -2007-10-28 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> - - * Makefile.am: Adjust getopt handling to latest gnulib layout. - -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> - - * Makefile.am (dist_pkgdata_DATA): Add examples/capitalize2.m4. - -2007-10-22 Eric Blake <ebb9@byu.net> - - Never let printf failures go undetected. - * ltdl/m4/gnulib-cache.m4: Augment with 'gnulib-tool --import - xprintf'. - * m4/system_.h: Include xprintf.h. - * m4/debug.c (m4_debug_message_prefix, m4_debug_message): Wrap all - use of printf, xprintf. - * m4/input.c [DEBUG_INPUT]: Likewise. - * m4/module.c [DEBUG_MODULES]: Likewise. - * m4/output.c (m4_shipout_text, m4_shipout_int) - (m4_freeze_diversions): Likewise. - * m4/path.c [DEBUG_INCL]: Likewise. - * m4/symtab.c [DEBUG_SYM]: Likewise. - * m4/syntax.c [DEBUG_SYNTAX]: Likewise. - * modules/modtest.c (export_test): Likewise. - * src/freeze.c (produce_resyntax_dump, produce_syntax_dump) - (produce_module_dump, dump_symbol_CB, produce_frozen_state): - Likewise. - * src/main.c (usage): Likewise. - * po/POTFILES.in: Adjust to new file. - * po/Makevars (XGETTEXT_OPTIONS): Likewise. - -2007-10-18 Eric Blake <ebb9@byu.net> - - Fix 'm4 -F file -t undefined'. - * src/freeze.c (produce_symbol_dump): Skip trace placeholders. - * src/freeze.c (dump_symbol_CB): Also skip void symbols. - * tests/freeze.at (reloading unknown builtin): Test for this bug. - * m4/m4module.h (m4_symtab_apply): Add parameter. - * m4/symtab.c (m4_symtab_apply): Ignore trace placeholders when - requested. - (m4_symtab_delete, symtab_dump): Adjust callers. - * modules/m4.c (m4_dump_symbols): Likewise. - -2007-10-09 Eric Blake <ebb9@byu.net> - - Fix regexp regression of 2007-09-29. - * modules/gnu.c (substitute): Allow NULL buf when no - subexpressions were present. - (regexp): Handle \ escapes even with empty regex. - * doc/m4.texinfo (Regexp, Patsubst): Catch this bug. - - Cache regex compilation for another autoconf speedup. - * modules/gnu.c (gnu_buf): Replace... - (REGEX_CACHE_SIZE, regex_cache): ...with new declarations. - (m4_pattern_buffer): Add fields. - (m4_regexp_compile): Rename... - (regexp_compile): ...to this, and drop no_sub parameter. - Implement caching. - (M4FINISH_HANDLER): Clean up entire cache. - (m4_regexp_search): Rename... - (regex_search): ...to this, adjust to new struct contents, and add - no_sub parameter. - (m4_regexp_substitute): Rename... - (regexp_substitute): ...to this. - (substitute, patsubst, regexp, renamesyms): Adjust callers. - -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. - * modules/m4.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. - * modules/gnu.c (regexp, patsubst): Handle empty regex faster. - - * tests/testsuite.at (AT_CHECK_M4): Slight optimization. - -2007-09-24 Eric Blake <ebb9@byu.net> - - Create .gitignore alongside .cvsignore. - * bootstrap (version control): Update to reflect git usage. - -2007-09-13 Eric Blake <ebb9@byu.net> - - * AUTHORS: Fix typo. - -2007-09-12 Gary V. Vaughan <gary@gnu.org> - - Be consistent about using 'module' for m4_module types and - 'handle' for lt_dlhandle types: - - * m4/m4private.h (m4_symbol_value): Rename handle element to - method. Changed all references. - (VALUE_MODULE, SYMBOL_MODULE): Renamed from VALUE_HANDLE and - SYMBOL_HANDLE respectively. Changed all references. - * m4/m4module.h (M4INIT_HANDLER, M4FINISH_HANDLER): Ditto. - * m4/builtin.c (m4_builtin_find_by_name) - (m4_builtin_find_by_func): Use module as the parameter name for - pointers of type 'm4_module'. - * m4/module.c (module_remove, m4_get_module_name) - (install_builtin_table, install_macro_table) - (m4_module_make_resident, m4__module_next, m4_module_refcount): - Ditto. - * src/freeze.c (produce_module_dump): Ditto. - * m4/input.c (m4_input_block): Rename handle element to method. - Changed all references. - * m4/symtab.c (m4__symtab_remove_module_references): Ditto. - * modules/load.c: Use module as the variable name for pointers - of type 'm4_module'. - * modules/m4.c: Ditto. - * modules/perl.c: Ditto. - * modules/shadow.c: Ditto. - -2007-09-07 Eric Blake <ebb9@byu.net> - - Add refcount builtin. - * modules/load.c (refcount): New builtin. - (m4modules): Use correct type. - * doc/m4.texinfo (Refcount): New section. - * m4/m4private.h (struct m4_module): Add refcount member. - (m4_module_refcount) [NDEBUG]: Add faster accessor macro. - * m4/module.c (m4_module_load): Add symbols to table on first - load by m4, regardless of other libltdl loads of same module. - (m4_module_refcount): Use new struct member, rather than relying - on libltdl count which might be inflated by unrelated loads. - (m4__module_interface): Optimize. - (m4__module_next, m4__module_find): Avoid assertions that could - trigger with unrelated libltdl loads. - (m4__module_open): Track m4 load count. - (m4__module_exit): Only unload what m4 loaded. - (module_remove): Track m4 unloads. - * NEWS: Document new builtin. - - More conversion to m4_module*. - * src/freeze.c (produce_module_dump, dump_symbol_CB) - (reload_frozen_state): Use correct type. - * m4/input.c (struct m4_input_block): Likewise. - * m4/symtab.c (dump_symbol_CB): Likewise. - - * AUTHORS: Simplify, to match libtool and autoconf layout. - * THANKS: Sync with branch. - -2007-09-06 Eric Blake <ebb9@byu.net> - - Wrap lt_dlhandle in struct m4_module. - * m4/m4module.h (includes): No longer require clients to know - about lt_dlhandle. - (m4_module): New opaque declaration. - (m4_export): Delete unused type. - (M4INIT_HANDLER, M4FINISH_HANDLER, m4_module_init_func) - (m4_module_finish_func, m4_module_load, m4_get_module_name) - (m4_builtin_find_by_name, m4_builtin_find_by_func): Use new - wrapper. - (m4_module_makeresident, m4_module_refcount): New declarations. - * m4/m4private.h (includes): Move <ltdl.h> here. - (m4_module): New declaration. Simple for now, but intended for - growth. - (m4__module_open, m4__module_next, m4__module_find) - (m4__symtab_remove_module_references): Use new wrapper. - * m4/builtin.c (m4_builtin_find_by_name, m4_builtin_find_by_func): - Likewise. - * m4/module.c (m4_get_module_name, m4_module_import) - (m4_module_load): Likewise. - (install_builtin_table, install_macro_table): Likewise. Also, - change return type since these always returned NULL and no one - used the result. - (m4_module_makeresident, m4_module_refcount): New functions. - (m4_module_unload, m4__module_next, m4__module_find): Use new - wrapper. - (m4__module_open): Populate new wrapper, and associate it with the - lt_dlhandle. - (m4__module_exit): Use new wrapper. - (module_remove): Likewise. Reclaim storage on last use. - (module_close): Delete, and inline into module_remove. - * m4/symtab.c (m4__symtab_remove_module_references): Use new - wrapper. - * modules/load.c (load_init): Use new API. - * modules/m4.c (m4_export_table): Kill unused declaration. - (m4_init): Use new API. - * modules/shadow.c (shadow_init): Use new API. - * src/main.c (main): Adjust callers. - * src/freeze.c (reload_frozen_state): Likewise. - * tests/modules.at (unload load module): New test. - -2007-09-03 Gary V. Vaughan <gary@gnu.org> - - * bootstrap (ltdl/m4/.cvsignore): Add xstrtol module macros. - * src/m4/.cvsignore: Add xstrtol module sources. - -2007-09-03 Gary V. Vaughan <gary@gnu.org> - - Work around a bug in darwin's awk: - - * bootstrap (func_get_translations): Use $AWK instead of raw - `awk' so that the user can use an alternative implementation - if the first awk in PATH doesn't behave as expected. - (func_get_translations): The first awk script mangles the last - entry passed to it for at least the awk implementation shipped - with Darwin 8.10.1. Capture $3 into a variable too to work- - around that problem. - -2007-08-29 Gary V. Vaughan <gary@gnu.org> - - As gnulib xstrtol is only used by main, and unconditionally pulls - in a copy of getopt, undo bootstrap change from 2007-08-11 below, - and copy the xstrtol code into src/ so that main() can use it - without pushing the extra code into libm4: - - * bootstrap (src_modules): Add getopt and xstrtol modules. - * Makefile.am (src_m4_SOURCES): Add xstrtol sources. - * po/POTFILES.in: Move gnu/xstrtol-error.c to src/xstrtol-error.c. - -2007-08-11 Eric Blake <ebb9@byu.net> - - Another upstream xstrtol change. - * po/POTFILES.in: Track changes in files containing messages. - * bootstrap (src_modules): getopt is now pulled into libgnu.a, no - need to grab it separately. - * src/main.c (OPT_STR, LONG_OPT_STR, short_opt_str, OPT_STR_INIT): - No longer needed. - (size_opt): Adjust to latest xstrtol interface. - -2007-08-10 Eric Blake <ebb9@byu.net> - - Documentation improvements. - * doc/m4.texinfo (Defn): Resync with branch. - (Compatibility, Extensions): Sync with branch. - -2007-08-07 Eric Blake <ebb9@byu.net> - - Adjust to gnulib xstrtol changes. - * src/main.c (size_opt): Adjust signature, so that error strings - are easier to translate. - (OPT_STR, LONG_OPT_STR, short_opt_str, OPT_STR_INIT): New macros - for tracking long options. - (main): Track which long option was used. - * tests/options.at (--debuglen, --nesting-limit): Adjust to change - in error message. - (deprecated options): Test that --arglength spelling shows up in - error message. - -2007-08-06 Eric Blake <ebb9@byu.net> - - Normalize all GPL license notices. - * m4/COPYING.LIB: Delete - libm4 is not distributed under LGPLv2 - at this time. - * Makefile.am: Update license wording. - * bootstrap: Likewise. - * commit: Likewise. - * configure.ac: Likewise. - * ltdl/config/mailnotify: Likewise. - * ltdl/config/mkstamp: Likewise. - * ltdl/m4/debug.m4: Likewise. - * ltdl/m4/gmp.m4: Likewise. - * ltdl/m4/m4-error.m4: Likewise. - * ltdl/m4/m4-getopt.m4: Likewise. - * ltdl/m4/m4-gettext.m4: Likewise. - * ltdl/m4/m4-obstack.m4: Likewise. - * ltdl/m4/m4-regex.m4: Likewise. - * ltdl/m4/stackovf.m4: Likewise. - * m4/builtin.c: Likewise. - * m4/debug.c: Likewise. - * m4/hash.c: Likewise. - * m4/hash.h: Likewise. - * m4/input.c: Likewise. - * m4/m4.c: Likewise. - * m4/m4module.h: Likewise. - * m4/m4private.h: Likewise. - * m4/macro.c: Likewise. - * m4/module.c: Likewise. - * m4/output.c: Likewise. - * m4/path.c: Likewise. - * m4/resyntax.c: Likewise. - * m4/symtab.c: Likewise. - * m4/syntax.c: Likewise. - * m4/system_.h: Likewise. - * m4/utility.c: Likewise. - * modules/evalparse.c: Likewise. - * modules/format.c: Likewise. - * modules/gnu.c: Likewise. - * modules/import.c: Likewise. - * modules/load.c: Likewise. - * modules/m4.c: Likewise. - * modules/m4.h: Likewise. - * modules/modtest.c: Likewise. - * modules/mpeval.c: Likewise. - * modules/perl.c: Likewise. - * modules/shadow.c: Likewise. - * modules/stdlib.c: Likewise. - * modules/time.c: Likewise. - * modules/traditional.c: Likewise. - * po/Makevars: Likewise. - * src/freeze.c: Likewise. - * src/m4.h: Likewise. - * src/main.c: Likewise. - * src/stackovf.c: Likewise. - * tests/builtins.at: Likewise. - * tests/freeze.at: Likewise. - * tests/generate.awk: Likewise. - * tests/m4.in: Likewise. - * tests/macros.at: Likewise. - * tests/modules.at: Likewise. - * tests/options.at: Likewise. - * tests/others.at: Likewise. - * tests/stackovf.test: Likewise. - * tests/testsuite.at: Likewise. - -2007-07-22 Eric Blake <ebb9@byu.net> - - Fix diversions on NetBSD, when fopen(name,"a+") seeks to end. - * m4/output.c (m4_tmpopen): Explicitly seek to beginning. - * tests/builtins.at (divert): Enhance test to cover this. - * THANKS: Update. - Reported by Thomas Klausner. - -2007-07-20 Eric Blake <ebb9@byu.net> - - Fix 'make distcheck' issues. - * bootstrap: Add more files that might be more up-to-date in - gnulib. - * Makefile.am (EXTRA_DIST): No longer distribute removed diff. - * config/m4/gnulib-cache.m4: Update to latest gnulib. - -2007-07-16 Eric Blake <ebb9@byu.net> - - * po/POTFILES.in: Track recent translation additions from gnulib - updates. - -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> - - Upgrade to GPLv3, and document 1.4.10. - * bootstrap: Adjust to GPLv3. - (func_update): Port from branch. - * ltdl/m4/gnulib-cache.m4: Augment with 'gnulib-tool - --local-dir=local --import gpl-3.0'. - * doc/m4.texinfo (History): Mention 1.4.11. - (Copying This Package): New appendix. - * NEWS: Document 1.4.10. - * local/doc/gpl-3.0.texi.diff: New file. - * Makefile.am: Update license. - (doc_m4_TEXINFOS, EXTRA_DIST): Distribute additions. - * commit: Update license. - * configure.ac: Likewise. - * ltdl/config/mailnotify: Likewise. - * ltdl/config/mkstamp: Likewise. - * ltdl/m4/debug.m4: Likewise. - * ltdl/m4/gmp.m4: Likewise. - * ltdl/m4/m4-error.m4: Likewise. - * ltdl/m4/m4-getopt.m4: Likewise. - * ltdl/m4/m4-gettext.m4: Likewise. - * ltdl/m4/m4-obstack.m4: Likewise. - * ltdl/m4/m4-regex.m4: Likewise. - * ltdl/m4/stackovf.m4: Likewise. - * m4/builtin.c: Likewise. - * m4/debug.c: Likewise. - * m4/hash.c: Likewise. - * m4/hash.h: Likewise. - * m4/input.c: Likewise. - * m4/m4.c: Likewise. - * m4/m4module.h: Likewise. - * m4/m4private.h: Likewise. - * m4/macro.c: Likewise. - * m4/module.c: Likewise. - * m4/output.c: Likewise. - * m4/path.c: Likewise. - * m4/resyntax.c: Likewise. - * m4/symtab.c: Likewise. - * m4/syntax.c: Likewise. - * m4/system_.h: Likewise. - * m4/utility.c: Likewise. - * modules/evalparse.c: Likewise. - * modules/format.c: Likewise. - * modules/gnu.c: Likewise. - * modules/import.c: Likewise. - * modules/load.c: Likewise. - * modules/m4.c: Likewise. - * modules/m4.h: Likewise. - * modules/modtest.c: Likewise. - * modules/mpeval.c: Likewise. - * modules/perl.c: Likewise. - * modules/shadow.c: Likewise. - * modules/stdlib.c: Likewise. - * modules/time.c: Likewise. - * modules/traditional.c: Likewise. - * po/Makevars: Likewise. - * src/freeze.c: Likewise. - * src/m4.h: Likewise. - * src/main.c: Likewise. - * src/stackovf.c: Likewise. - * tests/builtins.at: Likewise. - * tests/freeze.at: Likewise. - * tests/generate.awk: Likewise. - * tests/m4.in: Likewise. - * tests/macros.at: Likewise. - * tests/modules.at: Likewise. - * tests/options.at: Likewise. - * tests/others.at: Likewise. - * tests/stackovf.test: Likewise. - * tests/testsuite.at: Likewise. - -2007-07-09 Eric Blake <ebb9@byu.net> - - * modules/format.c (format): Avoid undefined behavior with %c. - -2007-07-01 Gary V. Vaughan <gary@gnu.org> - - The translation project has moved. - * bootstrap (func_get_translations): Use the new translation - project url. - (TP_URL): Removed. - -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> - - Add extension to divert builtin. - * modules/m4.c (builtin_divert): Immediately divert second - argument. - * m4/output.c (m4_output_text): Allow 0 length. Fixes regression - from two days ago. - (m4_shipout_text): Short-circuit on zero length. - * tests/freeze.at (loading format 2): Expand test to catch - regression. Also check out-of-range version. - * tests/builtins.at (divert): Expand test to check corner cases - of extension. - * doc/m4.texinfo (Divert): Document the extension. - * NEWS: Likewise. - Reported by Daniel Richard G. - -2007-05-30 Eric Blake <ebb9@byu.net> - - Port format improvements from branch. - * doc/m4.texinfo (History): Mention upcoming 1.4.10 release. - (Format): Enhance section. - * modules/format.c (format): Accept %'hhd, and issue warnings on - unrecognized specifiers. - * modules/gnu.c (builtin_format): Adjust how format is called. - -2007-05-28 Eric Blake <ebb9@byu.net> - - * tests/options.at (--syncoutput): Add xfailed test. - - Fix sync line interaction with multiline comments. - * doc/m4.texinfo (Preprocessor features): Improve documentation. - (Syncoutput): Improve testsuite. - (Incompatibilities): Add testcase, and document bug. - * src/freeze.c (reload_frozen_state): Don't interfere with - synclines when reloading state. - * m4/input.c (m4__next_token): Report line where multiline tokens - start. - * m4/m4private.h (m4__token_type): Add parameter. - * m4/m4module.h (m4_output_text): Export. - (m4_shipout_text): Add parameter. - * src/macro.c (m4_macro_expand_input, expand_token) - (expand_argument): Adjust callers so that line is passed from - input to output. - * m4/output.c (output_text): Rename... - (m4_output_text): ...to this, and export. - (m4_insert_file, insert_diversion_helper): Update callers. - (m4_shipout_text): Take new parameter for start line of token. - Output at most one syncline per token. - Reported by Sergey Poznyakoff. - - Fix large diversion corner cases. - * tests/freeze.at (large diversion): New test. - * m4/output.c (m4_tmpfile, m4_tmpopen): Simplify use of errno. - (make_room_for): Use NULL, not 0, for pointers. - (m4_freeze_diversions): Allow freezing large diversions. - (insert_diversion_helper): Avoid using rewind. - - Also run gnulib unit tests during make check. - * ltdl/m4/gnulib-cache.m4: Augment with 'gnulib-tool - --tests-base=tests/gnu --with-tests'. - * configure.ac (AC_CONFIG_FILES): Build tests/gnu testdir. - * Makefile.am (SUBDIRS): Run gnulib tests before ours. - -2007-05-25 Eric Blake <ebb9@byu.net> - - * m4/system_.h: Include <stdint.h>, for intmax_t. - * THANKS: Update. - Reported by Daniel Richard G. - -2007-05-24 Eric Blake <ebb9@byu.net> - - Provide consistent shift semantics regardless of hardware. - * modules/m4.c (numb_lshift, numb_rshift, numb_urshift): Mask - before shifting. - (number, unumber): Always use [u]intmax_t. - Reported by Gary V. Vaughan. - - Support POSIX flush semantics on all platforms. - * modules/m4.c (m4_sysval_flush): Rely on gnulib. - * ltdl/m4/gnulib-cache.m4: Fix typo in previous commit. - - Work around cygwin and mingw fseeko bugs. - * ltdl/m4/gnulib-cache.m4: Augment with 'gnulib-tool --import - fseeko'. - * modules/m4.c (m4_sysval_flush): Prefer fseeko over fseek. - -2007-04-25 Eric Blake <ebb9@byu.net> - - Test that regression in 1.4.9's eval doesn't recur. - * doc/m4.texinfo (Eval): Check negative division. - * THANKS: Update. - -2007-04-12 Eric Blake <ebb9@byu.net> - - Allow for running test in sticky or setgid directory. - * tests/builtins.at (mkdtemp): Adjust test. - - Don't test for broken sed too soon. - * tests/others.at (stdin seekable): Rearrange subtests. - - Work around 'stdin seekable' shortcoming on glibc. - * ltdl/m4/gnulib-cache.m4: Use closein instead of closeout. - * tests/others.at (stdin closed): Adjust to new output. - * src/main.c (process_file): No need to return anything. - (main): Use close_stdin instead of close_stdout. - Reported by Ralf Wildenhues. - - Enable autobuild usage. - * ltdl/m4/gnulib-cache.m4: Augment with 'gnulib-tool --import - autobuild'. - * configure.ac (AB_INIT): Output autobuild information. - -2007-04-11 Eric Blake <ebb9@byu.net> - - Address testsuite shortcoming in 'stdout full' on glibc. - * tests/others.at (stdout full): Adjust expected output when more - than 1k text is printed to /dev/full. - Reported by Ralf Wildenhues. - -2007-04-10 Eric Blake <ebb9@byu.net> - - * tests/macros.at (Arity and defn): Fix quoting. - -2007-04-09 Eric Blake <ebb9@byu.net> - - Address failure of 'seekable stdin' on Mac OS X. - * ltdl/m4/gnulib-cache.m4: Augment with 'gnulib-tool --import - fflush'. - -2007-04-07 Eric Blake <ebb9@byu.net> - - Include <config.h> first in all C files, and not in headers. - Fixes regression for --disable-assert builds from 2007-04-02. - * src/m4.h (includes): Don't include config.h here. - * m4/m4private.h (includes): Likewise. - * m4/builtin.c: Include config.h before anything else. - * m4/debug.c: Likewise. - * m4/hash.c: Likewise. - * m4/input.c: Likewise. - * m4/m4.c: Likewise. - * m4/macro.c: Likewise. - * m4/module.c: Likewise. - * m4/symtab.c: Likewise. - * m4/syntax.c: Likewise. - * m4/utility.c: Likewise. - * src/freeze.c: Likewise. - * src/stackovf.c: Likewise. - -2007-04-03 Eric Blake <ebb9@byu.net> - - * modules/m4.c (numb_ratio, numb_divide, numb_modulo): Avoid - SIGFPE on x86 architectures. - Reported by Ralf Wildenhues. - -2007-04-02 Eric Blake <ebb9@byu.net> - - Fix warnings from last commit. - * ltdl/m4/gnulib-cache.m4: Augment with 'gnulib-tool --import - fprintf-posix sprintf-posix'. - * m4/macro.c (expand_macro, trace_format): Use correct specifier - for size_t. - (process_macro): Avoid negative array index. - * src/freeze.c (produce_resyntax_dump, produce_module_dump) - (dump_symbol_CB, produce_frozen_state): Use correct specifier for - size_t. - -2007-04-02 Gary V. Vaughan <gary@gnu.org> - - Get rid of the last 'differs in signedness' compiler warnings: - - * m4/macro.c (process_macro): m4_get_symbol_value_text() returns - a regular 'char *', so variables to store the return address, - and iterate through it should be regular 'char *' too. - * m4/input.c (m4_input_block): The start and current members of - the string part of this union store regular 'char *' types, so - they should be regular 'char *' types too. - -2007-04-02 Gary V. Vaughan <gary@gnu.org> - - M4 was designed to have a small number of header files defining - the interfaces to several source files each. Keeping this in - mind allows us to tidy things up considerably. Having done this, - it becomes clear that some of the installed headers reference - other headers which are not installed (but that's another patch): - - * m4/m4private.h (stdio--.h, stdlib--.h, unistd--.h): Moved from - here... - * m4/system_.h (gnu/stdio--.h, gnu/stdlib--.h, gnu/unistd--.h): - ...to here, so client modules can benefit too. - (assert.h, errno.h, limits.h, sys/stat.h): Include one here at the - lowest level to save doing it multiple times elsewhere. - * m4/debug.c (stdio.h): Removed. The portable <gnu/stdio--.h> - is already included via m4private.h. - * modules/time.c (stdio.h): Ditto. - * modules/gnu.c (stdlib.h): Ditto resp <gnu/stdlib--.h>. - * modules/stdlib.c (stdlib.h, unistd.h): Ditto resp <gnu/stdlib--.h> - and <gnu/unistd--.h>, - * m4/m4private.h (m4module.h): Use angle brackets for an installed - file. - * m4/hash.h (system.h): Ditto. - * modules/gnu.c (progname.h): Removed. - * src/freeze.c (m4/system.h, m4private.h): Already included vi m4.h. - * m4/m4private.h (assert.h, errno.h): Already included via - m4/m4module.h. - * m4/input.c (ctype.h): Ditto. - * m4/module.c (ltdl.h): Ditto. - * m4/output.c (errno.h, limits.h, stdio.h, sys/types.h, sys/stat.h) - (unistd.h): Ditto. - * m4/path.c (config.h, stdlib.h): Ditto. - * m4/utility.c (config.h): Ditto. - * modules/evalparse.c (assert.h, ctype.h): Ditto. - * modules/gnu.c (assert.h, ctype.h, errno.h): Ditto. - * modules/import.c (assert.h): Ditto. - * modules/m4.c (assert.h, errno.h): Ditto. - * modules/modtest.c (assert.h): Ditto. - * modules/stdlib.c (sys/types.h): DittAo. - * src/m4.h (ctype.h, errno.h, string.h, sys/types.h, ltdl.h): - Ditto. - * src/stackovf.c (assert.h): Ditto. - * modules/gnu.c (m4/m4module.h, m4private.h): Build using the faster - private interfaces when NDEBUG is defined. - * modules/import.c (m4/m4module.h, m4private.h): Ditto. - * modules/load.c (m4/m4module.h, m4private.h): Ditto. - * modules/m4.c (m4/m4module.h, m4private.h): Ditto. - * modules/modtest.c (m4/m4module.h, m4private.h): Ditto. - * modules/mpeval.c (m4/m4module.h, m4private.h): Ditto. - * modules/perl.c (m4/m4module.h, m4private.h): Ditto. - * modules/shadow.c (m4/m4module.h, m4private.h): Ditto. - * modules/time.c (m4/m4module.h, m4private.h): Ditto. - * modules/traditional.c (m4/m4module.h, m4private.h): Ditto. - * src/m4.h (locale.h): Moved from here... - * src/main.h: ...to here. - (m4private.h): Already included via m4.h. - * src/stackovf.c (m4private.h): Ditto. - -2007-03-28 Gary V. Vaughan <gary@gnu.org> - - * Makefile.am (stamp-vcl): Removed. - (CONFIG_STATUS_DEPENDENCIES): Depend directly on ChangeLog. - -2007-03-28 Eric Blake <ebb9@byu.net> - - * src/main.c (usage): Improve note to TRANSLATORS. - * m4/system_.h (EXIT_FAILURE): Reflect gnulib changes. - - * tests/builtins.at (__m4_version__): Fix bug when TIMESTAMP is - empty. - -2007-03-24 Eric Blake <ebb9@byu.net> - - * m4/output.c (m4_output_init): Update to latest gnulib. - * bootstrap (ltdl/m4/.cvsignore): No longer track generated - .cvsignore in CVS. - * NEWS: Reflect release of 1.4.9. - * THANKS: Update. - -2007-03-07 Eric Blake <ebb9@byu.net> - - * AUTHORS: Update - - Exercise gnulib's new POSIX *printf modules. - * ltdl/m4/gnulib-cache.m4: Augment with 'gnulib-tool --import - vasprintf-posix'. - * modules/format.c (format): Support %a and %A. - * doc/m4.texinfo (Format): Test this addition. - * NEWS: Document this addition. - -2007-03-03 Eric Blake <ebb9@byu.net> - - * m4/input.c (m4__next_token): Fix synclines when in batch mode. - * doc/m4.texinfo (M4exit): Synch another section. - (Syncoutput): Make similar to other sections. - -2007-03-01 Eric Blake <ebb9@byu.net> - - * doc/m4.texinfo: Improve the indices. - (Concept index): Rearrange to be last. - (Sysval): Merge from branch. - - * doc/m4.texinfo (Syscmd, Esyscmd): Merge more doc sections. - -2007-02-28 Eric Blake <ebb9@byu.net> - - POSIX XCU ERN 137 was approved. - * modules/mpeval.c (numb_extension): Delete. - * modules/m4.c (numb_extension): Likewise. - * modules/evalparse.c (comma_term, condition_term): Always - implement ?: and , operators. - * m4/symtab.c: Update comment to match reality. - * src/freeze.c (produce_frozen_state, reload_frozen_state): Avoid - dereferencing context directly when accessor exists. - * src/main.c (usage): Prefer GNU_M4 over EMACS. - (struct macro_definition): Rename... - (struct deferred): ...to match usage. All uses changed. - * doc/m4.texinfo (Eval): Document this change. - (Operation modes, Changeresyntax): Fix wording to prefer GNU_M4 - over emacs. - (Preprocessor features, Changesyntax): Fix inaccuracies. - * NEWS: Import branch NEWS items for 1.4.x series. Document - change in eval. - - POSIX XCU ERN 118 was approved. - * modules/m4.c (define): Kill posixly_correct distinction in - define behavior, since POSIX says GNU behavior complies. - * tests/builtins.at (define): Restore original semantics. - * doc/m4.texinfo (Pushdef): Document portability issues with - define. - (Incompatibilities): Clean up wording of what POSIX requires. - * NEWS: Document this. - -2007-02-26 Eric Blake <ebb9@byu.net> - - Re-enable clean bootstrap on cygwin. - * Makefile.am (AM_LDFLAGS): For now, export all symbols from - modules, since otherwise we run afoul of current libtool - limitations on cygwin and mingw. - -2007-02-25 M. Levinson <levinsm@users.sourceforge.net> (tiny change) - - * src/freeze.c (reload_frozen_state): Avoid dereferencing freed - memory. Fixes regression introduced 2007-01-20. - -2007-02-25 Eric Blake <ebb9@byu.net> - - * tests/freeze.at (loading format 2): Augment test to catch - regression introduced on 2007-01-20. - * THANKS: Update. - Reported by M. Levinson. - - * m4/system_.h (includes, EXIT_SUCCESS, EXIT_FAILURE): Adjust to - latest gnulib. - -2007-02-05 Eric Blake <ebb9@byu.net> - - * tests/options.at (--fatal-warnings): New test. - * tests/others.at (stdin seekable): Exit on error. - * m4/m4private.h (M4_OPT_WARN_EXIT_BIT): New bit. - (m4_get_warnings_exit_opt): Access it. - * m4/m4module.h (m4_context_opt_bit_table): Access it. - * m4/utility.c (m4_error, m4_error_at_line): Only force an exit - on -EE. - (m4_warn, m4_warn_at_line): Change exit status on -E, and force - exit on -EE. - * src/m4.c (usage): Document new -E behavior. - (main): Make -E an additive option. - * doc/m4.texinfo (Operation modes): Document the change. - Reported by Ralf Wildenhues. - - * tests/others.at (stdin seekable): Fix bug in test. - * ltdl/m4/gnulib-cache.m4: Gnulib module strstr no longer exists. - - * m4/input.c (struct m4_input_block): Remove unused field traced. - -2007-02-03 Eric Blake <ebb9@byu.net> - and Bruno Haible <bruno@clisp.org> (tiny change) - - * doc/m4.texinfo (Input processing, Quoting Arguments): Beef up - the examples. - Reported by Bruno Haible. - -2007-01-31 Eric Blake <ebb9@byu.net> - - * m4/resyntax.c (m4_regexp_syntax_encode): Detect allocation - failure. - -2007-01-26 Eric Blake <ebb9@byu.net> - - * m4/symtab.c (includes): Adjust to latest gnulib. - * modules/m4.c (includes): Likewise. - -2007-01-23 Eric Blake <ebb9@byu.net> - - * m4/m4module.h (M4_SYNTAX_ASSIGN): Delete this unused - extension to make enough room. - (M4_SYNTAX_IGNORE): Change value to zero, since the (commented) - code in input.c special cases this category. - (M4_SYNTAX_LBRACE, M4_SYNTAX_RBRACE): New values in preparation - for define(eleventh,${11}) extension. - * m4/syntax.c: Update comments accordingly. - (m4_syntax_create, m4_syntax_code): Handle { and }. - * m4/input.c (m4__next_token): Likewise. - * src/freeze.c (produce_frozen_state): Support new categories. - (reload_frozen_state): When loading version 1, disable syntax - features not present in 1.4.x. - * tests/freeze.at: Sort and rename existing tests. - (loading format 1): Ensure we don't break v1 frozen files that - used raw ${. - (loading format 2, reloading changecom, reloading changesyntax): - New tests. - * doc/m4.texinfo (Changesyntax, Frozen file format 1): Document - the new syntax categories. - (Arguments): Update the FIXME comment. - (M4wrap): Merge examples from branch, before worrying about fixing - m4wrap to obey POSIX. - (Using frozen files): Start merging from branch. - * NEWS: Update. - -2007-01-20 Eric Blake <ebb9@byu.net> - - * src/freeze.c (produce_char_dump): Delete. Replace with... - (produce_mem_dump): ...this new function, to encode more strings. - Also make the coding easier to read and slightly more compact. - (produce_syntax_dump): Only dump non-default syntax codes. - (produce_module_dump, dump_symbol_CB, produce_frozen_state): - Encode non-ASCII characters in user-supplied strings. - (GET_STRING): Accept escape sequences in version 2. - * NEWS: Document this change. - * TODO: Update. - -2007-01-16 Eric Blake <ebb9@byu.net> - - Port patch from branch for stack overflow detection on BSD/OS. - * ltdl/m4/stackovf.m4 (M4_SYS_STACKOVF): Check for stack_t.ss_sp. - * src/stackovf.c (setup_stackovf_trap) [HAVE_SIGALTSTACK && - ! HAVE_STACK_T_SS_SP]: Use this check. - Reported by Chris McGuire. - -2007-01-15 Eric Blake <ebb9@byu.net> - - * tests/builtins.at (__m4_version__): New test. - * modules/traditional.c (m4_macro_table): Provide windows and os2 - macros, as appropriate. Add __traditional__ macro. - * modules/mpeval.c (m4_macro_table): Name the macro __mpeval__, - not __gmp__, to match module name. - * modules/load.c (m4_macro_table): Name the macro __load__, not - __modules__, to match module name. - * doc/m4.texinfo (History, Shell commands, Platform macros): Merge - from the branch. - (Standard Modules): Improve wording. - (Incompatibilities): Move platform macros into their own node. - (Load, Unload): Use actual examples. - * NEWS: Document this change. - * THANKS: Update. - -2007-01-13 Eric Blake <ebb9@byu.net> - - * doc/m4.texinfo (Mpeval): Add tests. - * tests/testsuite.at (AT_CHECK_GMP): New filter, factored from... - * tests/builtins.at (gmp): ...here. Rename test to... - (mpeval): ...this. - * tests/generate.awk (new_test): Filter out mpeval tests when gmp - is not available. - * m4/m4module.h (m4_get_no_gnu_extensions_opt): Merge - no_gnu_extensions with posixly_correct_opt, since they were set in - sync. - * m4/m4private.h (struct m4): Remove no_gnu_extensions. - * src/main.c (main): Update caller. - * src/freeze.c (reload_frozen_state): Likewise. - * modules/m4.c (m4wrap): Likewise. - -2007-01-12 Eric Blake <ebb9@byu.net> - - * m4/syntax.c (m4_set_comment): XCU ERN 131 was approved by - POSIX, so update the comment. - * doc/m4.texinfo (Inhibiting Invocation): XCU ERN 130 was - approved by POSIX, so we can always have blind macros, even when - POSIXLY_CORRECT. - (Ifelse): Mention the term `blind builtin'. - -2007-01-08 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> - - * doc/m4.texinfo: Fix a couple of typos. - -2007-01-08 Eric Blake <ebb9@byu.net> - - * ltdl/m4/gnulib-cache.m4: Update for new year. - * ltdl/m4/gmp.m4 (_M4_LIB_GMP): Cover all error cases. - Reported by Ralf Wildenhues. - -2007-01-06 Eric Blake <ebb9@byu.net> - - * m4/m4private.h (to_uchar): Move... - * m4/m4module.h: here, so modules can use it. - * src/main.c (usage, long_options): Support --posix as a synonym - for --traditional. - * modules/m4.c (numb_invert): Detect unsupported x**-y. - (numb_incr, numb_urshift, numb_extension): New macros. - (numb_obstack): Port patch from branch to support radix 1 output. - * modules/mpeval.c (numb_obstack): Use \ for ratios. - (numb_incr, numb_urshift, numb_extension): New macros. - (mpq2mpz): Warn rather than error. - * modules/evalparse.c (URSHIFT, NEGATIVE_EXPONENT): New - enumerators. - (eval_error): Rearrange, so that all ignorable errors are less - than SYNTAX_ERROR. - (eval_text, last_text): Obey C++ type safety rules. - (numb_pow): Change return type. - (exp_term): Adjust caller. - (m4_evaluate): Fail on bad exponent. - (logical_or_term, logical_and_term): Ignore failed ** in short - circuit. - (eval_lex): Fix typos when detecting <<= and >>=. Use \ instead - of : for ratio. Support >>>, ,, and ?:. Port patch from branch - to parse radix 1 numbers. - (condition_term, comma_term): New parse functions. - (shift_term): Support >>>. - (m4_evaluate): Port patch from branch to output radix 1 numbers. - Warn instead of error for most parse problems. - * doc/m4.texinfo (Limits control, Eval): Document these changes. - * NEWS: Document new operators and new command line option. - -2007-01-04 Eric Blake <ebb9@byu.net> - - * configure.ac (AC_SYS_LARGEFILE): Guarantee large file support. - -2007-01-03 Eric Blake <ebb9@byu.net> - - * doc/m4.texinfo (Format, Incr): More merges. - (Eval): Ensure C precedence rules are met. - * modules/evalparse.c (BADOP, INVALID_OPERATOR): New enumerators. - (not_term, logical_not_term): Delete; these are same precedence - as other unary operators. - (equality_term): New; these are lower precedence than relational - operators. - (eval_lex, simple_term, m4_evaluate): Recognize forbidden C - operators for better error messages. - (logical_or_term, logical_and_term): Short-circuit out the error - of division by zero. - (unary_term): Allow consecutive unary operators. - * modules/m4.c (int2numb, numb2int): Delete; these potentially - truncate bits. - (numb_not, numb_eor, numb_ior, numb_and): Update callers. - * modules/mpeval.c (reduce1, reduce2): Protect macros better. - * NEWS: Document this change. - -2006-12-27 Eric Blake <ebb9@byu.net> - - * doc/m4.texinfo (Substr, Patsubst): Merge more sections from the - branch. - * modules/m4.c (substr): Merge from branch. - -2006-12-26 Eric Blake <ebb9@byu.net> - - * doc/m4.texinfo (Changesyntax): Check for regressions with - changesyntax(W=...). - -2006-12-22 Eric Blake <ebb9@byu.net> - - * m4/m4module.h (m4_set_syntax): Change signature. - * modules/gnu.c (m4_resyntax_encode_safe): Reduce error to - warning. - (changesyntax): Likewise, and update caller. - * m4/m4private.h (m4_syntax_table): Add orig member. - * m4/syntax.c (m4_set_quotes, m4_set_comment): Merge from branch. - Don't set is_single_quotes and is_single_comments when the begin - character is shadowed by another syntax type. - (m4_syntax_create): Populate default syntax table. - (add_syntax_attribute): Don't lose quote assignment. - (remove_syntax_attribute): Only allow removing rquote or ecomm. - (add_syntax_set, subtract_syntax_set, set_syntax_set) - (reset_syntax_set): New helper routines. - (m4_set_syntax): Alter semantics - NUL key reverts entire syntax - to default, and empty chars reverts that key to default. - (check_is_single_quotes, check_is_single_comments): New helper - routines. - * modules/m4.c (changecom): Merge from branch. - * m4/input.c (m4__next_token): Rearrange token recognition order - to macro, quote, comment, in order to match traditional - implementations. - * src/freeze.c (reload_frozen_state): Update caller. - * doc/m4.texinfo (Changequote, Changecom): Merge from branch, with - modifications. - (Changeresyntax): Revise to match style of surrounding sections - and add more examples. - (Changesyntax): Likewise, and update to new semantics. - * NEWS: Document this change. - - * doc/m4.texinfo (Operation modes): Avoid underfull hbox. - (M4wrap, Eval, Errprint): Fix typos. - (Divnum): Not necessary to redivert in example. - -2006-12-21 Eric Blake <ebb9@byu.net> - - * doc/m4.texinfo (Len, Index macro, Regexp): More section merging - from branch. - -2006-12-19 Eric Blake <ebb9@byu.net> - - * modules/m4.h (m4_sysval_flush_func): Adjust prototype. - * modules/m4.c (m4_sysval_flush): Add parameter, so that m4exit - can track write errors without all other callers warning multiple - times. - (sysval_flush_helper): New function. - (dumpdef, syscmd, errprint, m4exit): Adjust callers. - * modules/gnu.c (esyscmd): Likewise. - * tests/others.at (stdout closed, stdout full): Error message - update. - -2006-12-16 Eric Blake <ebb9@byu.net> - - * src/main.c: Fix missing include. - - * src/main.c (main): Check for errors when closing stdin. - * modules/m4.c (m4exit): Missed part of previous patch: flush - stdin before a successful exit. - Reported by Ralf Wildenhues. - -2006-12-14 Eric Blake <ebb9@byu.net> - - * modules/m4.c (m4_sysval_flush): Flush stdin before exiting, as - required by POSIX. - * tests/others.at (stdin seekable): New test. - -2006-12-09 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> - - * doc/m4.texinfo: Fix some typos. - -2006-12-04 Eric Blake <ebb9@byu.net> - - * doc/m4.texinfo (Undivert, Divnum, Cleardivert): Merge more doc - sections. - (Modules): Make style consistent. - -2006-11-16 Eric Blake <ebb9@byu.net> - - * bootstrap: Relax m4 requirement, thanks to... - * configure.ac (Gettext support): ...this workaround to the 1.4.4 - bug. Undoes restriction added on 2006-11-09. - - * tests/builtins.at (esyscmd, syscmd): Redo, since spilled - diversions are now closed when not active. - (divert): Remove check now in the manual. - * tests/others.at (stderr closed): Likewise. - (stdout closed): Add a check. - * doc/m4.texinfo (Include, Search Path, Diversions, Divert): Sync - more docs with branch. - -2006-11-14 Eric Blake <ebb9@byu.net> - - Remerge sparse diversion handling from branch. - * ltdl/m4/gnulib-cache.m4: Replace avltree-list with - avltree-oset. - * m4/output.c (diversion_table): Change type to gl_oset_t. - (m4_output_init, m4_output_exit, cleanup_tmpfile, make_room_for) - (m4_make_diversion, insert_diversion_helper, m4_insert_diversion) - (m4_undivert_all, m4_freeze_diversions): Adjust all callers. - (div0, diversion_storage): New variables. - (diversions, equal_diversion_CB): Deleted. - (threshold_diversion_CB): New callback. - (m4_tmpname, m4_tmpopen, m4_tmpclose, m4_tmpremove): New - functions. - (m4_tmpfile): Move cloexec action here. - - * m4/resyntax.c (m4_regexp_syntax_encode): Avoid bug with signed - char. - -2006-11-13 Eric Blake <ebb9@byu.net> - - Add several new command line options. - * src/main.c (usage): Update. - (OPTSTRING, long_options): Add --pushdef, --popdef, --gnu, - --traceon, --traceoff, --syncoutput, --warnings, --unload-module. - Make --regexp-syntax argument optional. - (main): Support new options. Fix regression in interactive - behavior from Nov 8. - * m4/m4private.h (M4_OPT_SYNCOUTPUT_BIT): Rename from - M4_OPT_SYNC_OUTPUT_BIT. - * m4/m4module.h (m4_context_opt_bit_table): Rename sync_output to - syncoutput, to match option. - (m4_parse_truth_arg): New prototype. - * m4/utility.c (m4_parse_truth_arg): Implement it. - * m4/output.c (m4_shipout_text): Adjust sync_output caller. - * modules/gnu.c (syncoutput): Adjust sync_output caller, and use - m4_parse_truth_arg. - * doc/m4.texinfo (Operation modes, Dynamic loading features) - (Preprocessor features, Limits control, Debugging options) - (Command line files): Update documentation. - * tests/builtins.at (mkstemp): Simplify. - * tests/macros.at (Command line pushdef): New test. - (Command line define): Improve. - * tests/options.at (--traceon and --traceoff, --syncoutput): New - tests. - (POSIXLY_CORRECT): Likewise. - (deprecated options): Augment. - (--regexp-syntax): Update, now that -r takes optional arg. - * NEWS: Reformat. Document new options. - -2006-11-11 Eric Blake <ebb9@byu.net> - - One step closer to allowing C++ compilation - don't blindly - convert between char* and unsigned char*. - * m4/m4module.h (m4_set_syntax): Change signature. - * m4/m4private.h (m4_string): Use signed char. - (m4_get_syntax_lquote, m4_get_syntax_rquote, m4_get_syntax_bcomm) - (m4_get_syntax_ecomm): No longer a need to cast. - * m4/syntax.c (m4_set_syntax, m4_syntax_create, m4_set_quotes): - Reflect this change. - * m4/macro.c (expand_argument): Simplify. - (expand_token): Use proper type. - * src/freeze.c (reload_frozen_state): Likewise. - * m4/input.c (MATCH, match_input): Likewise. - * modules/m4.c (translit): Likewise. - * modules/gnu.c (substitute): Simplify. - - * m4/macro.c (trace_format): Use canonical type name. - * m4/output.c (m4_freeze_diversions): Likewise. - * src/freeze.c (produce_module_dump, dump_symbol_CB) - (produce_frozen_state): Likewise. - * m4/m4private.h (to_uchar): Grab from branch. - * m4/input.c (string_peek, string_read): Use it. - * m4/utility.c (skip_space): Likewise. - * src/main.c (main): Likewise. - * doc/m4.texinfo (Translit): Remerge from branch. - * tests/builtins.at (translit): Test 8-bit range. - * modules/m4.c (m4_expand_ranges): Merge from branch. - -2006-11-09 Eric Blake <ebb9@byu.net> - - * bootstrap: Validate that installed M4 is powerful enough. - Reported by Gary V. Vaughan, analyzed by Stepan Kasal. - -2006-11-08 Eric Blake <ebb9@byu.net> - - Merge deferred handling of -D option from branch. - * doc/m4.texinfo (Debugging options, Preprocessor features) - (Dynamic loading features, Operation modes, Invoking m4): - Document this change. - * src/main.c (OPTSTRING): Specify in-order processing. - (process_file): New function. - (main): Use it to interleave files and deferred options. - * tests/macros.at (Command line define): New test. - * tests/generate.awk: Allow '@comment file' as first example - within a node. - * tests/options.at (option grouping): Update to reflect actual - POSIX semantics. - (file names): New test. - -2006-11-07 Eric Blake <ebb9@byu.net> - - * m4/output.c (cleanup_tmpfile, m4_insert_diversion_helper): Check - for failure. - - * tests/builtins.at (m4exit): New test; failed on cygwin before - this patch. - * m4/output.c (cleanup_tmpfile): Close files before removing - directory. - (make_room_for, m4_output_exit): Ensure that atexit handler - invoked from m4_error sees consistent state. - - * doc/m4.texinfo (Errprint): Merge another doc node. - * tests/builtins.at (dumpdef, errprint): New tests. - * modules/m4.c (errprint): Merge from branch: flush before - printing to stderr. - -2006-11-02 Eric Blake <ebb9@byu.net> - - * bootstrap: Update bootstrap requirement wording. - Reported by Bruno Haible. - -2006-10-31 Eric Blake <ebb9@byu.net> - - * ltdl/m4/gnulib-cache.m4: Augment with 'gnulib-tool --import - strstr'. - * doc/m4.texinfo (Translit): Merge from branch. - * modules/m4.c (divert, substr): Ignore excess arguments. - (index, translit): Merge from branch. - * tests/builtins.at (translit): Add a test. - -2006-10-30 Eric Blake <ebb9@byu.net> - - * m4/m4private.h (m4_get_symbol_value_module): Delete accidental - checkin. - * m4/symtab.c (m4_get_symbol_value_module): Likewise. - - * modules/m4.c (m4_make_temp): Make safe across libtool. - * m4/symtab.c (dump_symbol_CB) [DEBUG_SYM]: Avoid warnings. - * configure.ac (--with-modules): Accomodate changed module - location when doing './configure --enable-debug'. - -2006-10-28 Eric Blake <ebb9@byu.net> - - * ltdl/m4/gnulib-cache.m4: Augment with 'gnulib-tool --import - config-h.' - -2006-10-27 Eric Blake <ebb9@byu.net> - - * bootstrap (gnulib): No longer a need to patch after gnulib-tool - --update. - * configure.ac (AM_GNU_GETTEXT_VERSION): Bump requirement to - 0.16, since 0.15 is incompatible with our automake requirement. - - * m4/macro.c (expand_argument): Fix missing initialization. - * m4/m4private.h (struct m4_symbol_value): Store entire - m4_builtin, not just the func. - (m4_get_symbol_value_func): Update. - (m4_get_symbol_value_builtin, m4_set_symbol_value_builtin): New - fast accessors. - * m4/m4module.h (m4_get_symbol_value_builtin) - (m4_get_symbol_builtin): New prototypes. - (m4_set_symbol_value_func): Delete, replace with... - (m4_set_symbol_value_builtin): New function. - (m4_builtin_find_by_name): Change signature. - * m4/symtab.c (m4_symbol_value_print): Simplify. - (m4_get_symbol_value_func): Update. - (m4_get_symbol_value_builtin): New function. - (m4_set_symbol_value_func): Delete, replace with... - (m4_set_symbol_value_builtin): New function. - (dump_symbol_CB) [DEBUG_SYM]: Simplify. - * m4/builtin.c (m4_builtin_find_by_name): Change signature. - * m4/input.c (struct m4_input_block): Remove unused trace member. - (m4_push_builtin, builtin_print, init_builtin_token): Update - callers. - * m4/module.c (install_builtin_table): Likewise. - * src/freeze.c (reload_frozen_state): Likewise. - * modules/gnu.c (builtin): Make it possible to retrieve a builtin - token, even after the builtin has been undefined. - * doc/m4.texinfo (Builtin): Document new capability. - * NEWS: Likewise. - - * ltdl/m4/gnulib-cache.m4: Augment with 'gnulib-tool --import - tempname'. - * modules/m4.c (m4_make_temp): Use it. - * tests/builtins.at (mkstemp, mkdtemp): Update message wording. - -2006-10-27 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> - - * Makefile.am (dist_pkgdata_DATA): Distribute recently-added - files. - -2006-10-26 Eric Blake <ebb9@byu.net> - - Silence -O2 -Wall -Wwrite-strings warnings. - * m4/m4private.h (m4_symbol_value): Const-ify text. - * m4/m4module.h (m4_get_symbol_value_text) - (m4_get_symbol_value_placeholder, m4_set_symbol_value_text) - (m4_set_symbol_value_placeholder): Likewise. - * m4/macro.c (expand_token, expand_argument, expand_macro): Fix - fallout. - * m4/symtab.c (m4_symbol_value_delete, m4_symbol_value_copy) - (m4_get_symbol_value_text, m4_get_symbol_value_placeholder) - (m4_set_symbol_value_text, m4_set_symbol_value_placeholder): - Likewise. - * modules/format.c (format): Likewise. - * src/main.c (main): Likewise. - * src/freeze.c (produce_symbol_dump, dump_symbol_CB): Likewise. - * modules/shadow.c (shadow, test): Likewise. - * m4/output.c (m4_make_diversion): Don't hold on to empty - diversions. - (m4_output_init, make_room_for, m4_undivert_all): Don't type-pun. - (m4_freeze_diversions): Likewise. Don't use uninitialized - variable. - - Convert diversions to list instead of sparse array, part 2. - * ltdl/m4/gnulib-cache.m4: Augment with 'gnulib-tool --import - avltree-list'. - * m4/output.c (m4_diversion): Add next pointer and divnum members. - (diversion_table): Convert to a list instead of a sparse array. - (free_list): Maintain free list of reclaimed diversions. - (equal_diversion_CB, cmp_diversion_CB): New functions. - (m4_output_init): Set up list. - (m4_output_exit): Tear down list. - (make_room_for, m4_undivert_all, m4_freeze_diversions): Change - list iteration. - (m4_make_diversion): Change creation of new diversions. - (m4_insert_diversion_helper): New function, to avoid list - searches. - * tests/builtins.at (divert): The test now passes. - * NEWS: Document this improvement. - - Convert diversions to list instead of sparse array, part 1. - * m4/m4module.h (m4_shipout_text, m4_shipout_string): Use size_t - for length. - * m4/output.c (diversion, total_buffer_size, output_unused): - Track size in size_t. All users changed. - (struct diversion): Reduce size now, to compensate for part 2. - (m4_make_diversion, make_room_for): Avoid malloc overflow. - (m4_output_exit): Fix typo in assert. - (m4_output_init, make_room_for, m4_make_diversion) - (m4_insert_diversion, m4_freeze_diversions): Adjust users of - struct m4_diversion to disambiguate the new union. - * tests/builtins.at (divert): Detect this failure. - -2006-10-25 Eric Blake <ebb9@byu.net> - - * m4/m4module.h (m4_push_builtin): Add parameter. - * modules/m4.c (defn): Update caller. - * m4/input.c (file_read_init, string_read_init): No longer - needed. - (input_funcs): Change signature of read_func, all callers - updated. - (composite_peek, composite_read, composite_unget), - (composite_print, composite_funcs): New input type. Not yet - fully utilized, but one step closer to fixing defn. - (m4_input_block): Make every input block track current file and - line. Rename some members. Remove unused out_line. Add support - for composite input block. - (input_change): New flag. - (file_peek, file_read, file_clean, file_unget, file_print): - Update callers. - (m4_push_file, m4_push_builtin, m4_push_string_init) - (m4_push_string_finish, m4_push_wrapup, m4_pop_wrapup) - (m4_skip_line, pop_input): Track input block changes. - (m4_pop_wrapup): Avoid overflow. - (init_builtin_token): Handle composite input. - (next_char): Handle input block changes. - * doc/m4.texinfo (Location): Remerge from branch. - - * src/m4.h (includes): Need <locale.h> after all; fixes - regression from yesterday. - - * m4/system_.h (obstack_regrow): New macro. Hopefully glibc will - accept it someday. - * m4/macro.c (expand_macro): Avoid referencing invalid memory. - Handle nesting the argc obstack. - (expand_token): Avoid unnecessary malloc. - (collect_arguments): Copy name before invalidating it. - (argc_stack, argv_stack): New variables. - (m4_macro_expand_input): Initialize argc and argv stacks once per - file, instead of once per macro. - -2006-10-24 Eric Blake <ebb9@byu.net> - - * src/m4.h (includes): Add gettext.h, for N_. Assume setlocale. - -2006-10-23 Eric Blake <ebb9@byu.net> - - * doc/m4.texinfo (Macro Arguments, Incompatibilities): Remerge - from branch regarding stripped leading whitespace. - - * modules/m4.c (includes): Use safe headers even when configured - with --enable-assert. - (m4_builtin_table, m4_make_temp): Work around fact that mkstemp is - #defined as mkstemp_safer. - -2006-10-21 Eric Blake <ebb9@byu.net> - - * modules/m4.c (m4_make_temp): Change signature. - (maketemp, mkstemp): Update callers. - * modules/m4.h (m4_make_temp_func): New export. - * modules/gnu.c (mkdtemp): New macro. - * doc/m4.texinfo (Operation modes): Document interaction with - --safer. - (Mkdtemp): New node. - * tests/builtins.at (mkdtemp): New test. - (mkstemp): Check for umask effect. - * NEWS: Document new builtin. - - * tests/generate.awk (normalize): Update recognition of trailing - spaces in tests. - * doc/m4.texinfo: Minor formatting fixes from branch. - (Foreach, Improved foreach): Merge from branch. - * examples/foreach.m4: Merge from branch. - * examples/foreachq.m4: New file from branch. - * examples/foreach2.m4: Likewise. - * examples/foreachq2.m4: Likewise. - - * doc/m4.texinfo (titlepage): Add myself as author. - * src/main.c (AUTHORS): Likewise. - -2006-10-19 Eric Blake <ebb9@byu.net> - - * modules/m4.c (m4_make_temp, mkstemp): New functions. - (maketemp): Add POSIX behavior and a warning. - * tests/others.at (maketemp): Move this test... - * tests/builtins.at (mkstemp): ...to here, and beef up. - * tests/options.at (--safer): Update to new warning message. - * doc/m4.texinfo (Mkstemp): Sync from branch. - (Extensions): Update maketemp behavior. - * NEWS: Document that maketemp now always warns. - - * tests/generate.awk: For ease of doc-writing, simplify selection - of '-Ipath/to/examples' to '@comment examples'. - * examples/forloop.m4: Simplify. - * examples/forloop2.m4: New file. - * examples/quote.m4: New file. - * doc/m4.texinfo (Improved forloop): New node. - (Manual): Clarify use of examples directory. - (Shift, Forloop): Resync from branch. - (Include, Location): Update to new usage of examples directory. - - * m4/system_.h (includes): Pick up <unistd.h> before checking for - _POSIX_VERSION. - (gettext_noop): Don't define here, let gettext.h do it instead. - * po/POTFILES.in: Update entries to reflect gnulib imports. - -2006-10-16 Eric Blake <ebb9@byu.net> - - * ltdl/m4/gnulib-cache.m4: Augment with 'gnulib-tool --import - configmake'. - * configure.ac (AM_INIT_AUTOMAKE): Bump requirement to 1.10a, for - pkglibexecdir support. - * Makefile.am (m4_libm4_la_SOURCES, m4/pathconf.h): No longer - worry about pathconf.h, now that gnulib does it for us. - (pkgmodincludedir): Simplify. - (pkglibexecdir): Delete, now that automake does this. - * m4/module.c (m4__module_init): Use PKGLIBEXECDIR. - * src/main.c (usage): Likewise. - * m4/symtab.c (m4_symbol_value_groks_macro): Fix typo. - - * doc/m4.texinfo: Port some changes from the branch. - (Invoking m4): Promote to a chapter, instead of a section of - Preliminaries. - (Operation modes, Dynamic loading features, Preprocessor features) - (Limits control Frozen state, Debugging options) - (Command line files): Subdivide into new sections. - (Cleardivert): Rename from cleardiv. - -2006-10-14 Eric Blake <ebb9@byu.net> - - * tests/others.at (stdin closed): Update to match previous patch. - - * m4/input.c (file_clean): Don't close stdin twice, POSIX says it - is not portable. - Reported by Ralf Wildenhues. - - * modules/m4.c (undivert): Merge from branch. - * doc/m4.texinfo (Improved fatal_error): Fix typo. - (Improved exch): New node, copied from branch. - (Improved cleardivert): Update from branch. - * THANKS: Update. - -2006-10-13 Eric Blake <ebb9@byu.net> - - * configure.ac (AC_CONFIG_HEADERS): Name the template config.hin, - not config-h.in. - * modules/gnu.c (builtin, indir): Transparently handle builtin - tokens from defn. - * doc/m4.texinfo (Indir, Builtin): Remerge from branch. - * m4/input.c (m4_pop_wrapup): Display debug message when switching - to wrapped text. - (m4_input_init): No need to use empty file any more. - (file_print): Display correct file name. - * m4/utility.c (m4_error, m4_warn): Ensure we don't try to - dereference a NULL file name. - * m4/m4module.h (m4_pop_wrapup): New parameter. - (m4_symbol_value_groks_macro, m4_symbol_groks_macro): New - prototypes. - * m4/m4private.h (m4_symbol_value_groks_macro): Faster version. - * m4/symtab.c (m4_symbol_value_groks_macro): New method. - * src/main.c (main): Adjust caller. - * tests/options.at (--debugmode): Test more output from -dV. - -2006-10-12 Eric Blake <ebb9@byu.net> - - * m4/input.c (m4_print_token) [DEBUG_INPUT]: Modernize. - - * m4/m4private.h (m4__next_token_is_open): New prototype. - * m4/m4module.h (m4_push_single): Delete; push_string is an - adequate interface, and removing support for this simplifies the - input engine. - (m4_push_wrapup): New parameter. - (m4_is_syntax): Delete; m4_has_syntax is sufficient. - (M4_SYNTAX_LQUOTE, M4_SYNTAX_BCOMM, M4_SYNTAX_MASKS): Make - start-quote and start-comment exclusive from other syntax - categories. - * m4/syntax.c: Likewise. - * m4/input.c (input_funcs): Make polymorphic without requiring - clients to know whether they are located at isp. All users - changed. - (file_names): New variable. - (m4_input_init): Initialize it. - (m4_push_file): Use it. - (m4_input_exit): Free it after use. - (m4__next_token): Simplify slightly. - (m4__peek_token): Rename and simplify... - (m4__next_token_is_open): ... to this. In particular, this - allows us to avoid a double ungetc, which POSIX doesn't - guarantee. - (struct m4_input_block, m4_push_single, single_peek, single_read): - Remove support for single characters, as the input engine now - guarantees we don't need it. - (file_unget, string_unget, m4_input_print, unget_input): - Strengthen assertions. - (file_init_funcs, file_read_init): New for file reading. - (string_init_funcs, string_read_init): New for wrapped text. - (m4_push_string_init, m4_push_string_finish, m4_push_wrapup): - Support wrapped text with locations. - (m4_skip_line): Support dnl across include file boundary. - (peek_char): Don't pop input when peeking. - (file_peek): Peek can be called at the end of the file. - (string_read): Don't read beyond string bounds. - * m4/macro.c (expand_token, collect_arguments): Update callers. - (expand_macro): Report errors at location of open parenthesis. - (expand_token, expand_argument, process_macro): Avoid negative - array dereferences with m4_has_syntax. - * m4/utility.c (skip_space): Likewise. - * modules/m4.c (m4wrap): Update caller. - * tests/builtins.at (__file__, __line__, dnl): New tests. - * tests/options.at (--debugmode): Normalize the output. - * doc/m4.texinfo (Macro Arguments, Dnl, History, Location): - Remerge recent changes from branch. - (Improved fatal_error): New node from branch. - -2006-10-11 Eric Blake <ebb9@byu.net> - - * src/main.c (usage, long_options): Add --debugmode as an alias - for --debug, to match macro name. - * tests/options.at (--debugmode): Rename from --debug, and test - for new alias. - (--discard-comments): Augment test. - * doc/m4.texinfo (Invoking m4, Debugmode): Document this. - * NEWS: Likewise. - -2006-10-10 Eric Blake <ebb9@byu.net> - - Trace improvements: debugmode(c) was always printing the last two - lines paired, combine them; and show non-text expansions. - * m4/macro.c (trace_prepre): Update to show what the macro will - expand to. - (trace_pre): No need to special-case on debugmode(c). - (trace_post): Likewise. Also, show non-text expansions. - (expand_macro): Update caller. Collecting arguments can change - debug mode, so cache values beforehand. - (trace_format): Remove support for unused %l%S%r, and fix support - for %z to match gcc's attribute((printf)). - (trace_header): Update caller. - * m4/input.c (struct m4_input_block): Rename from input_block. - (struct input_funcs): Add print_func member. - (file_print, builtin_unget, builtin_print, string_print) - (m4_input_print): New functions. - (m4_push_string_finish): Change return type. - (m4_push_file): Fix missing use of close parameter. - * m4/debug.c (m4_debug_decode): Don't clear pending traces. - * m4/m4module.h (m4_input_print): New prototype. - * tests/builtins.at (debug, esyscmd, multiquotes, syscmd): Update - to match behavior change. - * tests/options.at (--debug): Likewise. - * tests/macros.at (Propagation of traceon) - (Propagation of --trace): Likewise. - * tests/others.at (stderr closed, stdout closed, stdin closed): - Likewise. - * doc/m4.texinfo (Forloop): Simplify. - (Trace): Update to changed behavior. - (Debugmode): Document this change. - * src/main.c (usage): Likewise. - * NEWS: Likewise. - -2006-10-09 Eric Blake <ebb9@byu.net> - - * m4/path.c (m4_include_env_init): Don't alter result of getenv. - Reported by Ralf Wildenhues. - - * modules/gnu.c (gnu_buf): Rename from buf to silence -Wshadow. - -2006-10-07 Eric Blake <ebb9@byu.net> - - * m4/m4module.h (m4_set_exit_failure): New prototype. - * m4/utility.c (m4_set_exit_failure): New function. - * modules/m4.c (m4exit): Use it to avoid yet another global - variable export in libm4. - -2006-10-06 Eric Blake <ebb9@byu.net> - - * m4/output.c (cleanup_tmpfile): Exit nonzero on failure to clean - up. - * tests/others.at (stdout closed): Fix final check. - - Replace uses of tmpfile with clean-temp, since tmpfile is - incompatible with closeout. - * tests/builtins.at (esyscmd, syscmd): Don't use pipe; it loses - exit status of m4. - * tests/others.at (stderr closed): Likewise. - * tests/testsuite.at (M4_ONE_MEG_DEFN): Actually hit one meg. - * ltdl/m4/gnulib-cache.m4: Augment with gnulib-tool --import - clean-temp. - * m4/output.c [!HAVE_TMPFILE]: Delete dead code. - (m4_tmpfile, cleanup_tmpfile): New functions. - (make_room_for, m4_insert_diversion): Use clean-temp module. - * configure.ac (AC_CHECK_FUNCS_ONCE): No longer check for - tmpfile. - * doc/m4.texinfo (Diversions): Document new use of $TMPDIR. - - * m4/utility.c (m4_numeric_arg): Merge from branch. - * modules/gnu.c (debuglen): New builtin. - * src/main.c (usage, ARGLENGTH_OPTION, long_options, main): - Rename --arglength to --debuglen. - * tests/options.at (--arglength): Rename to --debuglen. - (deprecated options): Augment test. - * doc/m4.texinfo (Invoking m4): Document the name change. - (Debugmode): Rename from Debug Levels. - (Debugfile): Rename from Debug Output. - (Debuglen): New node. - * NEWS: Document these changes. - - * modules/m4.c (m4exit): Fix typo. Ensure desired exit status in - case closing a module exits. - - * modules/m4.c (m4exit): Merge from branch. - * m4/m4.c (m4_delete): Avoid assertion triggered by last patch. - -2006-10-05 Eric Blake <ebb9@byu.net> - - * ltdl/m4/gnulib-cache.m4: Augment with gnulib-tool --import - closeout. - * Makefile.am (m4_libm4_la_DEPENDENCIES): Add missing dependency. - * src/main.c (main): Close stdout on exit. - * m4/debug.c (set_debug_file): Check for write failure. - * m4/m4.c (m4_delete): Don't mask write failure. - * tests/testsuite.at (AT_CHECK_M4): Allow tracing by expanding - macros before calling AT_CHECK. - (M4_ONE_MEG_DEFN): New helper macro. - * tests/others.at (stdout full): New test. - (stderr closed, stdin closed, stdout closed): Augment. - * tests/builtins.at (syscmd): New test. - (esyscmd): Augment. - -2006-10-04 Eric Blake <ebb9@byu.net> - - * tests/builtins.at: Alphabetize tests. - * tests/testsuite.at (AT_CHECK_M4): Allow choosing stdin. - * tests/generate.awk (new_test): Fix underquoting. - * tests/others.at (maketemp): Rename from misc. - (stdin closed, stdout closed, stderr closed): New tests. - -2006-10-03 Eric Blake <ebb9@byu.net> - - Avoid all global variables in modules, so that --disable-static - can work on cygwin. - * examples/incl.m4: New file, from branch. - * Makefile.am (dist_pkgdata_DATA): Distribute it. - * doc/m4.texinfo (Location): Merge this section from branch. - (Include): Update the test. - * tests/generate.awk (new_test): Allow for VPATH build - pre-processing of expected __program__ output. - * m4/m4module.h (m4_current_diversion, m4_output_current_line): - Avoid global variables. - (m4_context_field_table): Add current_diversion, output_line. - (m4_output_init, m4_make_diversion): Add parameter. - (m4_get_program_name, m4_set_program_name): New accessors. - * m4/m4private.h (m4_get_current_diversion), - (m4_set_current_diversion, m4_get_output_line) - (m4_set_output_line): New accessors. - * m4/utility.c (m4_get_program_name, m4_set_program_name): New - methods. - * modules/m4.c (divnum, divert): Adjust callers. - * modules/gnu.c (__program__): Likewise. - * m4/output.c (m4_output_init, m4_make_diversion) - (m4_freeze_diversions, m4_shipout_text, m4_make_diversion) - (m4_insert_diversion): Likewise. - * m4/input.c (file_clean, m4_push_file): Likewise. - * src/freeze.c (reload_frozen_state): Likewise. - * src/main.c (main, usage): Likewise. - - Partially plug memory leak when unloading gnu module. - * tests/modules.at (unload gnu module): New test. - * modules/gnu.c (gnu_LTX_m4_finish_module): New function. - (m4_regexp_compile): Move static storage to module visibility. - * tests/options.at (--debug): Adjust to new output. - -2006-09-29 Eric Blake <ebb9@byu.net> - - Even when not the first option, --help can't have side effects. - * tests/options.at (--debugfile): Detect bugs in this area. - * tests/testsuite.at (AT_CHECK_M4): Avoid a process when ignoring - stderr. - * src/main.c (main): Fix it by deferring debugfile change. Also, - defer closing streams until after module tracing is done. - * modules/gnu.c (debugfile): Make message consistent with command - line. - * doc/m4.texinfo (Invoking m4): Touch up the documentation. - * NEWS: Document this fix. - - * modules/m4.c (dnl): Include macro name in warning message. - * m4/input.c (m4_skip_line): Add parameter. - * m4/m4module.h (m4_skip_line): Likewise. - * src/main.c (usage): Update wording. - * doc/m4.texinfo (Inhibiting Invocation): Add xfailed test until - issue of blind macros vs. POSIX is resolved. - (Dnl): Merge another node from branch. - - * ltdl/m4/gnulib-cache.m4: Augment with gnulib-tool --import - xstrtol. - * m4/system_.h (N_): Define. - * src/main.c (main): Validate numeric arguments. - (size_opt): New function, idea borrowed from coreutils. - * m4/macro.c (expand_macro): -L0 implies no limit. - * doc/m4.texinfo (Invoking m4): Document this change. - * NEWS: Likewise. - * tests/options.at: (--arglength, --nesting-limit) - (--regexp-syntax): New tests of argument validation. - -2006-09-28 Eric Blake <ebb9@byu.net> - - * tests/options.at: Alphabetize the tests. - -2006-09-27 Eric Blake <ebb9@byu.net> - - * m4/m4module.h (m4_symbol_value_print, m4_symbol_print): Add - another parameter to print module info. - * m4/macro.c (trace_pre): Adjust caller. - * modules/m4.c (M4BUILTIN_HANDLER): Likewise. - * doc/m4.texinfo (Dumpdef, Debug Levels): Document this. - * NEWS: Document this. - - * ltdl/m4/gnulib-cache.m4: Augment with gnulib-tool --import - strnlen. - * m4/symtab.c (symbol_value_print): Rename to... - (m4_symbol_value_print): ...this, and... - (m4_symbol_print): Update to allow -L length truncation. Now - truncation also affects dumpdef output and builtin names. - * m4/m4private.h (nesting_limit, max_debug_argument_length): - Switch to size_t. - * m4/m4module.h (m4_symbol_print): Add parameter. - (m4_symbol_value_print): New function. - * modules/m4.c (dumpdef): Allow length truncation. - * m4/macro.c (trace_pre): Use m4_symbol_print, rather than - repeating code. - * doc/m4.texinfo (Invoking m4): Document -l better. - (Dumpdef, Debug Levels): Document the effect of -l. - * NEWS: Document this change. - - * modules/m4.c (m4_dump_symbols, errprint, m4wrap) - (m4_expand_ranges): Ensure we aren't picking up partial object on - obstack. - * modules/stdlib.c (setenv): Allow extra arguments. - * modules/time.c (ctime): Avoid side effect in call to - obstack_grow. - * modules/gnu.c (m4_regexp_substitute): Likewise. - (renamesyms): Avoid extra obstack_init. - * src/freeze.c (reload_frozen_state): Remove debug comment. - (produce_frozen_state): Simplify fprintf to puts where possible. - * modules/modtest.c (modtest_init, modtest_finish): Likewise. - * modules/import.c (import, symbol_fail, modules_fail): Likewise. - * m4/macro.c (trace_flush): Likewise. - * m4/debug.c (m4_debug_message_prefix): Likewise. - * m4/path.c (include_dump): Likewise. - * m4/module.c (module_remove): Likewise. - (install_builtin_table): Simplify malloc and string - concatenation. - -2006-09-26 Eric Blake <ebb9@byu.net> - - * m4/m4module.h (m4_symbol_print): New prototype. - (M4_DEBUG_TRACE_STACK): New enumerator. - (m4_is_debug_bit): Allow use without requiring m4private.h. - * m4/symtab.c (symbol_value_print, m4_symbol_print): New - functions. - * modules/m4.c (dump_symbol_CB, m4_dump_symbols): Speed up - callback. - (dumpdef): Allow printing pushdef'd stacks. - * m4/debug.c (m4_debug_decode): Add new 's' debug mode. - * src/main.c (usage): Document it. - * doc/m4.texinfo (Dumpdef, Debug Levels): Likewise. - * NEWS: Likewise. - - * configure.ac (AC_CONFIG_HEADERS): Place <config.h> with other - gnulib headers. - * Makefile.am (AUTOMAKE_OPTIONS): Add nostdinc, to reduce length - of lines during make. - (AM_CPPFLAGS): Remove unneeded include path. - (src_m4_CPPFLAGS): Remove redundant include path. - * m4/system_.h Make preprocessor indentation consistent. - (M4_DIRSEP_CHAR, M4_PATHSEP_CHAR, M4_GNUC_FORMAT): Remove unused - macros. - (UNIX, W32_NATIVE, OS2): Update platform recognition macros from - branch. - (M4_GNUC_PRINTF, M4_GNUC_SCANF, M4_GNUC_NORETURN) - (M4_GNUC_CONST, M4_GNUC_UNUSED): Mangle names properly for header. - (bool, true, false): Don't undefine here; stdbool takes care of - that. - * src/m4.h (includes): Assume config.h, and several standard - headers. - (__CYGWIN__, WIN32): Don't define here; let system.h do it. - * m4/m4private.h: Assume config.h. - * m4/output.c: Likewise. - * m4/path.c: Likewise. - * m4/resyntax.c: Likewise. - * m4/utility.c: Likewise. - * modules/gnu.c: Likewise. - * modules/import.c: Likewise. - * modules/load.c: Likewise. - * modules/m4.c: Likewise. - * modules/modtest.c: Likewise. - * modules/mpeval.c: Likewise. - * modules/perl.c: Likewise. - * modules/shadow.c: Likewise. - * modules/stdlib.c: Likewise. - * modules/time.c: Likewise. - * modules/traditional.c: Likewise. - -2006-09-21 Eric Blake <ebb9@byu.net> - - * doc/m4.texinfo (Invoking m4): Add clarification on option - processing behavior. - * tests/options.at (option grouping): Test this. - * 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/main.c (usage, OPTSTRING, main): Rename -e to -i. Make - warnings consistent. - (long_options, HASHSIZE_OPTION): Warn on -H. - * doc/m4.texinfo (Invoking m4): Document this. - * tests/options.at (deprecated options): Update. - - Change the default of interactive sessions to match sh. - * src/main.c (usage): Document this. - (enum interactive_choice): New enum. - (main): Use it to defer decision of interactive until after - argument processing. - * doc/m4.texinfo (Invoking m4): Document this. - * NEWS: Likewise, plus add missing mention of -b. - Reported by Stepan Kasal. - -2006-09-19 Eric Blake <ebb9@byu.net> - - * src/main.c (usage, main, DEBUGFILE_OPTION): Deprecate -o as - well as --error-output; the goal is to add -o/--output in some - future version with semantics like gcc or autom4te. - * doc/m4.texinfo (Invoking m4, Dumpdef, Debug Output, Errprint): - (Extensions): Reflect this update. - (Renamesyms): Add another test. - (Defn): Xfail for now, so that `make check' is happy. - * NEWS: Document this change. - * tests/generate.awk: Mark dynamic loading tests as such. Allow - xfailing tests. - * tests/macros.at (Renamesyms collisions): New test, exposing - renamesyms' coredump. - * tests/options.at (--debugfile, --safer): Update to match - change. - - * m4/debug.c (set_debug_file): Fix regression in -o when stdout - and stderr are same file, introduced 2003-07-23. - * tests/options.at (--debugfile): New test, to catch the bug. - (deprecated options): Test --error-output. - * src/main.c (usage, main, long_options, ERROR_OUTPUT_OPTION): - Deprecate --error-output, and replace it with --debugfile. - * doc/m4.texinfo (Invoking m4, Debug Output, Dumpdef, Errprint): - Document this change. - * NEWS: Likewise. - -2006-09-18 Eric Blake <ebb9@byu.net> - - * modules/load.c (modules): Rename to... - (m4modules): ...this, since it is an English word with 0 - arguments. - * modules/gnu.c (symbols, m4symbols): Likewise. - * doc/m4.texinfo (Listing Modules): Rename to... - (M4modules): ...this. - (Symbols): Rename to... - (M4symbols): ...this. - (Load, Foreach, Trace, Answers): Update to new spellings. - * NEWS: Document this. - - * modules/m4.c (traceon, traceoff): Change to Solaris semantics, - such that without arguments, the global trace flag is changed - rather than walking the table of all currently-defined macros. - (set_trace_CB): No longer needed. - * m4/m4module.h (m4_set_symbol_name_traced): Add a parameter. - (m4_set_symbol_traced): Delete. - (m4_symtab_create): Nuke the nuke parameter. - * m4/m4private.h (m4_get_symbol_value): Delete. - * m4/symtab.c (m4_symbol_popdef): No more need for nuke_trace. - (m4_set_symbol_name_traced): Free undefined entries that are no - longer traced. - (symbol_destroy_CB): Update caller. - * m4/m4.c (m4_create): Update caller. - * src/main.c (main): Likewise. - (usage): Fix typo in last commit. - * doc/m4.texinfo: Minor cleanups throughout. - (Debugging, Dumpdef, Trace, Debug Levels, Debug Output): Merge - more nodes from branch. - (Trace): Document new semantics, and how to simulate the old. - * tests/builtins.at (multiquotes): Adjust to new semantics. - * NEWS: Update somewhat. - -2006-09-14 Eric Blake <ebb9@byu.net> - - Add --safer option, per debian bug 5898. - * src/main.c (usage): Document new option. - (SAFER_OPTION): New enumerator. - (main): Set the option bit. - * m4/m4module.h (m4_context_opt_bit_table): Declare new bit - accessors. - * m4/m4private.h (M4_OPT_SAFER_BIT): New macro. - (m4_get_safer_opt): New accessor. - * modules/gnu.c (esyscmd, debugfile): Disable when --safer. - * modules/m4.c (syscmd, maketemp): Likewise. - * doc/m4.texinfo (Invoking m4, Debug Output, Syscmd, Esyscmd) - (Sysval, Maketemp): Add tests of this. - * tests/options.at (--safer): Likewise. - -2006-09-13 Eric Blake <ebb9@byu.net> - - * tests/modules.at (AT_CHECK_M4_MODTEST): Use AT_CHECK_M4, for - stderr filtering. - Reported by Ralf Wildenhues. - - Fix installcheck. - * Makefile.am (check_LTLIBRARIES): Build test libraries in the - tests directory, so we can be sure an installed build is not - picking up uninstalled non-test libraries. - (check-local, installcheck-local): Depend on test libraries. - * tests/modules.at (AT_CHECK_M4_MODTEST): Don't use options - after file name. Fix quoting. Remove skipping the test, now - that makefile guarantees test modules will exist. - (Freezing modules, modules: shadow, modules: unload) - (modules: trace): Always put test modules in module path. - (modules: importing): Likewise, and rely on AT_CHECK_M4 for - stderr munging. - * src/main.c (usage): Document default module search path. - (import_environment, frozen_file_to_read, frozen_file_to_write): - Move... - (main): ...here. - * tests/testsuite.at (AT_CHECK_M4): Filter stderr here... - * tests/m4.in: ...not here. - Reported by Ralf Wildenhues. - -2006-09-08 Eric Blake <ebb9@byu.net> - - * bootstrap: Kill unrelated copy-n-paste code from argument - parsing. Let Makefile generate testsuite. - * Makefile.am (EXTRA_DIST): Remove examples/WWW/man/Makefile. - -2006-09-07 Eric Blake <ebb9@byu.net> - - * m4/m4module.h (m4_peek_input): No longer export. - (m4_error_at_line, m4_warn_at_line): New prototypes. - (m4_is_symbol_void): New macro. - (m4_push_file): Update prototype. - * m4/m4private.h (m4__peek_token): New prototype. - (M4_TOKEN_OPEN, M4_TOKEN_COMMA, M4_TOKEN_CLOSE): New enumerators. - * m4/utility.c (m4_error_at_line, m4_warn_at_line): New functions. - * src/main.c (main): Allow reading from stdin twice. - * modules/m4.c (include): Adjust to new prototype. - * m4/input.c: General comment cleanup. - (file_peek, file_read, file_unget, push_file): Set end flag on - EOF, so that we don't call getc twice. - (push_file, file_clean): Port fix from branch to avoid closing - stdin prematurely. - (pop_input): Port fix from branch to avoid reading free'd memory - when input ends mid-string. - (m4_pop_wrapup): Port fix from branch to allow multiple m4wraps. - (string_peek, string_read): Always use unsigned char. - (m4_skip_line): Warn when dnl cut short by EOF. - (peek_input): Rename from m4_peek_input. - (match_input): Update signature, to distinguish between `(' token - and multi-char quote or comment beginning with `('. - (m4_input_exit): Cleanup now done in m4_pop_wrapup. - (m4__peek_token): New function, ported from branch. - (m4__next_token): Update to new token types. - * m4/macro.c (expand_token, expand_argument): Use peek_token. - * doc/m4.texinfo (Pseudo Arguments, Defn, Answers): Fix typos. - (Invoking m4): Remerge from branch. - - * Makefile.am ($(TESTSUITE)): Revert patch from 2006-09-05... - (check-local): and put dependency here. - Reported by Ralf Wildenhues. - -2006-09-05 Eric Blake <ebb9@byu.net> - - * m4/m4module.h (m4_debug_message): New prototype. - (M4_DEBUG_TRACE_MODULE): New debug bit. - * m4/m4private.h (M4_DEBUG_MESSAGE, M4_DEBUG_MESSAGE1) - (M4_DEBUG_MESSAGE2): Delete these macros. - * m4/debug.c (m4_debug_message): New method. - (m4_debug_decode): Add module tracing as flag `m'. - * m4/input.c (m4_push_file, file_clean): Use new method. - * m4/path.c (m4_path_search): Likewise. - * po/Makevars (XGETTEXT_OPTIONS): Likewise. - * m4/module.c (install_builtin_table, install_macro_table) - (m4__module_open, module_close, module_remove): Promote several - module debug messages outside of DEBUG_MODULES. - (m4__module_init, module_remove) [DEBUG_MODULES]: Don't mix - DEBUG_MODULES with normal trace output. - * src/main.c (usage): Document new flag. - * doc/m4.texinfo (Debug Levels): Likewise. - * Makefile.am ($(TESTSUITE)): Add missing dependency. - * tests/m4.in: Neutralize platform-dependent module filenames. - * tests/options.at (--debug): Update expected output. - -2006-09-05 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> - - * doc/m4.texinfo: Fix some typos. - * tests/others.at: Likewise. - -2006-09-05 Eric Blake <ebb9@byu.net> - - * m4/input.c (lex_debug): Remove dead code that broke compilation - with --enable-debug. - * m4/module.c (install_builtin_table, install_macro_table) - (m4__module_init, m4__module_open, module_close) - (module_remove): Fix compilation when --enable-debug. - * m4/output.c (m4_shipout_text): Likewise. - * ltdl/m4/debug.m4 (M4_CHECK_DEBUGGING): Preload all static - libraries when --enable-debug. - * configure.ac (DYNAMIC_MODULES): New variable, to pass - information to testsuite. - (modules to preload): Determine modules after we know whether - shared libraries are supported. - * tests/atlocal.in (DYNAMIC_MODULES): Substitute this into - testsuite. - * tests/testsuite.at (AT_CHECK_DYNAMIC_MODULE): New macro. - * tests/modules.at (Freezing modules, AT_CHECK_M4_MODTEST) - (modules: shadow, modules: unload, modules: importing) - (modules: trace): Use new macro. - * tests/builtins.at (gmp): Likewise. - - * m4/macro.c (expansion_level, macro_call_id): Change to size_t. - All users updated. - (expand_token): Avoid assertion just added to docs. - (expand_macro): Track pending expansions, for when a symbol's - definition changes during argument collection. - (m4_macro_call, process_macro): Operate on symbol value, not - symbol, since symbol may have changed during argument collection. - * m4/m4private.h (m4_symbol_value): Add pending_expansions member. - (VALUE_PENDING, SYMBOL_PENDING, VALUE_DELETED_BIT): New defines. - (m4_get_symbol_value): Add fast macro version. - * m4/m4module.h (M4_BUILTIN_FLAGS_MASK): New enumerator. - (m4_macro_call): Adjust prototype. - * m4/module.c (install_builtin_table): Check that flags are valid - when creating builtin. - * m4/symtab.c (m4__symtab_remove_module_references): Use - m4_symbol_value_delete, rather than inlining it. - (m4_symbol_value_copy): Copy placeholder text. - (symbol_popval): Use m4_symbol_value_delete. - (m4_symbol_value_delete): Implementation was missing when NDEBUG. - Handle pending expansions. - * modules/gnu.c (indir): Update to new prototype. - * doc/m4.texinfo: Fix menus to be consistent with section names. - (Defn): Add test that macro tokens flatten to empty string; - triggered an assert before this patch. - (Ifelse): Merge another node. - (Loops): Split into... - (Forloop, Foreach): New nodes; work is still underway on them. - (Answers): Add more info on foreach macro; work is still underway. - (Indir): Add test that indir collects arguments before looking up - macro. - * TODO: Update based on this patch. - -2006-09-01 Eric Blake <ebb9@byu.net> - - * m4/m4.c (m4_create): Fix latent bug since 2003-10-08. - * m4/hash.h (m4_free_hash_iterator): New prototype. - * m4/hash.c (struct m4_hash) [!NDEBUG]: Add iter member, to - ensure we don't do unsafe things while iterating. - (HASH_ITER, ITER_CHAIN): New accessor macros. - (m4_hash_new, m4_hash_resize, maybe_grow): Fix malloc typing bug. - (m4_hash_delete, m4_hash_insert): Unsafe while iterating. - (m4_hash_remove) [!NDEBUG]: Enforce safety while iterating. - (m4_get_hash_iterator_next) [!NDEBUG]: Track current iterators, - to catch unsafe actions. - (m4_free_hash_iterator): New function, to avoid memory leaks, and - when debugging, to track safe actions. - (m4_hash_apply): Avoid memory leak. - * m4/symtab.c (m4_symtab_apply): Likewise. - * ltdl/m4/gnulib-cache.m4: Remove getopt from here; it is pulled - in manually to src/ for now. - * tests/builtins.at (gmp): Add keyword module. - * tests/modules.at (Freezing modules, modules: shadow) - (modules: unload, modules: importing, modules: trace): Likewise. - -2006-08-30 Eric Blake <ebb9@byu.net> - - * m4/utility.c (m4_warn): Factor "Warning" out of messages into - here. - (m4_bad_argc, m4_numeric_arg): Update all callers. - * m4/macro.c (m4_macro_call): Likewise. - * doc/m4.texinfo (Defn, Pushdef): Fix typos in last commit. - (Indir, Builtin, Ifdef): More doc merges. - (Loops): Mention that documenting foreach would be nice. - (Macro Arguments, Defn, Builtin, Ifdef, Ifelse, Changesyntax) - (Include, Eval, Location, M4exit): s/input.m4/stdin/. - * modules/gnu.c (indir, builtin): Warn, not error, on undefined. - (substitute, syncoutput): Update all m4_warn callers. - * modules/m4.c (undefine, popdef, m4_dump_symbols, defn) - (traceon, traceoff): Make warning message consistent. - (define, pushdef): Update all m4_warn callers. - * tests/generate.awk: Choose file name so that documentation can - show command-line behavior. - * tests/builtins.at (define): Update to new wording. - * tests/macros.at (pushdef/popdef): Likewise. - * tests/freeze.at (loading format 1): Likewise. - * tests/modules.at (AT_CHECK_M4_MODTEST): Likewise. - - * doc/m4.texinfo (Undefine, Defn, Pushdef): More doc merges from - the branch. - (Defn): Add failing test case for mixing text and builtin. - (Renamesyms): Improve wording, and identify core dump that needs - fixing. - -2006-08-29 Eric Blake <ebb9@byu.net> - - * doc/m4.texinfo (Quoting Arguments, Definitions, Define) - (Arguments, Pseudo Arguments): More doc merges from the branch. - (Macro expansion): Turn example into test. - (Pseudo Arguments): Add example of avoiding argument. - * modules/m4.c (undefine, popdef): Accept multiple arguments. - (define, pushdef): Warn on non-text macro name. - (ifelse, m4_dump_symbols, defn, traceon, traceoff): Tweak - warning/error messages. - (ifdef): Ignore extra arguments. - * m4/symtab.c (m4_symbol_value_copy): Avoid memory leak. - (m4__symtab_remove_module_references): Check that there is no leak. - * tests/macros.at (pushdef/popdef): Update to new message. - * tests/builtins.at (define): Likewise. - * tests/freeze.at (loading format 1): Likewise. - * tests/modules.at (AT_CHECK_M4_MODTEST): Likewise. - - * m4/m4private.h (m4_get_syntax_lquote, m4_get_syntax_rquote) - (m4_get_syntax_bcomm, m4_get_syntax_ecomm) [NDEBUG]: Use same type - as accessor function, to avoid compiler warning. - * m4/module.c (m4__module_open): Move declaration of variable to - avoid compiler warning. - * src/main.c (main): Avoid shadowing a global variable. - * src/freeze.c (produce_symbol_dump): Avoid unused variable - warning when NDEBUG. - * tests/options.at (--discard-comments, --import-environment) - (--debug, --prepend-include, --help and --version): Rename tests - to name option tested. - -2006-08-28 Eric Blake <ebb9@byu.net> - - * m4/utility.c (m4_bad_argc): Move assertion out of hot path... - * m4/module.c (install_builtin_table): ...to here, and add - assertion that blind macros require arguments. - * m4/m4module.h (struct m4_builtin): Document restrictions that - must be met during module loading. - * modules/gnu.c (changeresyntax, changesyntax): These are blind, - so require an argument to avoid triggering assertion. - (debugfile): Tweak error message. - -2006-08-25 Eric Blake <ebb9@byu.net> - - * m4/m4module.h (M4_BUILTIN_GROKS_MACRO, M4_BUILTIN_BLIND) - (M4_BUILTIN_SIDE_EFFECT): New enumerators. - (struct m4_builtin): New member flags replaces groks_macro_args, - blind_if_no_args. min_args and max_args are now 0-based. - Rearrange members to reduce size on platforms where function - pointers are 64 bits but regular pointers are 32. - (m4_bad_argc): Add argument. - * m4/m4private.h (VALUE_SIDE_EFFECT_ARGS_BIT): New define. - * m4/utility.c (m4_bad_argc): Simplify calculation, and take side - effect into account. - * m4/module.c (install_builtin_table): Adjust all users affected - by this API change. - * m4/macro.c (m4_macro_call): Likewise. - * src/freeze.c (reload_frozen_state): Likewise. - * modules/m4.c (builtin_functions, ifelse, syscmd): Likewise. - * modules/gnu.c (builtin_functions, builtin, esyscmd): Likewise. - * modules/import.c (builtin_functions): Likewise. - * modules/load.c (builtin_functions): Likewise. - * modules/modtest.c (builtin_functions): Likewise. - * modules/mpeval.c (builtin_functions): Likewise. - * modules/perl.c (builtin_functions): Likewise. - * modules/shadow.c (builtin_functions): Likewise. - * modules/stdlib.c (builtin_functions): Likewise. - * modules/time.c (builtin_functions, mktime_functions) - (strftime_functions): Likewise. - * doc/m4.texinfo (Loops): Update test now that shift is blind. - (Macro Arguments): Fix typo in test. - (Patsubst): Fix typo in test. - * modules/gnu.c (m4_regexp_substitute): Don't skip empty match at - end of string. Fix return value when ignore_duplicates. - * tests/builtins.at (patsubst): Fix typo in test. - - * tests/options.at (debug-flags): Update to reflect new message. - (deprecated options, prepend-include, help and version): New - tests. - * tests/testsuite.at (AT_CHECK_M4): Avoid hanging testsuite if - test omits an input file name. - * src/main.c (long_options, main): Add -B/--prepend-include. - (usage): Document it. - (main): `m4 --help --version' now displays help, not version. - * ltdl/m4/gnulib-cache.m4: Augment with gnulib-tool --import - dirname filenamecat. - * m4/m4module.h (m4_add_include_directory): Add parameter. - * m4/m4private.h (m4__include_init): New prototype. - * m4/m4.c (m4_create): Put `.' on path before options are - collected. - * m4/path.c (includes): Assume C89. Use gnulib for file name - management. - (m4__include_init): New function. - (search_path_add): Allow prepending. - (m4_add_include_directory, search_path_env_init): Adjust callers. - (m4_path_search): Relative names now invoke path search, since - `.' might not be first. - * doc/m4.texinfo (Invoking m4, Search Path): Document new option. - -2006-08-25 Bruno Haible <bruno@clisp.org> (tiny change) - and Eric Blake <ebb9@byu.net> - - * bootstrap: Run autopoint before gnulib-tool, since autopoint - 0.15 installs macros obsoleted by current gnulib. - -2006-08-25 Eric Blake <ebb9@byu.net> - - * doc/m4.texinfo (Macro Arguments): Another section merged; - testsuite failures now exposed. - -2006-08-23 Eric Blake <ebb9@byu.net> - - * doc/m4.texinfo (Quoted strings, Other tokens, Comments) - (Input processing): More doc merges from the branch. - (Regular expression syntax): Add introductory text. - (Inhibiting Invocation): More doc merges from the branch. - (Other tokens): Reorder after comments. - * tests/generate.awk: Allow passing options to doc examples. - -2006-08-22 Eric Blake <ebb9@byu.net> - - * tests/options.at (debug-flags): New test. - * m4/m4module.h (M4_DEBUG_TRACE_VERBOSE): Make sure this value is - not negative, to distinguish failure in m4_debug_decode. - (m4_debug_decode): Add new parameter. - * modules/gnu.c (regexp): Slight cleanup. - (renamesyms): Ignore excess arguments. - (syncoutput): Make case-insensitive, warn on bad argument. - (debugmode): Factor -+ handling out to... - * m4/debug.c (m4_debug_decode): ...here. - (m4_debug_message_prefix): Fix spacing. - * src/main.c (main): Let -d option adjust flags. - * m4/input.c (file_clean): Avoid printing empty file name. - * doc/m4.texinfo (Syncoutput): Document new range of input. - (Invoking m4): Document use of multiple -d flags. - - Start porting various fixes from the branch that use gnulib. - * ltdl/m4/gnulib-cache.m4: Augment with gnulib-tool --import - binary-io cloexec close-stream fopen-safer getopt gnupload mkstemp - regexprops-generic stdlib-safer unlocked-io. - * m4/debug.c (m4_debug_set_output): Close debug file on exec. - * m4/path.c (m4_path_search): Close input file on exec, reject - empty file name, fix parameter naming. - * m4/output.c (make_room_for): Close diversion file on exec. - (includes): Assume C89 headers. - (tmpfile): For now, we don't want tmpfile-safer, because we want - clean-temp later. - * m4/m4private.h (includes): Use various gnulib headers. - * doc/regexprops-generic.texi: Use gnulib's copy. - - * configure.ac (AM_INIT_AUTOMAKE): Bump automake requirement. - * AUTHORS: Add copyright. - * ChangeLog: Likewise. - * README: Likewise. Require automake 1.9b or later. - * HACKING: New file. - * README-alpha: Add copyright. - * THANKS: Likewise. Update. - * doc/STYLE: Add copyright, and tweak for changed directories. - * modules/README: Add copyright, and tweak for libtool version. - * examples/COPYING: New file. - * examples/WWW/COPYING: Likewise. - * examples/WWW/m4lib/COPYING: Likewise. - * modules/shadow.m4: Add copyright. - * modules/perl.m4: Likewise. - * modules/modtest.m4: Likewise. - * modules/stdlib.m4: Likewise. - * modules/time.m4: Likewise. - * modules/time2.m4: Likewise. - * po/Makevars: Likewise. - * tests/iso8859.m4: Likewise. - * tests/m4.in: Likewise. - * NEWS: Add (C) to copyright. - * TODO: Likewise. - * m4/system_.h: Likewise. - * tests/atlocal.in: Likewise. - * tests/builtins.at: Likewise. - * tests/freeze.at: Likewise. - * tests/generate.awk: Likewise. - * tests/macros.at: Likewise. - * tests/modules.at: Likewise. - * tests/options.at: Likewise. - * tests/others.at: Likewise. - * tests/testsuite.at: Likewise. - * m4/utility.c: Spell out copyright years. - * src/main.c: Likewise. - - * doc/m4.texinfo (Bugs, Manual, Syntax): Sync from branch. - -2006-08-21 Eric Blake <ebb9@byu.net> - - * configure.ac (AC_CHECK_HEADERS_ONCE): Check for <sys/wait.h>. - * modules/gnu.c (esyscmd): Use -1 for failure. Set sysval to 0 - when no arguments are given, but without losing warning about 0 - arguments. - * modules/m4.c (syscmd): Likewise. - (includes): Assume C89. - (m4_sysval): Make static. - (M4_SYSVAL_EXITBITS, M4_SYSVAL_TERMSIGBITS): New macros. - (sysval): Port calculation from branch. - -2006-08-20 Eric Blake <ebb9@byu.net> - - * m4/macro.c (expand_macro): Move argument check... - (m4_macro_call): ...to here, so indir will warn. - * modules/gnu.c (__program__): New macro, ported from branch. - (builtin): Perform argument check. - (changesyntax): Avoid out-of-bounds read. - - * modules/gnu.c (includes): Assume stdlib.h, errno. - (m4_regexp_compile): Add no_sub parameter, avoid memory leaks. - (substitute): Add caller parameter, avoid out-of-bounds memory - references. - (m4_regexp_substitute, patsubst, regexp, renamesyms): Adjust - callers. - -2006-08-16 Eric Blake <ebb9@byu.net> - - * po/POTFILES.in: Add more files that contain translatable - strings. - * po/Makevars (XGETTEXT_OPTIONS): Add options to pass more - information to translators. - (USE_MSGCTXT): New var for gettext 0.15. - * m4/input.c (file_clean, m4_push_file, m4__next_token): Start - debug/trace messages in lower case. - * m4/macro.c (expand_argument): Likewise. - * m4/path.c (m4_path_search): Likewise. - * src/main.c (main): Likewise. - -2006-08-14 Eric Blake <ebb9@byu.net> - - * src/main.c (usage): Document --import-environment. - * doc/m4.texinfo (History, Invoking m4): Synchronize from branch. - -2006-08-11 Eric Blake <ebb9@byu.net> - - * bootstrap (func_get_translations): Only remove files when doing - full update. - (func_update_po): Avoid CDPATH problems. - -2006-08-10 Eric Blake <ebb9@byu.net> - - * bootstrap (func_get_translations): New function. - (func_update_po): Borrow ideas from tar to correctly pull in - translations from newer location. - -2006-08-09 Eric Blake <ebb9@byu.net> - - * bootstrap: Recent gnulib no longer has jm_* macros to worry - about. - * ltdl/m4/gnulib-cache.m4: Augment with gnulib-tool --import - verror. - * m4/m4module.h (M4ERROR, M4WARN): Delete, replaced by... - (m4_error, m4_warn): ... these new prototypes. - (m4_current_file, m4_current_line): Move into context, rather - than leaving as globals. - (m4_insert_file, m4_insert_diversion, m4_freeze_diversions) - (m4_undivert_all, m4_input_init): Now takes context. - * m4/utility.c (m4_error, m4_warn): New functions. - * m4/m4private.h: Assume errno exists. - (struct m4): Move warning_status to a bit flag, - and add exit_status. Adjust accessors accordingly. - * src/main.c (print_program_name_CB): No longer needed. - (main): Use new m4_get_fatal_warnings_opt. - * m4/debug.c: Adjust all callers of M4WARN and M4ERROR, and abort - instead of issuing "INTERNAL ERROR". Pass context when needed, - and use new accessors. - * m4/input.c: Likewise. - * m4/macro.c: Likewise. - * m4/output.c: Likewise. - * m4/utility.c: Likewise. - * modules/evalparse.c: Likewise. - * modules/gnu.c: Likewise. - * modules/load.c: Likewise. - * modules/m4.c: Likewise. - * modules/mpeval.c: Likewise. - * src/freeze.c: Likewise. - * src/main.c: Likewise. - * tests/macros.at: Adjust to new message format. - * tests/builtins.at: Likewise. - * tests/freeze.at: Likewise. - * tests/modules.at: Likewise. - * doc/m4.texinfo: Likewise. - - * configure.ac (AM_GNU_GETTEXT, AM_GNU_GETTEXT_VERSION): Require - newer gettext 0.15. - -2006-08-03 Eric Blake <ebb9@byu.net> - - * src/stackovf.c (setup_stackovf_trap): Port patch from branch to - gracefully handle ENOSYS. - * TODO: Update. - * THANKS: Update. - -2006-07-28 Eric Blake <ebb9@byu.net> - - * src/freeze.c (reload_frozen_state): Copy string when creating - placeholder, to avoid memory corruption. - * m4/symtab.c (symbol_popval): Avoid memory leak. - (m4_symbol_rename): Avoid shadowing rename function. - (dump_symbol_CB, symtab_dump) [DEBUG_SYM]: Fix compilation. - * tests/freeze.at (reloading unknown builtin): Add test. - * tests/generate.awk: Capture m4.texinfo line number in - testsuite.log, not just generated.at. - - Port idea from branch that a frozen file can request an unknown - builtin without producing a warning unless the builtin is - actually used. - * m4/m4private.h (m4__symbol_type): Add M4_SYMBOL_PLACEHOLDER. - (m4_is_symbol_value_placeholder, m4_get_symbol_value_placeholder) - (m4_set_symbol_value_placeholder): New accessors. - * m4/m4module.h (m4_is_symbol_placeholder), - (m4_get_symbol_value_placeholder), - (m4_set_symbol_value_placeholder), - (m4_get_symbol_placeholder): Likewise. - * m4/symtab.c (m4_is_symbol_value_placeholder), - (m4_get_symbol_value_placeholder), - (m4_set_symbol_value_placeholder): Likewise. - (dump_symbol_CB): Handle new symbol type. - * m4/macro.c (trace_pre): Likewise. - (m4_macro_call): Warn when invoking a placeholder. - * modules/m4.c (dumpdef): Handle dumping a placeholder. - (defn): Warn when referencing a placeholder. - * src/freeze.c (dump_symbol_CB): Ignore placeholder when - freezing. - (reload_frozen_state): When reloading unknown builtin, install a - placeholder instead of warning. - * tests/freeze.at (loading format 1): Allow warning when - popdef'ing undefined function. - -2006-07-27 Paul Eggert <eggert@cs.ucla.edu> (tiny change) - - * m4/hash.c (m4_hash_string_hash): 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. - -2006-07-27 Eric Blake <ebb9@byu.net> - - * src/main.c (usage): Update to match branch. - (main): Update --version info to distinguish between program name - `m4' and package name `GNU M4'. - (AUTHORS): Translate René Seindal's name. - * configure.ac (TIMESTAMP): Remove now-redundant parentheses. - * Makefile.am (doc/m4.1): Update to match branch. - * m4/m4.c (DEFAULT_NESTING_LIMIT): Raise to 1024, to match - branch. - - * m4/system_.h (EXIT_MISMATCH): Define. - * src/main.c (main): Don't clear syntax table for version 1. - (usage): Document exit status. - * src/freeze.c (reload_frozen_state): Port GET_DIRECTIVE from the - branch, and require V directive to appear first in file. Fix - broken logic for detecting F and T in version 1 files. - -2006-07-22 Eric Blake <ebb9@byu.net> - - * src/main.c (stackovf_handler): Document the problems in our - overflow handler. - * src/stackovf.c: Forward port changes in branch to use POSIX - sa_sigaction when available. - (process_sigsegv): Avoid buffer overrun when error string is - translated, although the fact that we translate in a signal - handler is still a bug. - * ltdl/m4/stackovf.m4 (M4_SYS_STACKOVF): Forward port changes - from branch to modernize checks. - - * modules/format.c (format): Avoid compiler warning that str may - be used uninitialized. - - * m4/m4private.h (DEBUG_MODULES, DEBUG_STKOVF) [DEBUG]: Fix - spelling. - (DEBUG_SYNTAX) [DEBUG]: Turn on more debug. - (DEBUG_MACRO): Remove unused macro. - * src/stackovf.c: Avoid compiler warnings. - * m4/input.c: Likewise. - * m4/module.c: Likewise. - * m4/output.c: Likewise. - * m4/path.c: Likewise. - * m4/symtab.c: Likewise. - * m4/syntax.c: Likewise. - -2006-07-20 Eric Blake <ebb9@byu.net> - - * ltdl/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> - - * po/ChangeLog: Merge into main ChangeLog, then delete file. - * THANKS: Update. - - * doc/m4.texinfo (copying): Relax restriction on front-cover and - back-cover texts. - -2006-07-17 Eric Blake <ebb9@byu.net> - - * configure.ac (AM_GNU_GETTEXT_VERSION): Bump requirement to - 0.14.5. - - * ltdl/m4/gnulib-cache.m4: Augment with `gnulib-tool --import - xvasprintf'. - * modules/format.c (includes): Use xvasprintf.h. - (format): Make static. Avoid buffer overflow, that can lead to - arbitrary code execution exploit. Only pass unsigned char to - is*(). Support F, g, and G specifiers. - * doc/m4.texinfo (Format): Expose buffer overrun bug. Document - new specifiers. - -2006-07-17 Gary V. Vaughan <gary@gnu.org> - - Ensure M4 compiles correctly with -DDEBUG, and use a single - consistent definition of various /DEBUG_[A-Z]+/ symbols: - - * m4/input.c: Have commented out out DEBUG_INPUT only by default. - (m4_print_token): Use m4_get_symbol_value_text and - m4_get_symbol_value_func calls instead of obsolescent VALUE_TEXT - and VALUE_FUNC respectively. - (m4__next_token): Use m4_print_token call instead of obsolescent - print_token symbol. - * m4/module.c: Have commented out out DEBUG_MODULE only by default. - * m4/output.c: Similarly for DEBUG_OUTPUT. - * m4/path.c: Similarly for DEBUG_INCL. - * m4/symtax.c: Similarly for DEBUG_SYM. - * m4/syntax.c: Similarly for DEBUG_SYNTAX. - * src/stackovf.c: Similarly for DEBUG_STACKOVF. - * m4/m4private.h (DEBUG): Add DEBUG_OUTPUT and DEBUG_STACKOVF to - preprocessor macros defined with -DDEBUG compiles. - -2006-07-17 Gary V. Vaughan <gary@gnu.org> (tiny change) - - * bootstrap: Correct typo in --download-po argument parsing. - -2006-07-15 Eric Blake <ebb9@byu.net> - - * ltdl/m4/gnulib-cache.m4: Augment with `gnulib-tool --import - gendocs fdl'. - * tests/generate.awk (normalize): Recognize @tabchar. - * doc/m4.texinfo (Top): Start merging from branch. Remove tabs. - Fix menus. Upgrade FDL license from 1.1 to 1.2. Fix overfull - hboxes. - (Index macro, Shell commands, Incompatiblities): Rename nodes - from Index, UNIX commands, Other incompat. - (Platform macros, Using frozen files, Frozen file format 1) - (Frozen file format 2, Copying This Manual, Indices): New nodes. - * Makefile.am (EXTRA_DIST): Distribute gendocs. - (MAINTAINERCLEANFILES): Clean up files from gnulib. - (doc_m4_TEXINFOS): Depend on fdl.texi. - (web-manual): New maintainer target. - -2006-07-14 Gary V. Vaughan <gary@gnu.org> - - * doc/m4.texinfo (Modules): RMS asked me for an explanation of - the modular architecture of M4. The result is paraphrased here - for the benefit of future readers of the manual. - -2006-07-14 Gary V. Vaughan <gary@gnu.org> (tiny change) - - * Makefile.am (TESTSUITE_AT): Add missing tests/freeze.at. - -2006-07-14 Eric Blake <ebb9@byu.net> - - * src/main.c (main): Avoid compiler warning. - * modules/gnu.c (renamesyms): Remove unused variable. - -2006-07-14 Gary V. Vaughan <gary@gnu.org> - - * m4/m4module.h (m4_regexp_syntax_decode, m4_regexp_syntax_encode) - (m4_get_regexp_syntax_opt, m4_set_regexp_syntax_opt): Declare - new functions for managing regexp syntax options. - * m4/m4private.h (m4): Add regexp_syntax field. - * m4/resyntax.c: New file implements the above. - * Makefile.am (m4_libm4_la_SOURCES): Add m4/resyntax.c. - * modules/gnu.c (RE_SYNTAX_BRE, RE_SYNTAX_ERE, builtin_eregexp) - (builtin_epatsubst, builtin_erenamsyms, m4_regexp_do) - (m4_patsubst_do, m4_renamesyms_do): Removed. - (builtin_changeresyntax): New builtin to change regular expression - syntax. - (m4_resyntax_encode_safe): Factor out diagnostics code. - * src/freeze.c (produce_resyntax_dump): New function to dump - default regexp syntax specifier to frozen file. - (reload_frozen_state): Updated to action 'R' directive. - * src/main.c (usage): Describe new -r option. - (long_options, OPTSTRING): Declare it. - (main): Encode and store cli regexp syntax option argument. - * tests/freeze.at (regexp syntax): New test that regexp syntax - survives freezing. - * tests/generate.awk (m4_pattern_allow): Updated for renamesyms. - * doc/m4.texinfo (Erenamesyms and Renamesyms, Eregexp and Regexp) - (Epatsubst and Patsubst): Renamed to... - (Renamesyms, Regexp, Patsubst): ...these respectively. Updated - documentation and added new examples. - (Changeresyntax): New section describing changeresyntax builtin, - and regexp syntax names. - (Regular expression syntax): New section describing differences - between various regular expression syntaxes. - (Frozen files): Document 'R' directive. - * NEWS: Updated. - -2006-07-13 Gary V. Vaughan <gary@gnu.org> - - * bootstrap: Enhanced to work more like our other scripts: - Add a copyright statement; support --version and --help; accept a - --download-po option with argument as a substitute for DOWNLOAD_PO - in the environment. - -2006-07-11 Eric Blake <ebb9@byu.net> - - * Makefile.am (doc/m4.1): Port patch from branch that avoids - intermediate file. - * ltdl/m4/gnulib-cache.m4: Regenerate since upstream gnulib-tool - changed. - -2006-07-10 Gary V. Vaughan <gary@gnu.org> (tiny change) - - * tests/builtin.at (patsubst, regexp): Adjust these tests, now - that `\0' is no longer accepted. - - * src/main.c (usage): Alphabetize options within their sections. - - * modules/gnu.c (m4_regexp_search, regsub, substitute) - (esyscmd): Improve comments. - - * modules/gnu.c (substitute): Remove old warning for \0. - (substitute_warned): No longer required. Removed. - - * modules/gnu.c: Put macro definitions into alphabetical order. - -2006-07-07 Eric Blake <ebb9@byu.net> - - * tests/freeze.at (loading format 1): New file, with new test. - * tests/testsuite.at: Include it. - * tests/macros.at (Arity, defn, and freeze): Add frozen keyword. - * tests/modules.at (Freezing modules): Likewise. - - * configure.ac (AC_PREREQ): Autoconf 2.60 is now out. - (AC_CHECK_HEADERS): Assume signal.h. - (AC_CHECK_HEADERS_ONCE): Use new feature to shrink configure. - (AC_CHECK_FUNCS_ONCE): Likewise. - * src/m4.h (includes): Assume signal.h. - -2006-07-05 Eric Blake <ebb9@byu.net> - - Fix all testsuite failures on cygwin. - * doc/m4.texinfo (Syscmd, Esyscmd): Forward-port updates from - branch-1_4. Solves testsuite failure when uninstalled m4 is - shadowed by redefinition of PATH in libtool wrapper. - * Makefile.am (module_ldflags): Don't forget AM_LDFLAGS, which - contains the -no-undefined required by cygwin. - (TESTS_ENVIRONMENT): Export abs_top_builddir. - * tests/others.at (misc): Port to platforms where /etc/passwd - does not exist or does not contain user named root. - * tests/modules.at (AT_CHECK_M4_MODTEST): Look in correct - directory. - * tests/builtins.at (define, divert): Avoid overquoting. - * tests/generate.awk (new_group): Likewise. - -2006-07-05 Gary V. Vaughan <gary@gnu.org> - - The regs_allocated field in a struct re_pattern_buffer refers - to the state of a particular re_registers struct when used in - successive matches using the same compiled pattern. Avoid a - SEGV in `renamesyms' resulting from using a new re_registers - with an existing re_pattern_buffer: - - * modules/gnu.c (m4_pattern_buffer): Wrapper struct for associated - pattern buffer and registers. - (m4_regexp_search): New function to call re_regexp_search with - correctly matched pattern buffer and register instantiations. - (m4_regexp_compile): Return an m4_pattern_buffer. Adust all - callers. - -2006-07-04 Gary V. Vaughan <gary@gnu.org> - - * ltdl/m4/m4-getopt.m4 (M4_GETOPT): Update to take into account - changes to gnulib getopt.m4 since last build. - * Makefile.am (src_m4_SOURCES): Only compile shipped getopt module - if the system getopt fails M4_GETOPT tests. - -2006-06-22 Eric Blake <ebb9@byu.net> - - * Makefile.am (EXTRA_DIST): Distribute gnulib-cache.m4. - Reported by Bruno Haible. - -2006-06-22 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> - - * m4/module.c (m4__module_exit): Avoid ltdl memory leak. - -2006-06-19 Eric Blake <ebb9@byu.net> - - * THANKS: Update. - -2006-06-19 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> - - * Makefile.am (src_m4_DEPENDENCIES): Make dependency explicit. - (clean-local): Split into and depend upon... - (clean-local-tests, clean-local-src): ...these two. The latter - removes the libtool object directory below `src', to work around - a buglet in Automake, failing to list it. - (EXTRA_DIST): Distribute modules/perl.c. - -2006-06-19 Eric Blake <ebb9@byu.net> - - * Makefile.am ($(srcdir)/doc/m4.1): No need to list $(srcdir) in - right side of dependency; VPATH does that. - (stamp-vcl): Update to use libtool's algorithm. - (EXTRA_DIST): Distribute stamp-vcl. - Reported by Ralf Wildenhues. - (TESTSUITE): Revert earlier change that used absolute path, as - that broke 'make dist' in VPATH. Stick with $(srcdir) instead. - (EXTRA_DIST): Revert earlier change of $(TESTSUITE). - (TESTS_ENVIRONMENT) [USE_GMP]: Revert earlier addition, since - atlocal takes care of it instead. - (check-local, installcheck-local, clean-local): Inline absolute - path to testsuite here, rather than relative path to testsuite - elsewhere. - -2006-06-19 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> - - * m4/m4private.h (DELETE): Cast away const here... - * src/stackovf.c (stackovf_exit): ...to avoid cast-as-lvalue here. - * src/freeze.c (reload_frozen_state): Avoid uninitialized - variable warning. - -2006-06-19 Eric Blake <ebb9@byu.net> - - * Makefile.am (doc/m4.1): Build in $(srcdir), to match where - .info pages are built. - Reported by Ralf Wildenhues. - (EXTRA_DIST): Inline definition of testsuite, so that make dist - works again. - -2006-06-16 Eric Blake <ebb9@byu.net> - - Follow recommendations from autoconf manual for autotest. - * Makefile.am (TESTSUITE): Factor the $(srcdir) out of uses, and - turn it into an absolute path until autotest provides an option - that allows us to avoid changing directories. Properly quote - throughout. - (TESTS_ENVIRONMENT) [USE_GMP]: Inform testsuite about GMP. - (check-recursive): Delete unused target. - ($(TESTSUITE)): Atomically update testsuite. - (CD_TESTDIR): Simplify. - (m4__cd): Delete unused macro. - (check-local): Let TESTSUITEFLAGS influence the run. - (installcheck-local): Let TESTSUITEFLAGS override - AUTOTEST_PATH. Add dependencies. - (clean-local): Clean up. - (DISTCLEANFILES, MAINTAINERCLEANFILES): Add directory location. - * README: Document how to use the testsuite. - -2006-06-15 Eric Blake <ebb9@byu.net> - - * configure.ac (M4_DEFAULT_PRELOAD): Fix typo in last commit. - - * ltdl/m4/m4-error.m4 (M4_ERROR): Use M4_ instead of m4_ to avoid - clashes with m4sugar. - * ltdl/m4/m4-getopt.m4 (M4_GETOPT): Likewise. - * ltdl/m4/m4-gettext.m4 (M4_GNU_GETTEXT): Likewise. - * ltdl/m4/m4-obstack.m4 (M4_OBSTACK): Likewise. - * ltdl/m4/m4-regex.m4 (M4_REGEX): Likewise. - * ltdl/m4/gmp.m4 (_M4_LIB_GMP): Likewise. - * ltdl/m4/stackovf.m4 (M4_SYS_STACKOVF): Likewise. - * ltdl/m4/debug.m4 (M4_CHECK_DEBUGGING): Likewise. - * configure.ac: Likewise. - (M4_DEFAULT_PRELOAD): Use as a macro, not shell variable. - * Makefile.am (src_m4_CPPFLAGS): Use STACKOVF as a makefile - conditional. - * ltdl/m4/m4-gnulib.m4: Delete, no longer needed. - - Reduce compiler warnings. Inside GMP, mpq_t is an array type, so - const mpq_t is not assignable from plain mpq_t. Avoid - type-punning warnings caused trying to mix these types. - * modules/mpeval.c (numb_ior, numb_eor, numb_and, numb_lshift), - (numb_rshift, numb_divide, numb_modulo): Remove const qualifier. - * modules/evalparse.c (or_term, xor_term, and_term, shift_term), - (mult_term, exp_term): Remove type-punning casts. - (numb_pow): Remove const qualifier. - * src/freeze.c (reload_frozen_state): Fix typo in messages. - Fix variables that can be used uninitialized, which fixes - security hole where malicious frozen file can execute arbitrary - code. - -2006-06-14 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> - - * Makefile.am (modules_mpeval_la_LIBADD): Readd $(LIBADD_GMP). - -2006-06-13 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> - and Eric Blake <ebb9@byu.net> - - Allow `make dist' to work again. - * Makefile.am (EXTRA_DIST): doc/helptoman.pl is gone. - (MAINTAINERCLEANFILES): Avoid redundant mention of dist_man_MANS. - (cvs-dist): Fix typo. - * NEWS: Match current version number. - -2006-06-13 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> - - * Makefile.am (AM_CPPFLAGS): Add $(LTDLINCL), so the right - ltdl.h is used. - - * bootstrap: Do not run libtoolize manually, this is done - correctly by autoreconf. Invoke autoreconf with --no-recursive - to avoid unnecessary rerunning of autotools for libltdl. - -2006-06-13 Eric Blake <ebb9@byu.net> - - * THANKS: Update. - -2006-06-12 Eric Blake <ebb9@byu.net> - - * m4/output.c [HAVE_MKTEMP]: Gnulib provides mkstemp, so don't - bother with mktemp. - * src/m4.h: Don't declare mktemp. - * m4/input.c (m4__next_token): Avoid bzero. - * configure.ac (AC_CHECK_FUNCS): Remove obsolete checks. - * Makefile.am (doc/m4.1): Depend on installed help2man, rather - than distributing outdated helptoman.pl. - * doc/helptoman.pl: Delete. - -2006-06-10 Eric Blake <ebb9@byu.net> - - * README (Patches): Document the current dependence on CVS - builds of autotools. - * ltdl/m4/gnulib-cache.m4: Update, and use --macro-prefix=M4. - * configure.ac: Use consistent quoting throughout. - (AC_PREREQ): Bump to 2.59d. - (AC_INIT): Package name begins with uppercase. - (AC_ARG_WITH): Use AS_HELP_STRING. - (AM_INIT_AUTOMAKE): Enable gnits mode. - (AC_ISC_POSIX, AM_PROG_CC_STDC, AC_PROG_INSTALL, AC_PROG_MAKE_SET), - (AC_PROG_AWK, AM_C_PROTOTYPES, AC_C_CONST, AC_HEADER_STDC), - (AC_CHECK_HEADERS, AC_FUNC_ALLOCA, AC_FUNC_VPRINTF): Remove checks - done by gnulib or automake, or which autoconf has declared - obsolete. - * m4/m4private.h (Includes): Assume C89 or better, and use errno - unconditionally. - * m4/output.c (Includes): Likewise. - * modules/gnu.c (Includes): Likewise. - * modules/m4.c (Includes): Likewise. - * src/m4.h (Includes): Likewise. - - * README-alpha: Update web address. - * README: Likewise. Change encoding to ASCII. Remove old advice - about cygwin. Document bootstrapping dependency. - * AUTHORS: Update from branch-1_4. - * THANKS: Likewise. Change encoding to UTF-8. - * BACKLOG: Delete. This file is too old and unmaintained to be - worthwhile. - * ChangeLog: Change encoding to UTF-8. - - Avoid compiler warnings. - * m4/macro.c (trace_format): Don't mark this as a printf format, - since we don't accept the same set of modifiers as printf. It - would be nice if gcc let us specify a custom format archetype. - * src/main.c (main): Cast away const. - -2006-06-10 Andreas Schwab <schwab@suse.de> (tiny change) - Eric Blake <ebb9@byu.net> - - * modules/time.c (ctime): Pass correctly typed variable to - m4_numeric_arg. - (gmtime): Likewise. - (localtime): Likewise. - (strftime): Likewise. - * m4/utility.c (m4_numeric_arg): For now, document arbitrary - limit inherent in this interface. - -2006-05-08 Bruno Haible <bruno@clisp.org> (tiny change) - - * modules/m4.c (WEXITSTATUS): Provide fallback definition. - (sysval): Use WEXITSTATUS. - * modules/gnu.c (esyscmd): Set sysval to 0xffff, to accomodate both - big-endian and little-endian wait status definitions. - -2006-05-06 Eric Blake <ebb9@byu.net> - - * po/Makevars (MSGID_BUGS_ADDRESS): Add. - * po/POTFILES.in (src/getopt.c, src/version-etc.c): These files live - in src, not gnu. - -2006-05-06 Eric Blake <ebb9@byu.net> - - * configure.ac (LT_CONFIG_LTDL_DIR): Inform libtool which - subdirectory to use. - (support for -pipe): Move after LT_INIT, since it relies on - libtool internals. - -2006-05-05 Eric Blake <ebb9@byu.net> - - * Makefile.am (doc/m4.1): Use $@, not $(srcdir)/doc/$@. - - * THANKS: Update. - -2006-05-05 Bruno Haible <bruno@clisp.org> - and Eric Blake <ebb9@byu.net> - - * configure.ac (gl_SOURCE_BASE, gl_M4_BASE, gl_MODULES): Move to... - * ltdl/m4/gnulib-cache.m4: ...this new file, per new gnulib-tool - usage pattern. - * bootstrap: Update usage of gnulib-tool. - -2006-05-04 Eric Blake <ebb9@byu.net> - - * Makefile.am (doc/m4.1): Use EXEEXT on built binary. - Cleanup whitespace. - -2005-12-05 Gary V. Vaughan <gary@gnu.org> - - * bootstrap (func_update_po): Synch with CVS GNU tar. wget 1.9.x - and 1.10.x support --cache=off, so $WGETFLAGS are not necessary. - Reported by Eric Blake <ebb9@byu.net> - -2005-12-04 Gary V. Vaughan <gary@gnu.org> - - * bootstrap (func_update_po): Test and set $WGETFLAGS to disable - http caching as -C is no longer supported by wget 1.10.x. - Reported by Eric Blake <ebb9@byu.net> - -2005-10-20 Gary V. Vaughan <gary@gnu.org> - - * m4/module.c (caller_id): To match libtool-2.0 interface, changed - to ... - (iface_id): ...an lt_dlinterface_id type. - (m4__module_find): New abstraction for lt_dlhandle_fetch. Use - throughout, instead of calling obsolete lt_dlhandle_find directly. - (m4__module_next): Use multiloader-safe lt_dlhandle_iterate. Use - throughout, instead of calling obsolete lt_dlhandle_next. - * m4/m4private.h (m4__module_find): Declare it. - * m4/builtin.c (m4_builtin_find_by_name, m4_builtin_find_by_func): - Use m4__module_next instead of obsolete lt_dlhandle_next. - -2005-10-20 Gary V. Vaughan <gary@gnu.org> - - * bootstrap (func_update_po): Update pofiles directly from the - translation project. - * po/LINGUAS, po/cs.po, po/de.po, po/el.po, po/fr.po, po/it.po, - po/ja.po, po/nl.po, po/pl.po, po/ru.po, po/sv.po: No need to store - these files under source control anymore. - Suggested by Eric Blake <ebb9@byu.net> - -2005-07-07 Paul Eggert <eggert@cs.ucla.edu> - - * ltdl/m4/m4-gnulib.m4: Update FSF contact address. Somehow this - file escaped the address updates on 2005-05-01. - -2005-07-07 Gary V. Vaughan <gary@gnu.org> - - * bootstrap: Allow user overriding of gnulib-tool location, and - correctly determine module source directories whether gnulib-tool - is given as a relative or absolute path, or is found by searching - PATH. - Reported by Eric Blake <ebb9@byu.net> - -2005-07-07 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> - - * ltdl/m4/debug.m4 (m4_CHECK_DEBUGGING): Make sure that both $rm - and $RM are defined for various versions of - AC_LIBTOOL_COMPILER_OPTION. - - * bootstrap (AUTORECONF): New variable to allow user overriding of - autoreconf path. - -2005-07-07 Gary V. Vaughan <gary@gnu.org> - - * doc/m4.texinfo (History): Add better notes on the ancestory of - GNU m4, and other historical interest. - -2005-05-08 Gary V. Vaughan <gary@gnu.org> - - * m4/symtab.c (m4_symbol_rename): New function that performs a low - level symbol rename. - * m4/m4module.h (m4_symbol_rename): Declare it as part of the API. - * modules/gnu.c (regsub): Factored out of m4_epatsubst_do... - (m4_patsubst_do, m4_renamesyms_do): ...wrappers that use - regsub... - (erenamesyms, renamesyms): ...builtins that use these to implement - macro renaming by regular expression. - * doc/m4.texinfo (Erenamesyms and Renamesyms): Document them. - * tests/generate.awk: Allow some forbidden `m4_' prefixed symbols - to stop the new generated tests from choking. - -2005-05-07 Gary V. Vaughan <gary@gnu.org> - - Since most of the build is handled from a single Makefile.am now, - we can teach make about the dependencies between the m4 binary and - the preopened modules it is built against: - - * configure.ac (PREOPEN_DEPENDENCIES): Substitute for a list of - preopened modules. - * Makefile.am (src_m4_DEPENDENCIES): Rebuild the m4 program if any - of the preopened modules have changed. - -2005-05-07 Gary V. Vaughan <gary@gnu.org> - - * configure.ac (gl_MODULES): Add mkstemp for machines that don't - have a native implementation. - -2005-05-06 Gary V. Vaughan <gary@gnu.org> - - * src/m4.h (EXIT_SUCCESS, EXIT_FAILURE): Removed. These are - handled already by gnu/exit.h. - - * configure.ac (gl_MODULES): Add assert to support a - --disable-assert configure time option for NDEBUG setting. - - * Makefile.am (src_m4_SOURCES): Add version-etc-fsf.c. - * bootstrap (src_modules): Add version-etc-fsf. - * src/main.c (version_etc_copyright): Removed. - - * ltdl/m4/m4-getopt.m4 (m4_GETOPT): Synch with gnulib/getopt.m4. - -2005-05-04 Gary V. Vaughan <gary@gnu.org> - - * 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 <bolo@bolo.com> - -2005-05-04 Vincent Lonngren <Vincent.lonngren.759@student.lu.se> - - Forward port of a patch that allowed m4-1.4.2 to compile on - QNX 6.3: - - * configure.ac (AC_CHECK_HEADERS): Add signal.h, - sys/signal.h. - * src/m4.h: And include them as appropriate. - * src/main.c, src/stackovf.h: Don't include signal.h literally; - m4.h will include the correct file. - -2005-05-04 Gary V. Vaughan <gary@gnu.org> - - * m4/m4private.h: Make errno visible for the sources patched - below. - -2005-05-04 Paul Eggert <eggert@twinsun.com> - - * src/main.c (print_program_name_CB): Preserve errno, since - M4ERROR relies on this. - * modules/gnu.c (m4_esyscmd): Clear errno before calling popen. - * modules/m4.c (m4_maketemp): Clear errno before calling mkstemp. - * m4/path.c (m4_path_search): Don't let "free" trash errno when - returning NULL. - - * m4/output.c (m4_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>. - -2005-05-04 Santiago Vila <sanvila@debian.org> - - * tests/stackovf.test: Use tempfile if available. - -2005-05-04 Robert Bihlmeyer <robbe@orcus.priv.at> (tiny change) - - http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=92629 - * m4/output.c (m4_insert_file): Do not mix buffered and - unbuffered I/O, as this breaks on the Hurd. - -2005-05-04 Gary V. Vaughan <gary@gnu.org> - - Gnulib has changed again. Reimport. Adjust. Rinse. Repeat. - Automake and Libtool now agree on subdir-objects and LTLIBOBJS, - and libtoolize does a better job of ltdl importing now too, so - take advantage of that while updating the tree: - - * acm4, config: Moved from here... - * ltdl/m4, ltdl/config: ...to here. - * doc/Makefile.am, m4/Makefile.am, modules/Makefile.am, - src/Makefile.am, tests/Makefile.am: Removed... - * Makefile.am: ...and migrated to here, with adjustments to - compensate for relative path differences. - * commit: Adjust relative paths. - * configure.ac: Adjust relative paths. - (AC_PREREQ): 2.59 isn't strictly new enough, we also need a - patch. - (LT_PREREQ): 2.0 isn't released yet, but will work when it is! In - the meanwhile, CVS HEAD libtool is needed. - (AM_INIT_AUTOMAKE): Added subdir-objects declaration. 1.9.5 isn't - stricly new enough, we also need a patch. - (AM_PROG_CC_C_O): Required for subdir-objects in Automake. - (AC_WITH_LTDL): Replaced with LT_WITH_LTDL. - (gl_MODULES): Don't list getopt and version-etc, as they don't - belong in libm4. - * bootstrap: After running gnulib-tool to import the listed - modules, fetch getopt and version-etc into src manually. - (ltdldir): Change to ltdl. - * src/main.c: Adjust for changes in version-etc API. - * ltdl/m4/m4-getopt.m4: New macro to mirror gnulib's getopt.m4, - but works when the getopt module isn't to be included in the lib. - * README: Add note about patching autoconf and automake to - bootstrap CVS m4. - -2005-05-02 Matt Kraai <kraai@debian.org> (tiny change) - - 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. - * modules/m4.c (m4_maketemp): Implement the above, by using - mkstemp rather than mktemp. - -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'. - -2005-03-11 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> (tiny change) - - * tests/Makefile (clean-local): Ignore testsuite cleanup - failures. - -2005-03-11 Per Bothner <per@bothner.com> (tiny change) - - * tests/Makefile (clean-local): Only run the testsuite cleanup - if the testsuite has been generated. - -2005-02-11 Stepan Kasal <kasal@ucw.cz> - - * TODO: slight clarification of the example of qindir usage. - -2005-02-08 Gary V. Vaughan <gary@gnu.org> - - * TODO: Add qindir requirement, and defn bug. - From Stepan Kasal <kasal@ucw.cz> - -2005-02-08 Stepan Kasal <kasal@ucw.cz> - - * TODO: Add ``execution stack'', fix a typo. - * doc/m4.texinfo: Typos. - -2004-12-24 Eric Blake <ebb9@byu.net> - - * configure.ac (INCLUDE_STDBOOL_H): Account for gnulib's move - to the gnu subdirectory. - * acm4/m4-error.m4 (INCLUDE_ERROR_H): Likewise. - * acm4/m4-obstack.m4 (INCLUDE_OBSTACK_H): Likewise. - * acm4/m4-regex.m4 (INCLUDE_REGEX_H): Likewise. - * m4/system_.h: Likewise, in non-configured includes. - -2004-10-14 Noah Misch <noah@cs.caltech.edu>, - Gary V. Vaughan <gary@gnu.org> - - * m4/m4.c (m4_context_field_table, m4_context_opt_bit_table): - Protect definitions from macro expansion under -DNDEBUG by - parenthesising the expanded function names. - * m4/syntax.c (m4_get_syntax_lquote, m4_get_syntax_rquote) - (m4_get_syntax_bcomm, m4_get_syntax_ecomm) - (m4_is_syntax_single_quotes, m4_is_syntax_single_comments) - (m4_is_syntax_macro_escaped): Similarly protect function - definitions from macro expansion under -DNDEBUG by #undefing the - matching macro names before each definition. Also, move all the - function definitions to the end of the file so that any - invocations in the rest of the file pick up the fast macro - versions. - * m4/m4private.h (m4_set_symbol_table, m4_set_syntax_table) - (m4_set_debug_file, m4_set_trace_messages) - (m4_set_warning_status_opt, m4_set_no_gnu_extensions_opt) - (m4_set_nesting_limit_opt, m4_set_debug_level_opt) - (m4_set_max_debug_arg_length_opt): New fast macro versions of the - option setter functions. - -2004-09-23 Gary V. Vaughan <gary@gnu.org> - - * po/POTFILES.in: Reflect move of gnulib files from gnulib/m4 - to gnu. - -2004-09-23 Gary V. Vaughan <gary@gnu.org> - - * src/main.c: Include gnulib files from the correct directory. - - * gnulib/*: Don't store any of the gnulib files in arch, as they - generate spurious changes. - * Makefile.am (ACLOCAL_AMFLAGS): Remove gnulib/acm4 since the - gnulib macros now share our macro directory. - (SUBDIRS): Descend into `gnu' rather than `gnulib'. - * bootstrap: Call gnulib-tool to import from the gnulib tree. - (gl_AC_HEADER_INT_TYPES_H, gl_AC_HEADER_STDINT_H, - gl_AC_TYPE_UINTMAX_T): Patch gnulib.m4 to define these in terms of - the gettext macros from autopoint that overwrite the gnulib-tool - imported versions. Import sources and Makefile.am into the `gnu' - directory. Changed all callers. - * configure.ac (gl_EARLY, gl_SOURCE_BASE, gl_M4_BASE, gl_MODULES, - gl_INIT): Call these gnulib-tool macros instead of the hardcoded - for imported modules. - * acm4/m4-error.m4, acm4/m4-gettext.m4, acm4/m4-obstack.m4, - acm4/m4-regex.m4: Use AC_BEFORE to enforce ordering rather than - hardcoding the gnulib macros they wrap. - -2004-07-15 Gary V. Vaughan <gary@gnu.org> - - Latest CVS libtool can preload modules in libraries, including - its own module loaders! Tweak m4 so that it doesn't try to treat - libltdl's module loaders as m4 modules when freezing and on exit: - - * gnulib/acm4/*.m4: Don't store these files in arch since they - generate spurious changes. - * bootstrap: Simplify initial libtoolize call, since CVS - libtoolize is smarter these days. - * doc/Makefile.am (%.1): Make the helptoman call work with a VPATH - build. - * m4/module.h (m4__module_exit): Missing declaration. - * m4/m4private.h (m4__module_next): New function declaration. - * m4/module.c (m4__module_next): lt_dlhandle_{firs,nex}t - encapsulation. Changed all callers. - (m4__module_interface): New function to verify m4 loadable module - interfaces. - (m4__module_init): Register the interface validator. - (m4__module_exit): Only close my own modules. - * modules/m4.c (unistd.h): Provide missing declaration. - (m4_set_sysval, m4_sysval_flush, m4_dump_symbols) - (m4_expand_ranges): More missing declarations. - * modules/modtest.c (export_test): Ditto. - * src/Makefile.am (AM_CPPFLAGS): Add libltdl directory. - * src/main.c (main): Bump copyright year. - * tests/modules.at: Fix sed syntax error. - - -2004-06-17 Gary V. Vaughan <gary@gnu.org> - - Tweaking to enable compilation with latest CVS libtool and - libltdl. We can't just dump the library files directly into the - m4 directory anymore now that libltdl is built from pieces itself: - - * bootstrap: Rewritten to use latest libtoolize sanely, and to - set up libltdl subdirectory. - * configure.ac (AC_CONFIG_AUX_DIR): Point to our own, not the - gnulib subdirectory's config. - (TIMESTAMP): Use $ac_aux_dir for VPATH builds. - (m4_pattern_forbid): Remove the cruft to deal with renamed jm_ - macros from gnulib. - (AC_LIB_LTDL): Latest libltdl is a sub-project with its own - configure.ac, so use AC_WITH_LTDL instead. - * Makefile.am (SUBDIRS): Add libltdl. - * acm4/m4-regex.m4 (jm_INCLUDED_REGEX): Updated. gnulib now uses - gl_INCLUDED_REGEX. - * m4/Makefile.am (AM_CPPFLAGS): Add INCLTDL. - (libm4_la_SOURCES): Remove ltdl.c and ltdl.h. - (libm4_la_LIBADD): Add LIBLTDL. - * m4/ltdl.c, m4/ltdl.h: Removed. - * m4/m4module.h: Include canonical ltdl.h. - * po/*.po: Updated. - -2004-06-14 Gary V. Vaughan <gary@gnu.org> - - * gnulib/import: Now updates makefile fragments, and configure.ac. - * gnulib/m4/gnulib.am: New file. Generated makefile fragments. - * gnulib/m4/Makefile.am: include it. - * gnulib/acm4/intmax.m4, gnulib/acm4/longdouble.m4, - gnulib/acm4/longlong.m4, gnulib/acm4/printf-posix.m4, - gnulib/acm4/signed.m4, gnulib/acm4/size_max.m4, - gnulib/acm4/wchar_t.m4, gnulib/acm4/wint_t.m4, - gnulib/acm4/xsize.m4: New macro files from latest gnulib import. - * gnulib/acm4/alloca.m4, gnulib/acm4/inttypes_h.m4, - gnulib/acm4/lib-ld.m4, gnulib/acm4/lib-prefix.m4, - gnulib/acm4/error.m4, gnulib/acm4/po.m4, gnulib/acm4/regex.m4, - gnulib/acm4/stdbool.m4, gnulib/acm4/stdint_h.m4, - gnulib/acm4/uintmax_t.m4, gnulib/acm4/ulonglong.m4, - gnulib/acm4/unlocked-io.m4, gnulib/acm4/xalloc.m4, - gnulib/acm4/free.m4, gnulib/acm4/gettext.m4, - gnulib/acm4/glibc21.m4: Updated macro files from latest gnulib - import. - * gnulib/m4/getopt_int.h: New source file from latest gnulib - import. - * gnulib/m4/alloca.c, gnulib/m4/alloca_.h, gnulib/m4/getopt1.c, - gnulib/m4/obstack.c, gnulib/m4/obstack.h, gnulib/m4/regex.c, - gnulib/m4/unlocked-io.h, gnulib/m4/version-etc.c, - gnulib/m4/xmalloc.c, gnulib/m4/getopt.c, gnulib/m4/getopt.h: - Updated source files from latest gnulib. - -2004-02-29 Gary V. Vaughan <gary@gnu.org> - - * config/mailnotify: New file for mailing commit notifications, - imported from cvs-utils. - * commit: Updated from cvs-utils and tweaked for m4. - -2003-12-01 Gary V. Vaughan <gary@gnu.org> - - * config/mkstamp: Updated from CVS libtool. - * configure.ac: Generate a gnu coding standards compliant version - number, and use it for the banner. - * Makefile.am (stamp-vcl): New rules to force m4 to be regenerated - mhen the TIMESTAMP changes in ChangeLog, but the file modification - time doesn't (e.g. in cvs commit). Otherwise dist tarballs will - contain the previous version number. - * src/main.c: Make --version output conform to the GNU standard. - - * configure.ac (AM_INIT_AUTOMAKE): Require 1.7g... - * modules/Makefile.am (gnu_la_SOURCES, load_la_SOURCES, - m4_la_SOURCES, traditional_la_SOURCES, modtest_la_SOURCES, - shadow_la_SOURCES, import_la_SOURCES, stdlib_la_SOURCES, - time_la_SOURCES): ...so that these are defaulted correctly, and - can be removed from this file. - (AM_LDFLAGS): Add -module... - (gnu_la_LDFLAGS, load_la_LDFLAGS, m4_la_LDFLAGS, - traditional_la_LDFLAGS, modtest_la_LDFLAGS, shadow_la_LDFLAGS, - import_la_LDFLAGS, stdlib_la_LDFLAGS, time_la_LDFLAGS): ...so that - the individual settings can be removed. - * m4/Makefile.am (libm4_la_LIBADD): Add $(LTLIBINTL) here once... - * module/Makefile.am (gnu_la_LIBADD, load_la_LIBADD, - m4_la_LIBADD, traditional_la_LIBADD, modtest_la_LIBADD, - shadow_la_LIBADD, import_la_LIBADD, stdlib_la_LIBADD, - time_la_LIBADD): ...so that these are picked up as a deplib of - libm4 and don't need to be set explicitly. - -2003-11-18 Gary V. Vaughan <gary@gnu.org> - - * modules/Makefile.am (pkglibexec_LTLIBRARIES): Remove perl.la - from the standard build. It is too fragile. - - * gnulib/acm4/libtool.m4, m4/ltdl.c, m4/ltdl.h: Reimported from - CVS libtool after merging m4 changes across to libtool. - - * m4/symtab.c (m4_symtab_create): Fix a careless use of sizeof. - * m4/path.c (search_path_add): Ditto. - -2003-11-13 Gary V. Vaughan <gary@gnu.org> - - * configure.ac (AC_LIBTOOL_TAGS): Don't include shell code for - libtool tags we don't use in configure. This reduces the size - of the script from over 1Mb to under 700Kb. - -2003-11-13 Gary V. Vaughan <gary@gnu.org> - - The import script was not written properly, and the last gnulib - import was incomplete. Fixed that problem, and reimport our - gnulib dependencies, which picks up the address calculation - overflow checks described by Paul below. Also tweak the clients - of the gnulib xalloc module not to use deprecated macros: - - * gnulib/import: Recurse through module dependencies rather than - naively descending only one level. - * configure.ac: Add calls to gnulib's strnlen and extension module - macros. - * gnulib/m4/Makefile.am: Add snippets from gnulib's strnlen and - extension modules. - * gnulib/acm4/extensions.m4, gnulib/acm4/xalloc.m4, - gnulib/m4/alloca.c, gnulib/m4/obstack.c, gnulib/m4/obstack.h, - gnulib/m4/stdbool_.h, gnulib/m4/unlocked-io.h, gnulib/m4/xalloc.h, - gnulib/m4/xmalloc.c, gnulib/m4/xstrdup.c: Updated from CVS - gnulib. - * gnulib/acm4/libtool.m4: Updated from CVS libtool. - * m4/hash.c (m4_get_hash_iterator_next): Use `xzalloc (S)' in - place of `xcalloc (1, S)'. - * m4/m4.c (m4_create): Likewise. - * m4/m4private.h (m4_symbol_value_create): Likewise. - * m4/symtab.c (symtab_fetch): Likewise. - * m4/syntax.c (m4_syntax_create): Likewise. - * src/freeze.c (reload_frozen_state): Likewise. - * m4/path.c (search_path_add): Eliminate use of deprecated NEW - macro. - * m4/symtab.c (m4_symtab_create): Likewise. - -2003-11-13 Gary V. Vaughan <gary@gnu.org> - - * tests/module.at: Comment typo. - -2003-10-10 Gary V. Vaughan <gary@gnu.org> - - * tests/modules.at (modules: importing): Apply some lateral - thinking, and use AT_CHECK to compare the output of a sed pass - over stderr against the canonical strerror string. - - * tests/modules.at (modules: importing): Edit the generated stderr - output to canonicalize strerror output, before a comparison. - -2003-10-10 Gary V. Vaughan <gary@gnu.org> - - Tru64UNIX perl is sloppy with namespace pollution. This patch is - careful not to trip over the mess: - - * modules/perl.c: Some builds of perl install headers that contain - `#define try __builtin_try'. Be sure to undefine that macro - before `m4/hash.h' gets included, which uses the `try' symbol. - * m4/system_.h: Similarly for `bool'. Undefine `bool', `true' and - `false' before including `stdbool.h'. - (DELETE): This symbol is not in m4's namespace, and is in any - case only used internally... - * m4/m4private.h (DELETE): ...so move it to here. - Reported by Martin MOKREJS <mmokrejs@natur.cuni.cz> - -2003-10-08 Paul Eggert <eggert@twinsun.com> - - Don't use XMALLOC and XCALLOC. Once we install the - corresponding patch into gnulib, this will fix some - address-calculation overflow bugs on hosts where calloc (A, B) - returns garbage when A*B overflows. - - * m4/hash.c (m4_hash_new, node_new, m4_hash_resize, - maybe_grow, m4_get_hash_iterator_next): Replace XMALLOC with - xmalloc, XCALLOC with xcalloc. - * m4/m4.c (m4_create): Likewise. - * m4/m4private.h (m4_symbol_value_create): Likewise. - * m4/output.c (m4_output_init): Likewise. - * m4/symtab.c (symtab_fetch, m4_set_symbol_traced): Likewise. - * m4/syntax.c (remove_syntax_attribute): Likewise. - * src/freeze.c (reload_frozen_state): Likewise. - * src/main.c (main): Likewise. - -2003-10-07 Gary V. Vaughan <gary@gnu.org> - - * Makefile.am (ACLOCAL_AMFLAGS): Search in the new acm4 and - gnulib/acm4 directories for aclocal m4 macros. - * gnulib/Makefile.am (EXTRA_DIST): Removed. - (MAINTAINERCLEANFILES): Add Makefile.in. - * configure.ac (m4_GNULIB_MODULES): Use it to declare which gnulib - modules we use. - * acm4/m4-gnulib.m4 (m4_GNULIB_MODULES): New macro. - * gnulib/import: New file. Temporary script for updating gnulib - imported files, until gnulib-tool is working. - * gnulib/config/codeset.m4, gnulib/config/error.m4, - gnulib/config/exitfail.m4, gnulib/config/extensions.m4, - gnulib/config/getopt.m4, gnulib/config/gettext.m4, - gnulib/config/glibc21.m4, gnulib/config/iconv.m4, - gnulib/config/intdiv0.m4, gnulib/config/inttypes-pri.m4, - gnulib/config/inttypes.m4, gnulib/config/inttypes_h.m4, - gnulib/config/isc-posix.m4, gnulib/config/lcmessage.m4, - gnulib/config/lib-ld.m4, gnulib/config/lib-link.m4, - gnulib/config/lib-prefix.m4, gnulib/config/malloc.m4, - gnulib/config/nls.m4, gnulib/config/obstack.m4, - gnulib/config/onceonly_2_57.m4, gnulib/config/po.m4, - gnulib/config/progtest.m4, gnulib/config/realloc.m4, - gnulib/config/regex.m4, gnulib/config/restrict.m4. - gnulib/config/stdbool.m4, gnulib/config/stdint_h.m4, - gnulib/config/strerror_r.m4, gnulib/config/strndup.m4, - gnulib/config/strnlen.m4, gnulib/config/strtol.m4, - gnulib/config/uintmax_t.m4, gnulib/config/ulonglong.m4, - gnulib/config/unlocked-io.m4, gnulib/config/xalloc.m4, - gnulib/config/xstrndup.m4: Removed. - * gnulib/acm4/alloca.m4, gnulib/acm4/codeset.m4, - gnulib/acm4/error.m4, gnulib/acm4/exitfail.m4, - gnulib/acm4/extensions.m4, gnulib/acm4/free.m4, - gnulib/acm4/getopt.m4, gnulib/acm4/gettext.m4, - gnulib/acm4/glibc21.m4, gnulib/acm4/iconv.m4, - gnulib/acm4/intdiv0.m4, gnulib/acm4/inttypes-pri.m4, - gnulib/acm4/inttypes.m4, gnulib/acm4/inttypes_h.m4, - gnulib/acm4/isc-posix.m4, gnulib/acm4/lcmessage.m4, - gnulib/acm4/lib-ld.m4, gnulib/acm4/lib-link.m4, - gnulib/acm4/lib-prefix.m4, gnulib/acm4/malloc.m4, - gnulib/acm4/nls.m4, gnulib/acm4/obstack.m4, - gnulib/acm4/onceonly_2_57.m4, gnulib/acm4/po.m4, - gnulib/acm4/progtest.m4, gnulib/acm4/realloc.m4, - gnulib/acm4/regex.m4, gnulib/acm4/restrict.m4. - gnulib/acm4/stdbool.m4, gnulib/acm4/stdint_h.m4, - gnulib/acm4/strerror_r.m4, gnulib/acm4/strndup.m4, - gnulib/acm4/strnlen.m4, gnulib/acm4/strtol.m4, - gnulib/acm4/uintmax_t.m4, gnulib/acm4/ulonglong.m4, - gnulib/acm4/unlocked-io.m4, gnulib/acm4/xalloc.m4, - gnulib/acm4/xstrndup.m4: Reimported from CVS gnulib with - gnulib/import script. - * gnulib/m4/alloca.c, gnulib/m4/alloca_.h, gnulib/m4/error.c, - gnulib/m4/error.h, gnulib/m4/exitfail.c, gnulib/m4/free.c, - gnulib/m4/malloc.c, gnulib/m4/obstack.c, gnulib/m4/obstack.h, - gnulib/m4/realloc.c, gnulib/m4/regex.c, gnulib/m4/strtol.c, - gnulib/m4/version-etc.c, gnulib/m4/version-etc.h, - gnulib/m4/xalloc.h, gnulib/m4/xmalloc.c: Updated from CVS - gnulib with gnulib/import script. - * configure.ac, gnulib/m4/Makefile.am: Manually insert anticipated - guards ready for gnulib-tool to autoupdate on import. - * config/debug.m4, config/gmp.m4, config/m4-error.m4, - config/m4-gettext.m4, config/m4-obstack.m4, config/m4-regex.m4, - config/stackovf.m4: Moved from here... - * acm4/debug.m4, acm4/gmp.m4, acm4/m4-error.m4, - acm4/m4-gettext.m4, acm4/m4-obstack.m4, acm4/m4-regex.m4, - acm4/stackovf.m4: ...to here, to separate aclocal macros from - configure time helper scripts. - * config/error.m4: Removed; superceded by gnulib/acm4/error.m4. - * m4/hash.c, m4/m4.c, m4/macro.c, m4/module.c, m4/output.c, - m4/path.c, m4/symtab.c, m4/syntax, m4/system_.h, modules/m4.c, - src/main.c, src/stackovf.c: s/xfree/free/g to comply with new - gnulib xalloc.h. - * src/main.c (version_etc_copyright): Only output the current - year. - (version_etc): Call with new variadic API. - -2003-09-16 Gary V. Vaughan <gary@gnu.org> - - * gnulib/m4/version-etc.c, gnulib/m4/version-etc.h: Import - version-etc module from CVS gnulib. - * po/POTFILES.in: Add gnulib/m4/version-etc.c. - * src/Makefile.am: Build it. - * src/main.c: Use it. - - * gnulib/m4/exit.h: Import exit module from CVS gnulib. - * gnulib/m4/Makefile.am (pkginclude_HEADERS): Add exit.h. - * m4/system_.h: Don't define EXIT_SUCCESS and FAILURE, include - exit.h instead. - -2003-09-15 Charles Wilson <cygwin@cwilson.fastmail.fm>, - Gary V. Vaughan <gary@gnu.org> - - * bootstrap: Separate options. - * configure.ac (AM_GNU_GETTEXT_VERSION): Bump to 0.12.1. - * gnulib/m4/Makefile.am (stdbool.h): Use srcdir, gnulib_srcdir is - not set. - * modules/Makefile.am (gnu_la_LIBADD, load_la_LIBADD) - (m4_la_LIBADD, mpeval_la_LIBADD, traditianal_la_LIBADD) - (modtest_la_LIBADD, import_la_LIBADD, perl_la_LIBADD) - (shadow_la_LIBADD, stdlib_la_LIBADD, time_la_LIBADD): Add - $(LTLIBINTL) for gettext support on cygwin. - * src/Makefile.am (m4_LDADD): Remove $(INTLLIBS), since we now - have $(LTLIBINTL) from the preloaded module la files. - * README: Remove the warning about using --disable-nls on Windows - machines. - -2003-09-15 Gary V. Vaughan <gary@gnu.org> - - * gnulib/m4/regex.c: s/<regex.h>/"regex.h"/ or else the compiler - picks up the system regex.h if gl_REGEX decides gnulib/m4/regex.c - is required. - -2003-09-12 Gary V. Vaughan <gary@gnu.org> - - * doc/STYLE: Document the gnulib header naming conventions, and - #include policy. - * gnulib/m4/error_.h, gnulib/m4/gettext_.h, gnulib/m4/obstack_.h, - gnulib/m4/regex_.h: Renamed to gnulib/m4/error.h, - gnulib/m4/gettext.h, gnulib/m4/obstack.h, gnulib/m4/regex.h - respectively. - * gnulib/m4/Makefile.am: Remove the rules to build these headers. - - * gnulib/m4/strtol.c, gnulib/config/strtol.m4: Import strtol - module from CVS gnulib. - * configure.ac (AC_REPLACE_FUNCS): Remove strtol. - (gl_FUNC_STRTOL): In favour of the module macro. - -2003-09-12 Gary V. Vaughan <gary@gnu.org> - - Replace the getopt code with CVS gnulib getopt. The source files - detect whether they are in a glibc environment and preprocess away - all of the code if there is a system getopt, so we can compile - them into the m4 executable unconditionally: - - * gnulib/m4/getopt.c, gnulib/m4/getopt1.c, gnulib/m4/getopt.h, - gnulib/config/getopt.m4: Import getopt module from CVS gnulib. - * configure.ac (gl_GETOPT): Use this instead of homebrew inline - macros. - * src/getopt.c, src/getopt1.c, src/gnu-getopt.h: Removed old - version. - * src/Makefile.am: Adjust. - * src/main.c: Always include our shipped getopt.h. - * po/POTFILES.in: Use new location of getopt.c. - -2003-09-12 Gary V. Vaughan <gary@gnu.org> - - * configure.ac (AC_CONFIG_FILES): Remove config/Makefile. - * config/Makefile.am: Removed. Automake 1.8 distributes the files - in this directory automatically. - * Makefile.am (EXTRA_DIST): Except config/mkstamp. - - * configure.ac (pkglibexecdir): Don't try and set it here, PACKAGE - isn't set yet. - * m4/Makefile.am (MODULE_PATH): Removed. Calculate pkglibexecdir - inline. - * modules/Makefile.am (pkglibexecdir): Set it here. - (pkgmodincdir): Renamed to pkgmodincludedir). Changed all clients. - - * gnulib/m4/regex.c, gnulib/m4/regex_.h, gnulib/config/regex.m4: - Import regex module from CVS gnulib. - * gnulib/config/restrict.m4: Ditto for dependee module restrict. - * config/m4-regex.m4 (m4_REGEX): Wrap gnulib/config/regex.m4, but - do extra substitutions for Makefile. - * configure.ac: Use it. - * gnulib/m4/Makefile.am: Maybe install regex.h after linking it - from regex_.h if necessary. - * m4/system_.h: Include the correct version of regex.h. - * m4/regex.c, m4/regex.h, config/regex.m4: Removed legacy - version. - * po/POTFILES.in: Use new location of regex.c. - - * gnulib/m4/Makefile.am (EXTRA_DIST): Removed malloc.c and - realloc.c: automake distributes these files already. - -2003-09-12 Gary V. Vaughan <gary@gnu.org> - - Replace the xstrzdup code by importing the xstrndup module from - CVS gnulib, along with its dependencies: strndup and strnlen: - - * gnulib/m4/xstrndup.c, gnulib/m4/xstrndup.h, - gnulib/config/xstrndup.m4: Import xstrndup module from CVS - gnulib. - * gnulib/m4/strndup.c, gnulib/m4/strndup.h, - gnulib/config/strndup.m4: Ditto wrt strndup. - * gnulib/m4/strnlen.c, gnulib/config/strnlen.m4: Ditto wrt - strnlen. - * gnulib/m4/Makefile.am: Add rules from newly imported modules. - However, contrary to gnulib, we install xstrndup.h. - * configure.ac (AC_REPLACE_FUNCS): Remove xstrzdup. - * gnulib/lib/xstrzdup.c: Delete. This was never a gnulib file, it - is an artifact of the old m4 portability layer. - * configure.ac (gl_XSTRNDUP): This is the gnulib equivalent. - * m4/system_.h: Include xstrndup.h. - * m4/macro.c (process_macro): Call xstrndup, not xstrzdup. - -2003-09-11 Gary V. Vaughan <gary@gnu.org> - - Reimport the latest xalloc module from CVS gnulib, and adjust the - m4 sources to take advantage of xalloc xfree. Also create a new - macro DELETE with the same semantics as the old m4 XFREE macro, - and carefully tweak callers: - - * gnulib/config/xalloc.m4, gnulib/m4/xalloc.h: Updated from CVS - gnulib. - * m4/utility.c (xfree): Removed. This function is now supplied by - gnulib xalloc. - * m4/m4private.h (WITH_DMALLOC): Removed XFREE redefine. - * m4/path.c (search_path_add): Use NEW macro from xalloc.h. - * m4/symtab.c (m4_symtab_create): Ditto. - * m4/system_.h: Removed XFREE redefine. - (DELETE): New macro with same functionality as the original m4 - XFREE macro, but based on xalloc.h now. Changed all callers. - * src/main.c (main): Use XMALLOC macro. - * m4/hash.c, m4/macro.c, m4/symtab.c, m4/syntax.c: Use xfree - instead of XFREE. - * m4/output.c (m4_output_exit): Use DELETE instead of XFREE. - -2003-09-10 Gary V. Vaughan <gary@gnu.org> - - Import the xalloc module from CVS gnulib, along with its - dependencies: exitfail, malloc and realloc. We had different - semantics for our XFREE and a function xfree() not supplied by - gnulib, so also a bit of work to keep everything running - smoothly: - - * configure.ac (AC_REPLACE_FUNCS): Removed xmalloc and xstrdup. - (gl_XALLOC): Use gnulib equivalents. - * gnulib/config/exitfail.m4, gnulib/m4/exitfail.h, - gnulib/m4/exitfail.c: Import exitfail module from CVS gnulib. - * gnulib/config/malloc.m4, gnulib/m4/malloc.c: Ditto wrt malloc. - * gnulib/config/realloc.m4, gnulib/m4/realloc.c: Ditto wrt - realloc. - * gnulib/config/xalloc.m4, gnulib/m4/xalloc.h, - gnulib/m4/xmalloc.c, gnulib/m4/xstrdup.c: Ditto wrt xalloc. - * gnulib/m4/Makefile.am: Add fragment from gnulib for newly - imported modules. - (pkgincdir): Removed. Use pkgincludedir instead. - * m4/m4private.h (XFREE): xfree already checks for NULL. - * m4/system_.h: Use xalloc module, and remove macros already - supplied by xalloc.h. - * m4/utility.c (xfree): xalloc does not yet implement xfree, so - moved the old definition from m4/xmalloc.c to here for now. - -2003-09-09 Gary V. Vaughan <gary@gnu.org> - - Import the error and progname modules from CVS gnulib. Our old - error.c subsumed the functionality of both, so a little adjustment - was required to accomodate the split in sources. Also added more - wrapper macros to choose between a system installed error.h or our - shipped gnulib error module: - - * m4/error.c, m4/error.h: Removed. - * m4/Makefile.am: Adjust. - (pkgincdir): Removed. Use pkgincludedir instead. - * m4/module.h, src/main.c: Don't include `m4/error.h'. - * m4/system_.h (INCLUDE_ERROR_H): Add a substitution for suitable - error.h. - * gnulib/m4/progname.c: Imported from CVS gnulib. - * gnulib/m4/progname.h: Ditto. - * src/main.c: Adjust to use progname module. - * gnulib/m4/error.c: Imported from CVS gnulib. - * gnulib/m4/error_.h: Ditto. - * gnulib/m4/Makefile.am: Build the error module into our libgnu.la - if appropriate, and link a local error.h if the system version is - missing. - (libgnu_la_SOURCES) Add progname module sources. - * gnulib/config/error.m4: Imported from CVS gnulib. - * gnulib/config/strerror_r.m4: Ditto. - * config/m4-error.c: New file. Wrap gnulib error.m4 but arrange - to have ERROR_H for Makefile substitutions and tell system.h - whether the system error.h should be used, or a locally installed - version. - * configure.ac (jm_PREREQ_ERROR): Replaced by a call to m4_ERROR. - -2003-09-09 Gary V. Vaughan <gary@gnu.org> - - * gnulib/m4/Makefile.am (MOSTLYCLEANFILES): Typo - s/gettext_.h/gettext.h/. - - * bootstrap: Revert 2003-09-04 patch now that CVS autoconf and - automake have been fixed. - - * config/m4-obstack.m4 (m4_FUNC_OBSTACK): D'oh! Now that we wrap - gl_OBSTACK, which in turn calls AC_FUNC_OBSTACK, don't rerun bits - of code originally snarfed from AC_FUNC_OBSTACK!!! While I'm here - rename to m4_OBSTACK in light of wrapping gl_OBSTACK. - -2003-09-09 Gary V. Vaughan <gary@gnu.org> - - The gnulib obstack module requires the gnulib gettext module for - systems that do not have GNU gettext installed. Because we use - -Ignulib/m4 in our Makefiles it is not safe to drop gettext.h in - that directory incase it clashes with the system gettext.h. This - delta uses gettext_.h and extra rules in the Makefile to make a - link to gettext.h when needed: - - * Makefile.am (auxdir): Removed. No longer used. - * configure.ac (ac_aux_dir): Removed AC_SUBST. No longer used. - (TIMESTAMP): List path to `mkstamp' literally, as ac_aux_dir has - moved. - (AC_CONFIG_LIBOBJ_DIR): Declare this for possible future single - Makefile based build. - (AC_CONFIG_AUX_DIR): Now we use gnulib/config where the majority - of the macros are kept. - * Makefile.am (ACLOCAL_MFLAGS): Search gnulib/config first. - * configure.ac (AM_INIT_AUTOMAKE): Require 1.7a. - * config/Makefile (ACLOCAL_MACROS): Removed. Automake 1.7a - distributes these automatically. - * config/regex.m4 (jm_WITH_REGEX): Fixed underquoting to prevent - warning from automake-1.7a. - * config/debug.m4 (M4_AC_CHECK_DEBUGGING): Renamed to - m4_CHECK_DEBUGGING for consistency with gnulib prefixes. Changed - all callers. - * config/m4-obstack.m4 (M4_AC_FUNC_OBSTACK): Ditto - wrt. m4_FUNC_OBSTACK. - * config/stackovf.m4 (M4_AC_SYS_STACKOVF): Ditto - wrt. m4_sys_STACKOVF. - * config/gmp.m4 (_M4_AC_LIB_GMP, M4_AC_LIB_GMP): Ditto - wrt. _m4_LIB_GMP, m4_LIB_GMP. - (ac_gmp_save_LIBS, ac_cv_using_lib_gmp): Don't use autoconf's - namespace. Renamed to m4_gmp_save_LIBS and m4_cv_using_lib_gmp - respectively. - * config/m4-gettext.m4: New file to set GETTEXT_H appropriately. - * gnulib/m4/Makefile.am: Added a new block to make an appropriate - gettext.h link on deficient systems. - (pkginc_HEADERS): Mention $(GETTEXT_H). - (EXTRA_HEADERS): Mention gettext.h. - * gnulib/config/gettext_.h: New file from gnulib's gettext.h. - * gnulib/config/codeset.m4, gnulib/config/gettext.m4, - gnulib/config/glibc21.m4, gnulib/config/iconv.m4, - gnulib/config/intdiv.m4, gnulib/config/inttypes-pri.m4, - gnulib/config/inttypes.m4, gnulib/config/inttypes_h.m4, - gnulib/config/isc-posix.m4, gnulib/config/lcmessage.m4, - gnulib/config/lib-ld.m4, gnulib/config/lib-link.m4, - gnulib/config/lib-prefix.m4, gnulib/config/nls.m4, - gnulib/config/po.m4, gnulib/config/progtest.m4, - gnulib/config/stdint_h.m4, gnulib/config/uintmax_t.m4, - gnulib/config/ulonglong.m4: Imported from CVS gnulib. - -2003-09-05 Gary V. Vaughan <gary@gnu.org> - - We can't mirror the gnulib directory structure here, since we need - to be able to eg. `#include <m4/obstack.h>' from our source files, - which is much easier if the local obstack.h is created in a - directory named m4. Rather than trying to symlink everything into - the m4 directory, now we build a libtool convenience library from - the sources we get from gnulib and link that with libm4.la: - - * gnulib/config/extensions.m4: Imported from CVS gnulib. - * gnulib/config/unlocked-io.m4: Ditto. - * gnulib/m4/unlocked-io.h: Ditto. - * gnulib/m4/obstack.m4, gnulib/m4/onceonly_2_57.m4, - gnulib/m4/stdbool.m4: All moved to gnulib/config directory. - * gnulib/lib/obstack.c, gnulib/lib/obstack_.h, - gnulib/lib/stdbool_.h: All moved to gnulib/m4 directory. - * m4/strtol.c, m4/xmalloc.c, m4/xstrdup.c, m4/xstrzdup.c: Ditto. - * m4/Makefile.am: Adjust. - * gnulib/Makefile.am (EXTRA_DIST): Name just the additional gnulib - macros we redistribute. - * gnulib/m4/Makefile.am: New file. Build libgnu.la convenience - library among others. - (GNULIB_SRCS, GNULIB_MACROS): Removed. - * Makefile.am (ACLOCAL_AMFLAGS): Adjust. - * config/m4-obstack.m4: Adjust. - * po/POTFILES.in: Adjust. - * configure.ac: Reformatting. Call newly imported gnulib macros. - * m4/builtin.c, m4/macro.c, m4/module.c, m4/utility.c: Removed - bogus calls of `#include "m4.h"'. - * Makefile.am: INCLUDES has been deprecated in favour of - AM_CPPFLAGS. - * m4/Makefile.am: Ditto. - * modules/Makefile.am: Ditto. - * src/Makefile.am: Ditto. - -2003-09-05 Gary V. Vaughan <gary@gnu.org> - - * config/Makefile.am: Reverting yesterdays patch for VPATH builds. - -2003-09-04 Gary V. Vaughan <gary@gnu.org> - - Migrate the obstack support into the gnulib directories for easy - synchronisation with upstream files in gnulib: - - * config/gnu-obstack.m4: Moved from here... - * config/m4-obstack.m4: ...to here. - * config/Makefile.am (SPECIFIC_MACROS): Adjust. - * m4/obstack.c, m4/obstack_.h: Moved from here... - * gnulib/obstack.c, gnulib/obstack.h: ...to here. - * po/POTFILES.in: Adjust. - * gnulib/Makefile.am (GNULIB_SRCS, GNULIB_MACROS): Adjust. - * m4/Makefile.am: Add a whole new section to link the obstack - sources from the gnulib tree if necessary. - * gnulib/m4/onceonly_2_57.m4, gnulib/m4/obstack.m4: New macros - from gnulib. - * config/m4-obstack.m4: Rewrite as a wrapper for - gnulib/m4/obstack.m4. - -2003-09-04 Gary V. Vaughan <gary@gnu.org> - - GNU M4 currently builds with a number of files adapted from - upstream sources. Recently the gnulib project on savannah.gnu.org - has pulled together a great many of these externally maintained - files. This delta is the beginnings of isolating those files - maintained in gnulib to make it easy to synchronise M4 with the - upstream files prior to releases. - - * Makefile.am (ACLOCAL_AMFLAGS): Mention gnulib/m4 macro - directory. - (SUBDIRS): Added new gnulib subdirectory. - * configure.ac (AC_CONFIG_FILES): Add new gnulib tree Makefiles. - * config/stdbool.m4: Moved from here... - * gnulib/m4/stdbool.m4: ...to here. - * m4/stdbool_.h: Moved from here... - * gnulib/lib/stdbool_.h: ...to here. - * gnulib/Makefile.am: New file. Make sure the gnulib tree is - distributed. - * m4/Makefile.am: Adjust gnulib/modules/stdbool:Makefile.am based - code to work with new stdbool_.h location. - (gnulib_srcdir): New. - -2003-09-04 Gary V. Vaughan <gary@gnu.org> - - * config/Makefile.am (MAINTAINERCLEANFILES, ACLOCAL_MACROS) - (STANDARD_TOOLS, SPECIFIC_MACROS): Needed `$(srcdir)/' for VPATH - builds to work. - (SPECIFIC_TOOLS): New variable. Moved mkstamp to here. - (EXTRA_DIST): Use it. - - * bootstrap: CVS autoreconf leaves file droppings. Remove - aclocal.m4t incase autoreconf doesn't. - -2003-08-29 Gary V. Vaughan <gary@gnu.org> - - * m4/gnu-obstack.h: Updated from CVS gnulib. For consistency with - the other gnulib imports, renamed to m4/obstack_.h. - * m4/obstack.c: Updated from CVS gnulib. - * m4/Makefile.am (EXTRA_HEADERS): Adjust. - * config/gnu-obstack.m4 (M4_AC_FUNC_OBSTACK): Merge in additional - header tests from gnulib obstack module. AC_CONFIG_LINKS knows - about vpath already, and $top_srcdir upsets CVS Automake, so the - $top_srcdir reference was removed. - - * m4/system-h.in: For consistency with the gnulib imports, renamed - to m4/system_.h. - * m4/Makefile (EXTRA_HEADERS): Adjust. - * configure.ac (AC_CONFIG_FILES): Adjust. - - * m4/stdbool_.h: New file from gnulib for systems without their - own. - * m4/Makefile.am: Add snippets from gnulib for C99 bool support. - * config/stdbool.m4: New file. Macros from gnulib for same. - * configure.ac: Use it. - -2003-08-27 Gary V. Vaughan <gary@gnu.org> - - * config/debug.m4: `perl -pi.bak -e 's/(Copyright) (\d)/$1 (C) $2/g'` - * config/gmp.m4: Ditto. - * config/gnu-obstack.m4: Ditto. - * config/stackovf.m4: Ditto. - * m4/builtin.c: Ditto. - * m4/debug.c: Ditto. - * m4/error.c: Ditto. - * m4/error.h: Ditto. - * m4/gnu-obstack.h: Ditto. - * m4/hash.c: Ditto. - * m4/hash.h: Ditto. - * m4/input.c: Ditto. - * m4/m4.c: Ditto. - * m4/m4module.h: Ditto. - * m4/m4private.h: Ditto. - * m4/macro.c: Ditto. - * m4/module.c: Ditto. - * m4/obstack.c: Ditto. - * m4/output.c: Ditto. - * m4/path.c: Ditto. - * m4/regex.c: Ditto. - * m4/regex.h: Ditto. - * m4/strtol.c: Ditto. - * m4/symtab.c: Ditto. - * m4/syntax.c: Ditto. - * m4/utility.c: Ditto. - * m4/xmalloc.c: Ditto. - * m4/xstrdup.c: Ditto. - * m4/xstrzdup.c: Ditto. - * modules/evalparse.c: Ditto. - * modules/format.c: Ditto. - * modules/gnu.c: Ditto. - * modules/import.c: Ditto. - * modules/load.c: Ditto. - * modules/m4.c: Ditto. - * modules/m4.h: Ditto. - * modules/modtest.c: Ditto. - * modules/mpeval.c: Ditto. - * modules/perl.c: Ditto. - * modules/shadow.c: Ditto. - * modules/stdlib.c: Ditto. - * modules/time.c: Ditto. - * modules/traditional.c: Ditto. - * src/freeze.c: Ditto. - * src/getopt.c: Ditto. - * src/getopt1.c: Ditto. - * src/m4.h: Ditto. - * src/main.c: Ditto. - * src/stackovf.c: Ditto. - - * config/gmp.m4 (M4_AC_LIB_GMP): Use AC_INCLUDES_DEFAULT: - ac_default_headers is an autoconf internal variable. - * config/gnu-obstack.m4 (M4_AC_FUNC_OBSTACK): Ditto. - * config/stackovf.m4 (M4_AC_SYS_STACKOVF): Ditto. - - * configure.ac (AC_CONFIG_FILES): Add tests/atlocal. - * tests/Makefile.am (TESTS_ENVIRONMENT): Revert the 2003-08-14 - delta. - -2003-08-15 Gary V. Vaughan <gary@gnu.org> - - * configure.ac (AC_HEADER_STDBOOL, INCLUDE_STDBOOL_H): Check for - C99 bool. - * system-h.in (m4_boolean): Removed in favour of using C99 bool if - possible or faking one with a typedef. Changed all callers. - -2003-08-15 Gary V. Vaughan <gary@gnu.org> - - Still cleaning up the users' module API, by taking out the stuff - that isn't used by any existing modules, and moving specialised - functions out of libm4 and into the module they are used by. - - * m4/m4module.h (m4_skip_space): No need to export this. Moved... - * m4/utility.c (m4_skip_space): ...to here the home of its only - use, made static and renamed to `skip_space'. Changed all - callers. - * m4/m4module.h (m4_expand_ranges): Removed prototype. - * m4/utility.c (m4_expand_ranges): Moved definition from here... - * modules/m4.c (m4_expand_ranges): ...to here, and exported using - ltdl. - * modules/m4.h (m4_expand_ranges_func): For lt_dlsym import - casting . - * modules/gnu.c (builtin_syntax): Import and use in this - builtin implementation. - * m4/m4module.h (M4_DEBUG_PRINT1, M4_DEBUG_PRINT2, M4_DEBUG_PRINT3): - Not used. Deleted. - * m4/macro.c (trace_flush): Except here where the macro is now - manually inlined. - * m4/m4module.h (M4_DEBUG_MESSAGE, M4_DEBUG_MESSAGE1) - (M4_DEBUG_MESSAGE2, M4_DEBUG_MESSAGE3): Only used internally, so - moved... - * m4/m4private.h (M4_DEBUG_MESSAGE, M4_DEBUG_MESSAGE1) - (M4_DEBUG_MESSAGE2, M4_DEBUG_MESSAGE3): ...to here. - -2003-08-14 Gary V. Vaughan <gary@gnu.org> - - * config/gnu-obstack.m4 (M4_AC_FUNC_OBSTACK): Use the interrim new - compiler based AC_CHECK_HEADER that was introduced in - autoconf-2.56. - * config/stackovf.m4 (M4_AC_SYS_STACKOVF): Ditto. - * config/gmp.m4 (AC_LIB_GMP): Ditto. And renamed to M4_AC_LIB_GMP. - * configure.ac: Use renamed M4_AC_LIB_GMP. - - * config/debug.m4 (M4_AC_CHECK_DEBUGGING): Don't AC_REQUIRE a - macro that requires arguments! This stops the shell's bad - substitution error at configure time. - - * tests/Makefile.am (TESTS_ENVIRONMENT): Now we can pass make - variables to the testsuite shell. Set the value of USE_GMP so - that the gmp test will run! - (check-local, clean-local): Use the TESTS_ENVIRONMENT variable. - -2003-08-11 Gary V. Vaughan <gary@gnu.org> - - Libltdl already has an excellent mechanism for accessing C symbols - in modules. Lets use that! Remove all the exporting cruft and - just use lt_dlsym in conjunction with a few conventions to - simplify module writers' jobs. Also removed the table address - caching code and otherwise simplified the module loader quite a - bit. To access exported symbols in other modules, first the - exporting module must name the symbols <modname>_LTX_<symname>, - and the importing module must define a function type called - <symname>_func. The importer then adds - M4_MODULE_IMPORT(<modname>, <symname>) at the top of any function - that wishes to call out to the exported functions. Care must be - taken that <symname> is non-NULL in the importing module incase - M4_MODULE_IMPORT fails, but otherwise it can be called as if the - definition was in the importers source. Study - `modules/{gnu.c,m4.{c,h}' for a model example. At the moment, - m4_module_import will attempt to automatically load a module - required for symbol access if it is not loaded already. - - * TODO: Removed the items fixed in this delta. - * m4/ltdl.c (lt_dlhandle_find): New function to find a handle by - module name. - * m4/ltdl.h (lt_dlhandle_find): Declare it. - * m4/module.c (m4_module_unload): Use it. - * src/freeze.c (reload_frozen_state): Ditto. - * m4/m4module.h (m4_export): Deleted. Removed all references. - (M4_MODULE_IMPORT): New user convenience macro for importing - arbitrary symbols from other modules. - * m4/module.c (m4_module_import): New function to service - M4_MODULE_IMPORT macro. - (module_data): Removed. Looking up the tables on demand with - lt_dlsym, rather than caching their addresses here simplifies the - code substantially. - (m4_get_module_builtin_table, m4_get_module_macro_table): - Removed. Changed all callers. - (set_module_macro_table, set_module_builtin_table): Renamed to - install_macro_table and install_builtin_table respectively, and - simplified now that the cache is no more. - * modules/gnu.c (builtin_symbols): Use this new mechanism to - import m4_dump_symbols from the m4 module. - (builtin_esyscmd): Likewise for m4_set_sysval and - m4_sysval_flush. - * modules/m4.c (m4_export_table): Removed. Functions are - addressed with the new mechanism which doesn't need this. - (m4_set_sysval): New exported accessor function to prevent - problems with variable access on inferior architectures. - * modules/m4.h (m4_sysval_flush_func, m4_set_sysval_func) - (m4_dump_symbols_func): Typedefs required by M4_MODULE_IMPORT so - that we can have some type safety. - * modules/modtest.c (export_test): C level exported function for - testing the new import mechanism. - * modules/import.c: New file for the import end of the test. - * modules/Makefile.am (pkglibexec_LTLIBRARIES): Added import.la. - * tests/modules.at: New test cases for intermodule symbol - importing. - -2003-08-07 Gary V. Vaughan <gary@gnu.org> - - * m4/m4module.c (m4_string): Moved from here... - * m4/m4private.c (m4_string): ...to here. - - * m4/utility.c (dumpdef_cmp): Removed stale declaration. - -2003-07-29 Gary V. Vaughan <gary@gnu.org> - - * m4/m4module.h (M4_DEFAULT_NESTING_LIMIT): This value is - already available to module writers through - m4_{get,set}_nesting_limit_opt(), so moved from here... - * m4/m4.c (DEFAULT_NESTING_LIMIT): ...to here and renamed. - (m4_create): Use it. - -2003-07-28 Gary V. Vaughan <gary@gnu.org> - - Aside from auditing path.c for m4module.h api obfuscation, this - delta introduces the concept of private struct members in opaque - data types to GNU m4: See the STYLE file for details. - - * TODO: Remind ourselves that a rewrite of path.c is needed. - * m4/m4module.h (m4_search_path, struct m4_search_path_info): - Moved from here... - * m4/m4private.h (m4__search_path, m4__search_path_info): ...to - here and renamed. These type definitions are for internal api use - only. Changed all callers. - * m4/m4module.h (m4_search_path_env_init, m4_search_path_add): - Moved from here... - * m4/path.c (search_path_env_init, search_path_add): ...to here - and renamed. These calls were never used outside this file. - Changed all callers. - (dirpath): Moved functionality of this static declaration... - * m4/m4private.h (struct m4): ...to this new internal only - search_path field. Changed all callers. - (m4__get_search_path): Added new internal api accessor. - * m4/path.c (m4_search_path_info_new): Removed. Not used. - (m4_include_init): Removed... - * m4/m4.c (m4_create): ...because the new m4 field is now - initialised here. - (m4_delete): Recycle search_path memory. - * src/main.c (main): Don't call m4_include_init now that it's - gone! - * doc/STYLE: Document convention for private fields in opaque - ADTs. - -2003-07-24 Gary V. Vaughan <gary@gnu.org> - - Sometimes exporting the address of a symbol from a module isn't - enough for other modules to call that symbol correctly. If - custom data types are used for function parameters, they need to - be known to the caller. This change introduces the concept of - $(prefix)/include/modules/$(modulename).h to declare those - structures. Also we move m4_dump_symbols from libm4 to the m4 - module to show this concept in action. - - * m4/m4module.h (m4_dump_symbol_data): Moved from here... - * modules/m4.h (m4_dump_symbol_data): ...to this new file for - exporting data structures from modules/m4.c. - * modules/m4.c, modules/gnu.c: Include it. - * modules/Makefile.am (pkgmodinc_HEADERS): Install it. - * m4/m4module.h (m4_dump_symbol_CB, m4_dump_symbols): Removed - prototypes. - * m4/utility.c (dumpdef_cmp, m4_dump_symbol_CB, m4_dump_symbols): - Moved from here... - * modules/m4.c (dumpdef_cmp_CB, dump_symbol_CB, m4_dump_symbols): - ...to here, with slight renaming. - (m4_export_table): Prototype and add m4_dump_symbols. - * m4/symtab.c (m4_is_symbol_value_void): Needed for an external - definition of m4_dump_symbols. - * m4/m4module.h (m4_is_symbol_value_void): Prototype it. - * m4/m4private.h (m4_is_symbol_value_void): Fast macro version. - -2003-07-24 Gary V. Vaughan <gary@gnu.org> - - Create an export table in modules/m4.c in readiness for beefing up - the module loader to track module exports and imports. - - * m4/m4module.h (m4_debug_flush_files): Removed prototype. - * m4/debug.c (m4_debug_flush_files): Moved... - * modules/m4.c (m4_sysval_flush): ...to here and renamed. - * modules/gnu.c (builtin_esysval): Use it. - * m4/m4module.h (m4_export): New type for declaring module symbols - for export. - * modules/m4.c (m4_export_table): List symbols exported from this - module for use by other modules. - -2003-07-24 Gary V. Vaughan <gary@gnu.org> - - An experiment: There is loads of code in libm4 which should be in - the m4 module, but is also used by another module. Just because - some linkers won't cope with calls across dynamic runtime loaded - objects I initially left the code in libm4. It will tidy the - module api immensely if this code moves to the right place, I just - need to remember to invent a suitable calling mechanism at some - point. For now, only modules that are statically linked and - preloaded will get this treatment, so the only platforms that will - break are those that require all symbols to be resolved at link - time. - - * TODO: Reminder that what I am doing could reduce portability - unless I do something more robust later. - * m4/m4module.h (m4_sysval): No longer exported from libm4. - * m4/utility.c (m4_sysval): No longer declared in libm4. - * modules/Makefile.am: Reformatting. - * modules/m4.c (m4_sysval): Declare it at place of use. - * modules/gnu.c (m4_sysval): Import it for use in esyscmd. - -2003-07-23 Gary V. Vaughan <gary@gnu.org> - - * m4/m4module.h: Reformatting and rearranging lines a bit. - (m4_obstack): Save typing by typedefing `struct obstack'. Changed - all users. - (m4_call_macro, m4_expand_input): Renamed... - (m4_macro_call, m4_macro_expand_input): ...to these. Changed all - callers. - (m4_expansion_level, m4_process_macro): Moved... - * m4/macro.c (expansion_level, process_macro): ...to here, and - made static. - - * m4/m4module.h (program_name): Not used by modules at all, so - moved... - * src/main.c (program_name): ...to here. - (print_program_name): Renamed... - (print_program_name_CB): ...to conform to the STYLE guide. - -2003-07-23 Gary V. Vaughan <gary@gnu.org> - - More refactoring of the m4module.h API. Replace #defines with an - enum, and move non-public functions out of the public API. - - * m4/debug.c (stdarg.h, varargs.h): Remove variadic header - inclusion. - * m4/macro.c (stdarg.h): Add ANSI C variadic header. - * m4/debug.c (m4_debug, trace): Moved... - * m4/m4private.h (struct m4): ...to fields of this struct. - (m4_get_debug_file, m4_get_trace_messages): New fast access macros - for the new fields. - * m4/debug.c (m4_debug_init, m4_debug_exit): Removed functions... - * src/main.c (m4_debug_init, m4_debug_exit): ...invocations... - * m4/m4.c (m4_create, m4_delete): ...and handled here instead. - * m4/m4module.h (m4_context_field_table): Add entries for new - debug_file and trace_messages fields. - (M4_DEBUG_TRACE_ARGS, M4_DEBUG_TRACE_EXPANSION) - (M4_DEBUG_TRACE_QUOTE, M4_DEBUG_TRACE_ALL, M4_DEBUG_TRACE_LINE) - (M4_DEBUG_TRACE_FILE, M4_DEBUG_TRACE_PATH, M4_DEBUG_TRACE_CALL) - (M4_DEBUG_TRACE_INPUT, M4_DEBUG_TRACE_CALLID) - (M4_DEBUG_TRACE_VERBOSE): Replaced #defines with an enum. - (m4_is_debug_bit): New macro to simplfy checks against the debug - bits above. - (m4_trace_format, m4_trace_header, m4_trace_flush) - (m4_trace_prepre, m4_trace_pre, m4_trace_post): Removed - prototypes. - * m4/debug.c (m4_trace_format, m4_trace_header, m4_trace_flush) - (m4_trace_prepre, m4_trace_pre, m4_trace_post): Moved... - * m4/macro.c (trace_format, trace_header, trace_flush) - (trace_prepre, trace_pre, trace_post): ...to these newly static - functions, since they are only ever used from this file. Changed - all callers. - -2003-07-17 Gary V. Vaughan <gary@gnu.org> - - Change the macros for checking syntax so that matching against - multiple possible syntax classes can be done with a single - comparison some of the time. The various classes are now bits of - an int that can be checked with bitwise logic operators. - - * m4/m4module.h (M4_SYNTAX_IGNORE, M4_SYNTAX_OTHER) - (M4_SYNTAX_SPACE, M4_SYNTAX_OPEN, M4_SYNTAX_CLOSE, M4_SYNTAX_COMMA) - (M4_SYNTAX_DOLLAR, M4_SYNTAX_ACTIVE, M4_SYNTAX_ESCAPE) - (M4_SYNTAX_ASSIGN, M4_SYNTAX_ALPHA, M4_SYNTAX_NUM) - (M4_SYNTAX_LQUOTE, M4_SYNTAX_RQUOTE, M4_SYNTAX_BCOMM) - (M4_SYNTAX_ECOMM): Replaced #defines with an enum. - (M4_SYNTAX_ALNUM): Removed. Changed all callers. - (M4_IS_IGNORE, M4_IS_OTHER, M4_IS_SPACE, M4_IS_OPEN, M4_IS_CLOSE) - (M4_IS_COMMA, M4_IS_DOLLAR, M4_IS_ACTIVE, M4_IS_ESCAPE) - (M4_IS_ASSIGN, M4_IS_ALPHA, M4_IS_NUM, M4_IS_LQUOTE, M4_IS_RQUOTE) - (M4_IS_BCOMM, M4_IS_ECOMM, M4__IS_STRING, M4_IS_IDENT): Removed. - Replace all calls with invocations of these... - (m4_is_syntax, m4_has_syntax): ...New macros. - * src/freeze.c (produce_syntax_dump): Remove mask argument, which - is no longer required with new macros. Changed all callers. - -2003-07-15 Gary V. Vaughan <gary@gnu.org> - - * m4/input.c (CHAR_EOF, CHAR_BUILTIN, CHAR_RETRY): These token - values are returned as part of the internal interface, so they - need to be moved... - * m4/private.h: ...to here. - * m4/macro.c (expand_token): Check for out of range - m4_peek_input() results before looking up in the syntax table. - (collect_arguments): Ditto. - - * NEWS: Note `$' syntax class. - -2003-07-08 Paul Eggert <eggert@twinsun.com> and - Gary V. Vaughan <gary@gnu.org> - - Conform to POSIX if the POSIXLY_CORRECT environment is set. - --traditional `define' now smashes all the definitions. - - * NEWS: Explain this. - * doc/m4.texinfo (Defn): `defn' takes any number of arguments. - (Extensions): Explain that extensions that are incompatible with - POSIX are disabled if POSIXLY_CORRECT is set. - (Incompatibilities): Remove. - (Define, Other Incompat): Explain difference - between GNU and POSIX behavior of define, pushdef, popdef. - * m4/m4.c (m4_get_posixly_correct_opt): New undef. - * m4/m4module.h (m4_context_opt_bit_table): Add POSIXLY_CORRECT entry. - * m4/m4private.h (M4_OPT_POSIXLY_CORRECT_BIT): New macro. - (m4_get_posixly_correct_opt): New macro. - * m4/m4macro.c (m4_process_macro): Disable $10, $abc etc. if - POSIXLY_CORRECT. - * modules/m4.c (builtin_functions): defn now takes any number of args. - (builtin_define): Smash all the definitions if - POSIXLY_CORRECT. - (builtin_defn)): Allow any number of arguments. - (builtin_undivert): Do not allow nonnumeric arguments - if POSIXLY_CORRECT. - * src/main.c (main): Set posixly-correct behavior if either - POSIXLY_CORRECT is set, or if -G is given. - * tests/builtins.at: New test for smashed definitions. - -2003-06-27 Gary V. Vaughan <gary@gnu.org> - - * doc/m4.texinfo (Changesyntax): Document Dollar syntax class. - * m4/m4module.h (M4__SYNTAX_STRING): New syntax class. Be careful - not to slow the parser down. - (M4__IS_STRING): New macro to test string syntax class membership. - * m4/syntax.c: Adjust docucomment. - (m4_syntax_create): Add a default M4_SYNTAX_DOLLAR element. - (m4_syntax_code): Translate `$' -> M4_SYNTAX_DOLLAR. - * m4/input.c (init_builtin_token): Comment typo. - (m4__next_token): Comment typo. - Accept M4_SYNTAX_DOLLAR items into M4_TOKEN_STRING type tokens - by using the new M4__IS_STRING macro. - * m4/macro.c (m4_process_macro): Use M4_IS_DOLLAR to test for - variable references in macro expansions. - - * doc/m4.texinfo (Eregexp and Regexp): Typo. - (Epatsubst and Patsubst): Typo. - (Eval): Typo. - -2003-06-26 Gary V. Vaughan <gary@gnu.org> - - Move the global variables that pertain to syntax to a new `struct - m4_syntax_table', and then add one of these to `struct m4'. The - ripple effect through the code to both change formerly global - references, and make sure a suitable context is available in - lexical scope is disproportionately large compared to the size of - the change proper. This change is a large part of decoupling - syntax.c from the rest of the code that uses it. - - * m4/m4private.h (struct m4): Add a syntax field. - * m4/m4.c (m4_create): Initialise it, - (m4_delete): Recycle it. - (m4_get_symtab): Remove hand coded version... - (m4_get_symbol_table): ...and generate this with cpp. Changed all - callers. - * m4/m4module.h (m4_context_field_table): Add an extra field so we - can generate m4_get_symbol_table. Add a new row for - m4_get_syntax_table. - (M4SYNTAX): Syntactic sugar for module writers. - (m4_symtab): Renamed to m4_symbol_table. Changed all callers. - (m4_syntax_table): New home for syntax related formerly global - variables. - * m4/m4private.h (struct m4_syntax_table): Define it. - * m4/input.c (m4_input_init): Initialisation of these formerly - global variables moved... - * m4/syntax.c (m4_syntax_create): ...to here. - * m4/input.c (m4_input_exit): And similarly, recycling of the - memory used by those values moved... - * m4/syntax.c (m4_syntax_delete): ...to here. - * m4/m4module.h (DEF_LQUOTE, DEF_RQUOTE, DEF_BCOMM, DEF_ECOMM): - Moved to m4/m4private.h. - * m4/syntax.c (m4_get_syntax_lquote, m4_get_syntax_rquote) - (m4_get_syntax_bcomm, m4_get_syntax_ecomm) - (m4_is_syntax_single_quotes, m4_is_syntax_single_comments) - (m4_is_syntax_macro_escaped): New accessors for m4_syntax_table - objects. Changed all callers that used to directly access the - global equivalents. - (m4__single_quotes, m4__single_comments, m4__use_macro_escape): - Removed and incorporated into m4_syntax_table structure. - * m4/utility.c (lquote, rquote, bcomm, ecomm): Ditto. - * m4/syntax.c (m4_set_syntax): Now returns an error status, - instead of requiring a `struct m4' to generate its own errors. - Changed all callers. - * src/main.c (main): Now that the syntax table is initialised as - part of m4_create, we have to manually wipe the syntax entries if - we are about to read a frozen file. - -2003-06-26 Gary V. Vaughan <gary@gnu.org> - - * doc/STYLE: Added notes on callback naming schemes. - - * m4/module.c (m4_set_module_macro_table) - (m4_set_module_builtin_table): Declarations weren't changed when - definitions were renamed on 2003-06-19. - - * m4/hash.c (m4_hash_resize): ifdefed out. This function is - neither used nor particularly appropriate since it exposes the - internal workings of the hash module. I haven't yet decided - whether to remove it entirely. - -2003-06-20 Gary V. Vaughan <gary@gnu.org> - - Two related changes, and a huge knockon effect throughout the - source: Moved the option variables out of global space and into - `struct m4'; made `m4_symtab' a real datatype, so that its api - is not marred passing `struct m4' around just so it can decide - whether to keep traced symbol names or not. Added setters and - getters for the formerly global option variables, and obviously - changed a vast number of functions to take a `struct m4' and use - the getter funcs to find option values. - - * m4/utility.c (interactive, sync_output, debug_level) - (no_gnu_extensions, prefix_all_builtins, suppress_warnings) - (max_debug_argument_length, warning_status, nesting_limit) - (discard_comments): Removed. - * m4/m4module (warning_status, no_gnu_extensions, nesting_limit) - (debug_level, max_debug_argument_length, prefix_all_builtins) - (suppress_warnings, discard_comments, interactive, sync_output): - Removed from here... - * m4/m4private.h (struct m4): ...and equivalent fields added to - this structure. - (m4_get_warning_status_opt, m4_get_no_gnu_extensions_opt) - (m4_get_nesting_limit_opt, m4_get_debug_level_opt) - (m4_get_max_debug_arg_length_opt, m4_get_prefix_builtins_opt) - (m4_get_suppress_warnings_opt, m4_get_discard_comments_opt) - (m4_get_interactive_opt, m4_get_sync_output_opt): Fast access - macros for the new fields. - * m4/m4module.h (m4_context_field_table) - (m4_context_opt_bit_table): Helper macros used to generate - prototypes, setters and getters for new option fields - consistently. - * m4/m4.c (m4_get_warning_status_opt, m4_get_no_gnu_extensions_opt) - (m4_get_nesting_limit_opt, m4_get_debug_level_opt) - (m4_get_max_debug_arg_length_opt, m4_get_prefix_builtins_opt) - (m4_get_suppress_warnings_opt, m4_get_discard_comments_opt) - (m4_get_interactive_opt, m4_get_sync_output_opt) - (m4_set_warning_status_opt, m4_set_no_gnu_extensions_opt) - (m4_set_nesting_limit_opt, m4_set_debug_level_opt) - (m4_set_max_debug_arg_length_opt, m4_set_prefix_builtins_opt) - (m4_set_suppress_warnings_opt, m4_set_discard_comments_opt) - (m4_set_interactive_opt, m4_set_sync_output_opt): Addressable - setter and getter functions generated by cpp from - m4_context_field_table and m4_context_opt_bit_table, exported as - part of the module api. Changed all callers. - * m4/symtab (struct m4_symtab): Used as the concrete type for - m4_symtab now. - (m4_symtab_create): Allocate and initialise a new struct. - (m4_symtab_apply): New function that works like m4_hash_apply, but - with different callbacks specific to symbol tables. Changed all - callers. - (symbol_destroy, arg_destroy, arg_copy): Renamed - symbol_destroy_CB, arg_destroy_CB, arg_copy_CB to remind me that - they have unused parameters for a reason! - (dump_symbol_CB): New callback to dump the contents of a single - symbol. - (symtob_dump): Rewritten in terms of dump_symbol_CB. - * m4/utility.c (m4_dump_symbol): Renamed to m4_dump_symbol_CB. - Changed all callers. - * m4/m4.c (m4_create): By default point the `nuke_trace_bit' field - of the contained `m4_symtab' at the `no_gnu_extensions' field. - Although I'm not convinced these semantics are correct, they are - at least consistent with how things were before this delta. Also - set the default nesting limit to M4_DEFAULT_NESTING_LIMIT. - -2003-06-19 Gary V. Vaughan <gary@gnu.org> - - Tie down the interface to libm4 some more. Make more structures - opaque to modules by moving them to m4private.h, and writing - setters and getters. To win back the speed penalty for doing this - also wrote macroized versions that do know about structure layout - in m4private.h and #include that file into modules when NDEBUG is - defined at compile time. There are still some accessor macros in - m4private.h that need to go, but that is not necessary to clean - the module api up. - - * m4/m4module.h (m4_symbol_type): Moved... - * m4/m4private.h (m4__symbol_type): ...to here. - * m4/symtab.c (m4_get_symbol_value, m4_get_symbol_traced) - (m4_set_symbol_traced, m4_set_symbol_name_traced) - (m4_is_symbol_text, m4_is_symbol_func, m4_get_symbol_text) - (m4_get_symbol_func, m4_symbol_value_create) - (m4_symbol_value_delete, m4_set_symbol_value_text) - (m4_set_symbol_value_func): New exported api to symbols. - (m4_get_symbol_value_type): Replaced by m4_is_symbol_value_text - and m4_is_symbol_value_func. - * m4/m4module.h: Prototype these guys. - * m4/module.c (m4_set_module_macro_table) - (m4_set_module_builtin_table): Make these static, there is no - reason to pollute the api with them. - * m4/m4private.h: Reformatting. - (m4_get_symtab): Only define when NDEBUG is defined. - (m4_get_symbol_value, m4_get_symbol_traced) - (m4_set_symbol_traced, m4_set_symbol_name_traced) - (m4_is_symbol_text, m4_is_symbol_func, m4_get_symbol_text) - (m4_get_symbol_func, m4_symbol_value_create) - (m4_symbol_value_delete, m4_set_symbol_value_text) - (m4_set_symbol_value_func): Macro implementations of the new - functions when NDEBUG is defined. - (SYMBOL_TRACED, SYMBOL_VALUE, SYMBOL_TYPE, SYMBOL_TEXT) - (SYMBOL_FUNC, VALUE_TYPE, VALUE_TEXT, VALUE_FUNC): Removed. - Superceded by the above. All callers changed. - (M4ARG): Removed. This is no longer different to the - m4/m4module.h definition. - * modules/gnu.c, modules/m4.c: Only include m4private.h when - NDEBUG is defined. That way we exercise the same (albeit slower) - api that external modules must use. - -2003-06-18 Gary V. Vaughan <gary@gnu.org> - - Renamed some of the types and their accessors to make more sense. - Now we have a SYMTAB in which we store SYMBOLs, and each SYMBOL - has a stack of SYMBOL_VALUEs. - - * m4/m4module.h (m4_token, m4_get_token_type, m4_get_token_text) - (m4_get_token_func, m4_token_copy): Renamed to m4_symbol_value, - m4_get_symbol_value_type, m4_get_symbol_value_text, - m4_get_symbol_value_func and m4_symbol_value_copy respectively. - Changed all callers. - (m4_symbol_type): s/M4_TOKEN_/M4_SYMBOL_/ - (m4_get_token_type): Renamed - * m4/input.c (m4_next_token): Renamed to m4__next_token, and moved - to the internal api. - * m4/m4private.h: s/TOKEN_ARG_/SYMBOL_ARG_/ - s/TOKEN_/VALUE_/ - (m4__symtab_init, m4__symtab_exit): Removed prototypes. - (m4_token_arg): Renamed to m4_symbol_arg. Changed all callers. - (m4__token_type): Moved here from m4module.h. - (m4__next_token): Renamed from m4_next_token. - * m4/symtab.c: Removed some of the parameterised macro support - functions for modularisation later. - (m4_token_copy): Renamed to m4_symbol_value_copy, and use new - m4_hash_dup to perform a true deep copy of the SRC. - (arg_copy): Callback for m4_symbol_value_copy. - * utility.c (m4_token_get_type, m4_token_text, m4_token_func): - Renamed to m4_get_symbol_value_type, m4_get_symbol_value_text and - m4_get_symbol_value_func. Changed all callers. - -2003-06-18 Gary V. Vaughan <gary@gnu.org> - - Tidy up style of hash.[ch] in accordance with doc/STYLE. - - * m4/hash.c: Internal symbol renaming and formatting. - (m4_hash_dup): New function to facilitate deep copies of hash - tables. - (m4_hash_apply_func): Returns a void* now, which is a richer type - for returning exceptions (NULL means keep going). - (m4_hash_apply): Ditto. - * m4/hash.h: Declare exported symbols with an explicit extern. - Reformated. - -2003-06-17 Gary V. Vaughan <gary@gnu.org> - - Still refactoring furiously. This delta represents a change in - semantics to symtab.c. Instead of building temporary m4_tokens - in the caller, and copying fields in the methods, we now create - the actual m4_token for hashing in the caller so the methods just - slot them in directly. Also, this means that we don't lookup a - symbol and get back an allocated but VOID token to copy fields - into, we create the token we want to push and pass that to - m4_symbol_define or m4_symbol_pushdef. And that's it. There are - a few other small changes to stop knowledge of the implementation - of symtab.c leaking out into other files. - - * m4/macro.c (expand_argument): Comment typo corrected. - * m4/symtab.c (symtab_fetch): New function to fetch the address of - an interned symbol. - (m4_symbol_pushdef): Take an extra value parameter and use this - directly as the new top of the value stack. All callers changed - to build a token and pass responsibility for memory in, rather - than copying as we used to. - (m4_symbol_define): Also use the new value parameter directly as a - replacement for the top of the value stack. All callers changed - to build a token as above. - (m4_set_symbol_traced): New function to set the traced bit on the - named symbol, creating it if necessary. - (symbol_popval): The guts of the old m4_symbol_popdef. - (m4_symbol_popdef): Use it. - * m4/builtin.c (m4_symbol_set_token): Removed, - (m4__symbol_set_builtin, m4__symbol_set_macro): Removed and - replaced... - * m4/module.c (m4_set_module_builtin_table) - (m4_set_module_macro_table): ...with these more orthogonal - functions. - * m4/m4module.h (m4_macro_pushdef, m4_macro_define) - (m4_builtin_pushdef, m4_builtin_define): Removed. No longer - required. - * m4/builtin.c (M4_ARG_SIGNATURE_DEFAULT_SIZE) - (m4_arg_signature_parse): Moved... - * m4/symtab.c: ...to here. - * m4/input.c (m4_token_copy): Arghh... I'm amazed this didn't - screw something up. Moved... - * m4/symtab.c (m4_token_copy): ...to here, and fixed so that it - actually does a proper deep copy of source to dest. - -2003-06-16 Gary V. Vaughan <gary@gnu.org> - - Further refactoring to stabilise the module API. Renaming some - functions for orthogonality, and judicious definition migration to - move things out of the set of exported symbols. - - * doc/STYLE: New file. Notes on coding style. - * m4/m4module.c: Updated bitrotted docucomment at the top of the - file. - (m4_module_name, m4_module_builtins, m4_module_macros): Renamed to - m4_get_module_name, m4_get_module_builtin_table, - m4_get_module_macro_table which are verb phrases. Changed all - callers. - * m4/builtin.c (m4_builtin_table_install, m4_macro_table_install): - Moved to... - * m4/module.c (m4_set_module_builtin_table) - (m4_set_module_macro_table): ...here, and renamed. Changed all - callers. - * m4/m4module.c (m4_module_data): This... - * m4/m4private.c (struct m4_module_data): ...and this... - * m4/module.c (module_data) ...consolidated here and no longer - exported. Changed all callers. - -2003-06-16 Gary V. Vaughan <gary@gnu.org> - - Begin work on lifting the curse of the global variables. To start - with create a `struct m4' context container, and replace - `m4__symtab' with `context->symtab' throughout. This means - initialising a context container in main, and adjusting many - functions between main and the module entry points so that the - container gets passed through. It would have been nice to - defer this until after 1.5, but it has a major effect on the - user's module writing ABI, so it needs to be addressed now - at - least in the areas that impact the ABI. An interrelated change - in the symtab API removes the dependency on a global symbol table, - and instead focuses on a passed table (from the context - container). - - * TODO: Reminders for finishing context functionality. - * m4/Makefile.am (libm4_la_SOURCES): Add m4.c. - * m4/m4.c: New file. Manage new struct m4 objects to eliminate - global variables and eventually allow m4 to be reentrant. - * m4/m4private.h (m4): Define the new structure here... - (M4_SYMTAB, m4_get_symtab): ...so we can have fast accessors that - don't carry the overhead of a function call. - * m4/m4module.h: Prototype extern functions from m4/m4.c. - (m4): Declare type for new struct m4 objects. - (M4SYMTAB): User macro to ease finding the symbol table for the - current context for module developers. - (m4_symbol_token): Renamed to m4_symbol_set_token which contains a - verb. - (M4_BUILTIN, m4_builtin_func, M4_BUILTIN_HANDLER) - (m4_builtin_define, m4_builtin_pushdef, m4_builtin_table_install) - (m4_call_macro, m4_dump_symbols, m4_expand_input) - (M4_FINISH_HANDLER, M4_INIT_HANDLE, m4_macro_define) - (m4_macro_pushdef, m4_macro_table_install, m4_module_load) - (m4_module_unload, m4_process_macro, m4_symbol_set_token): Add an - m4* context parameter. Changed definitions and all callers. - (m4_symtab): Alias for m4_hash to decouple the - m4_symtab api from m4_hash. - (m4_symtab_apply, m4_symtab_apply_func): Use m4_symtab instead of - m4_hash. - (m4_symtab_create): New function to return an initialised - m4_symtab. - (m4_symtab_delete): New function to delete an m4_symtab's memory. - (m4_symbol_define, m4_symbol_delete, m4_symbol_lookup) - (m4_symbol_popdef, m4_symbol_pushdef): Add an m4_symtab parameter - instead of simply using the global m4__symtab. Changed - definitions and all callers. - * m4/m4private.h (m4__symtab_remove_module_references): Ditto. - * m4/symtab.c (m4__symtab_init, m4__symtab_exit): Removed. - * src/main.c (main): Create a context and use that instead of the - former global m4__symtab. - -2003-06-13 Gary V. Vaughan <gary@gnu.org> - - * m4/hash.c (m4_hash_apply): Pass an initial hash table parameter - to the callback. Callbacks should not need to hardcode the - hashtable they are working from, nor should we have to waste the - userdata parameter to pass the table in. - * m4/hash.h (m4_hash_apply_func): Require the initial table - parameter. - * m4/symtab.c (symtab_destroy): Use the passed table instead - of hardcoding m4__symtab. - (m4_symbol_popdef): Don't use the userdata parameter to pass the - table to arg_destroy. - (arg_destroy): Use the hash parameter, ignore userdata. - * modules/m4.c (set_trace): Make it fit the m4_hash_apply_func - prototype. - (traceon, traceoff): Call set_trace with the extra initial - parameter. - -2003-06-13 Gary V. Vaughan <gary@gnu.org> - - More refactoring to stabilise the module api, this time for - symtab.c. Additionally, start to pay attention to function names - that don't contain a verb like they should. - - * m4/m4module.h (m4_symtab_apply): Reintroduced this function as a - wrapper for m4_hash_apply to decouple the symtab module from the - hash module. - (m4_symbol_builtin, m4_symbol_macro): Renamed to - m4__symbol_set_builtin and m4__symbol_set_macro. Changed all - callers. - (m4_symbol_delete): Create a macro version to save a function - call. - (m4_token_t, m4_data_t): These violate the POSIX reserved - namespace. Renamed to m4_token_type and m4_symbol_type. Changed - all callers. - (m4_token_type): Renamed to m4_token_get_type. - (m4_symtab, m4_symtab_init, m4_symtab_remove_module_references) - (m4_symtab_exit): Removed from the exported module - api... - * m4/m4private.h (m4__symtab, m4__symtab_init) - (m4__symtab_remove_module_references, m4__symtab_exit): ...and - renamed and added to the internal api. Changed all callers. - (m4_symtab_apply): A faster macro version of the function for - users of the internal api. - * m4/symtab.c (m4_symbol_destroy, m4_arg_destroy): Renamed to - symbol_destroy and arg_destroy. - (symtab_debug): Added a prototype. - (m4_symtab_apply, m4_symbol_delete): Moved to the end of the file - so that callers in this file get the faster macro versions from - m4/m4private.h. - -2003-06-12 Gary V. Vaughan <gary@gnu.org> - - Refactoring modules to rationalise the API into an external - documented (eventually!) API for use by modules in the `m4_' - namespace declared in m4/m4module.h, an internal API between the - source files we ship (including our shipped modules) in the `m4__' - namespace declared in m4/m4private.h and making the rest as - cohesive as possible with liberal use of the `static' keyword. - This change represents an audit to m4/module.c along these - guidelines. - - * m4/m4module.h (m4_module_close_all, m4_module_find_by_builtin): - Removed. No longer used. - (m4_module_close): Removed prototypes. - (m4_module_init, m4_module_open, m4_module_unload_all): Removed - from the exported module api... - * m4/m4private.h (m4__module_init, m4__module_open) - (m4__module_exit): ...and renamed and added to the internal api. - Changed all callers. - (BUILTIN_SYMBOL, MACRO_SYMBOL, INIT_SYMBOL, FINISH_SYMBOL): - Centralised definitions after renaming... - * m4/module.c (M4_BUILTIN_SYMBOL, M4_MACRO_SYMBOL, M4_INIT_SYMBOL) - (M4_FINISH_SYMBOL): ...and removing from here. - (m4_module_dlerror, m4_module_remove, m4_module_close) - (m4_caller_id): Not exported at all, so renamed to module_dlerror, - module_remove, module_close and caller_id. - (MODULE_SELF_NAME): New macro to make reporting self errors - easier. - (m4_module_load, module_close, module_remove): Use it. - * m4/m4private.h (USER_MODULE_PATH_ENV): Macro to hold "M4MODPATH" - name. - * src/main.c (main): Use it. - -2003-06-12 Gary V. Vaughan <gary@gnu.org> - - * README: Remove references to --enable-changeword, which has been - removed from the code. - -2003-06-11 Gary V. Vaughan <gary@gnu.org> - - Getting rid of the annoying bug with configure --enable-debug, - which spewed -e: command not found errors. This was an interaction - between libtool-1.5's LT_AC_COMPILER_OPTION, and config/debug.m4. - You'll need to re-bootstrap the m4 tree with cvs libtool (HEAD or - branch-1-5) to get the full fix. - - * config/debug.m4 (M4_AC_CHECK_DEBUGGING): Require libtools version - of AC_LIBTOOL_COMPILER_OPTION (which now requires LT_AC_PROG_SED), - and then use the probed value of $SED. - (AC_LIBTOOL_COMPILER_OPTION): Removed. Don't conditionally define - this, it messes up the AC_REQUIRE stack. - -2003-06-10 Gary V. Vaughan <gary@gnu.org> - - * m4/symtab.c (m4_symbol_popdef): Need to pass the hash address to - the destroy callback. - (m4_arg_destroy): Use the hash address to free the hash node key - field. - -2003-06-06 Gary V. Vaughan <gary@gnu.org> - - First cut at formal parameters in macros. - - * configure.ac (AC_REPLACE_FUNCS): Add xstrzdup. - * m4/xstrzdup.c: New file. - * m4/builtin.c (M4_ARG_SIGNATURE_DEFAULT_SIZE): Start size for - associative array of parameter names to details. - (m4_symbol_token): Capture macro names with parameter lists. - (m4_arg_signature_parse): And build an associative array to hang - from the symbol structure to map names to details. - * m4/hash.c (m4_hash_new): Break the m4_hash_new followed by - m4_hash_resize idiom. Now that we potentially add a little hash - table to many of the entries in the symbol table, added an extra - arg to set the initial size. Changed all callers. - (m4_hash_apply): New function that is basically a generalised - version of... - * m4/symtab.c (m4_symbol_apply): ...this. Now deleted. Adjusted - all callers to call m4_hash_apply instead. - (m4_arg_destroy): Recycle memory used by an m4_token_arg. - (m4_symbol_popdef): Use m4_arg_destroy to help recycle the - m4_arg_signature association that might be attached to the symbol, - * m4/hash.h (m4_hash_apply_func): Replacement type for... - * m4/m4module.h (m4_symtab_apply_func): ...this. Now deleted. - (M4_SYNTAX_ASSIGN): Placeholder for assigning default values in - parameter lists. - (M4_IS_ASSIGN): Detect characters with M4_SYNTAX_ASSIGN syntax. - (M4_IS_IDENT): Detect characters that can be safely used in - parameter names. - * m4/syntax.c (m4_syntax_init): Add an M4_SYNTAX_ASSIGN character. - * m4/macro.c: Corrected grammar in some comments. Use `token' - rather than `td' for m4_token variables. - (m4_process_macro): If we find a dollar followed by some - M4_IS_IDENT characters, replace that with the contents of the argv - entry with offset stored in the m4_token_arg associated with the - collected identifier. - -2003-06-05 Gary V. Vaughan <gary@gnu.org> - - Begin preparations for supporting formal parameters in m4 macros. - - * m4/m4private.h (struct m4_token_arg): Placeholder for holding - the details of a formal parameter. - (m4_token): Add an arg_signature member to hold a hash table for - looking up formal parameters. - * m4/input.c: Update more bitrotted comments. - (m4_push_builtin): Initialise arg_signature member. - (init_builtin_token): Copy arg_signature member. - * m4/m4module.h (m4_builtin_pushdef, m4_builtin_define) - (m4_macro_pushdef, m4_macro_define): Rewritten as macros to - replace... - * m4/builtin.c (m4_builtin_pushdef, m4_builtin_define) - (m4_macro_pushdef, m4_macro_define): ...these, And... - (m4_symbol_token): ...wrapped around this new function, which - vastly simplifies the arguments required by the functions it - replaces. - Changed all callers. - -2003-06-05 Gary V. Vaughan <gary@gnu.org> - - * m4/macro.c: Format changes. - -2003-06-04 Gary V. Vaughan <gary@gnu.org> - - * m4/input.c: Updated various bitrotted comments. - (m4_push_builtin): Just pass the whole m4_token, rather than - extracting all the fields in the caller. This also allows us to - check the token type for consistency. - (macro_funcs, macro_peek, macro_read, m4_push_macro, CHAR_MACRO): - Renamed to builtin_funcs, builtin_peek, builtin_read, - m4_push_builtin and CHAR_BUILTIN for consistency with the rest of - the code. Changed all callers. - (struct input_block): Similarly renamed u_m member to u_b, and - changed all callers. - (m4_next_token): Use bzero to initialise the data fields. - * m4/m4module (m4_push_macro): Renamed to m4_push_builtin. - -2003-05-29 Gary V. Vaughan <gary@gnu.org> - - These changes were necessary to get m4 to build on my iBook - running "powerpc-apple-darwin6.6" using Apples build of gcc "gcc - (GCC) 3.1 20020420 (prerelease)": - - * src/main.c: Don't include dlfcn.h, ltdl.h handles correct - inclusion of module loader headers. - * modules/Makefile.am: Use AM_LDFLAGS, not LDFLAGS. - * m4/Makefile.am: Ditto. - (libm4_la_LIBADD): Added $(LTLIBINTL). - * m4/utility.c (program_name): Removed declaration in favour of - the one already in error.c! - * m4/m4module.h (program_name): Define to program_invocation_name - when using GNU C library. Use an explicit extern declaration. - (interactive, sync_output, debug_level, hash_table_size) - (no_gnu_extensions, prefix_all_builtins, max_debug_argument_length) - (suppress_warnings, warning_status, nesting_limit, discard_comments) - (lquote, rquote, bcomm, ecomm, m4_bad_argc, m4_skip_space) - (m4_numeric_arg, m4_shipout_int, m4_shipout_string, m4_dump_args) - (m4_debug, m4_debug_init, m4_debug_exit, m4_debug_decode) - (m4_debug_flush_files, m4_debug_set_output, m4_debug_message_prefix) - (m4_trace_prepre, m4_trace_pre, m4_trace_post, m4_sysval) - (m4_expansion_level, m4_expand_ranges, m4_expand_input) - (m4_call_macro, m4_process_macro, m4_syntax_table, m4_current_file) - (m4_current_line, m4_current_diversion, m4_output_current_line): - Don't rely on default, use an explicit extern. - * m4/error.h (error, error_at_line, error_print_progname) - (error_message_count, error_one_per_line): Ditto. - * m4/ltdl.c: Update from CVS libtool. - * m4/ltdl.h: Ditto. - * commit: Update from CVS cvs-utils. - -2002-11-04 gettextize <bug-gnu-gettext@gnu.org> - - * po/Makefile.in.in: Upgrade to gettext-0.11.5. - * po/boldquot.sed: New file, from gettext-0.11.5. - * po/en@boldquot.header: New file, from gettext-0.11.5. - * po/en@quot.header: New file, from gettext-0.11.5. - * po/insert-header.sin: New file, from gettext-0.11.5. - * po/quot.sed: New file, from gettext-0.11.5. - * po/remove-potcdate.sin: New file, from gettext-0.11.5. - * po/Rules-quot: New file, from gettext-0.11.5. - -2002-11-04 Akim Demaille <akim@epita.fr> - - * doc/m4.texinfo (Esyscmd): Don't grep, use something easier: - running m4 itself. - * tests/others.at (iso8859): Use abs_srcdir, not srcdir. - -2002-11-04 Akim Demaille <akim@epita.fr> - - * config/Makefile.am (ACLOCAL_MACROS): Ship the Gettext macros. - -2002-11-04 Akim Demaille <akim@epita.fr> - - * configure.ac: Automake 1.7.1, Autoconf 2.54, Gettext 0.11.5, - used as `external', and Libtool 1.4.3. - (LINGUAS): Remove. - (LTLIBOBJS): Don't play with it. - * intl/: Remove. - * Makefile.am (SUBDIRS): Remove intl. - (ACLOCAL_AMFLAGS): Add -I config. - (EXTRA_DIST): Add config/config.rpath. - * po/LINGUAS: New. - * po/Makevars: New. - * modules/perl.c (M4INIT_HANDLER): Don't prototype xs_init. - -2002-05-29 Gary V. Vaughan <gary@gnu.org> - - Preparations for refactoring syntax tables to allow reverse - lookups [fetch me a M4_SYNTAX_OPEN], without compromising the - speed of normal lookups in an array of unsigned short. - - * m4/input.c (single_quotes, single_comments, use_macro_escape): - Moved from here... - * m4/m4private.h (m4__single_quotes, m4__single_comments, - m4__use_macro_escape): ...to here, and renamed. The `m4__' prefix - is for internal symbols which unavoidably pollute the global - namespace, but are not published APIs. - Adjusted all callers. - * m4/input.c (m4_syntax_init, m4_syntax_code, m4_set_quotes, - m4_set_comment, m4_set_syntax, set_syntax_internal, - unset_syntax_attribute): Moved from this file... - * m4/syntax.c: New. ...to this file. - Also added an m4_syntax_exit stub for orthogonality. - * src/main.c (main): Use it. - * m4/Makefile.am (libm4_la_SOURCES): Add syntax.c. - * m4/m4module.h: Reformatting. New prototypes. - -2002-05-29 Gary V. Vaughan <gary@gnu.org> - - * bootstrap (aclocal_apiversion): The aclocal apiversion is - distinct from the automake release number (in that the apiversion - apparently has no micro-version-component). - (aclocal_apilibdir): Use it. - -2002-05-28 Gary V. Vaughan <gary@gnu.org> - - * m4/hash.c (m4_hash_resize): New function. - * m4/hash.h: Add prototype. - * m4/symtab.c (m4_symtab_init): Use it. This could do with some - benchmarking to find a good value for, say, autoconf. This is - already a little quicker than before for me. - - * m4/symtab.c (m4_symtab_hash, m4_symtab_cmp): Moved from here... - * m4/hash.c (m4_hash_string_hash, m4_hash_string_cmp): .. to here, - and reenamed. - * m4/hash.h: Adjust prototypes. - -2002-01-22 Akim Demaille <akim@epita.fr> - - * bootstrap (aclocal_apilibdir): New, to cope with Automake's new - APIVERSION scheme. - * tests/Makefile.am (package.m4): New. - * tests/atlocal.in: Adjust to CVS Autotest. - * config/gnu-obstack.m4 (M4_AC_FUNC_OBSTACK): Use AC_LIBOBJ. - * configure.ac: LIBOBJ is a forbidden string. - Simplify AM_INIT_AUTOMAKE invocation. - * config/Makefile.am (ACLOCAL_MACROS): Add amversion.m4 and - options.m4. - -2002-01-21 gettextize <bug-gnu-utils@gnu.org> - - * po/Makefile.in.in: Upgrade to gettext-0.10.40. - -2001-10-19 Akim Demaille <akim@epita.fr> - - * m4/module.c, m4/output.c, src/main.c: Normalize error messages. - -2001-10-19 Akim Demaille <akim@epita.fr> - - * m4/input.c (m4_next_token): Display where was opened what is - not closed. - -2001-10-19 Akim Demaille <akim@epita.fr> - - * m4/macro.c (expand_argument): Display where was opened what is - not closed. - -2001-10-18 Akim Demaille <akim@epita.fr> - - * m4/input.c, modules/m4.c: Formatting changes. - -2001-10-17 Gary V. Vaughan <gary@gnu.org> - - * bootstrap: s/configure.in/configure.ac/ - -2001-10-16 Gary V. Vaughan <gary@gnu.org> - - * m4/symtab.c (m4_symbol_destroy): This function calls - m4_symbol_popdef, which recycles a symbols memory when the last - definition is popped. Since we were passing the address of the - symbol name found in the symbol table, and it was being removed - partway through m4_symbol_destroy() we were referencing freed - memory for the balance of the function. Now we take a copy of the - symbol name tring and use that as a key into the symbol - table... that way if the original symbol name is freed, the copy - is still valid. - -2001-10-13 Akim Demaille <akim@epita.fr> - - * m4/ltdl.c: Update. - -2001-10-13 Akim Demaille <akim@epita.fr> - - * src/main.c, src/freeze.c, m4/debug.c, m4/input.c, m4/macro.c: - Don't gettextize internal error messages. - -2001-10-13 Akim Demaille <akim@epita.fr> - - * tests/macros.at (Arity and defn): New failing test. - (Arity, defn, and freeze): New. - - Fix `Arity and defn'. - - * m4/input.c (m4_push_macro): Don't forget the arity. - * modules/m4.c (defn): Likewise. - -2001-10-13 Akim Demaille <akim@epita.fr> - - * tests/builtins.at (pushdef/popdef, trace, trace2, trace3): Move - to... - * tests/macros.at (pushdef/popdef, Tracing Hanoi Towers) - (Propagation of traceon, Propagation of --trace): this new file. - -2001-10-13 Akim Demaille <akim@epita.fr> - - * m4/utility.c (m4_numeric_arg): Use the usual (argc, argv, ...) - interface instead of (name, argc...). - Upon failure, specify which argument was guilty. - Adjust callers. - -2001-10-13 Akim Demaille <akim@epita.fr> - - * modules/evalparse.c: Save translators' time: don't translate - internal error messages. - (m4_evaluate): Simplify/normalize error messages. - * doc/m4.texinfo (Eval): Adjust. - -2001-10-13 Akim Demaille <akim@epita.fr> - - * m4/macro.c (expand_macro): Let m4_bad_argc handle the cases - where no checking is needed. - * m4/utility.c (m4_bad_argc): Use the usual (argc, argv, ...) - interface instead of (name, argc...). - Adjust callers. - * modules/gnu.c (m4_patsubst_do): Don't check argc, done - elsewhere. - -2001-10-13 Akim Demaille <akim@epita.fr> - - * m4/utility.c (m4_bad_argc): Display user argument counts, i.e., - exclude the builtin name from the count. - * modules/m4.c (ifelse): Do not use the regular argc mechanism, as - calling ifelse with a single argument is valid. - * doc/m4.texinfo (Ifelse): Add an example where ifelse is invoked - with 1 and 2 args, mostly to strengthen the test suite. - -2001-10-13 Akim Demaille <akim@epita.fr> - - * m4/output.c (m4_make_diversion, m4_insert_file) - (m4_insert_diversion, +m4_freeze_diversions): Ansify. - -2001-10-12 Gary V. Vaughan <gary@gnu.org> - - * m4/input.c (init_builtin_token): Renamed from init_macro_token, - since we call these things builtins in the rest of the code! - - * modules/gnu.c (m4_regexp_compile): s/%0/%s/ - -2001-10-12 Gary V. Vaughan <gary@gnu.org> - - Rather than forcing each builtin definition to manage its own - argument range checking, tabulate the maxima and minima for all - builtins in each module. This forces us to consider what the - valid ranges for each builtin should be, and moves the checking - code out of each builtin implementation and into the builtin - caller infrastructure. - - * m4/m4module.h (struct m4_builtin): Add argument minima and - maxima. - * m4/m4private.h (struct m4_token): Reflect them here too. - * m4/input.c (struct input_block): ...and here. - (m4_token_copy): New function for token copying. - (init_macro_token): Copy them from a token to the input stack. - (m4_next_token): Don't forget to initialise them for text - macros. - * m4/macro.c (expand_argument): Use m4_token_copy, and also - check argument counts before calling the builtin handler. - * m4/symtab.c (m4_symbol_builtin): Take minima and maxima params. - (m4_symbol_macro): Likewise. - * m4/builtin.c (m4_builtin_pushdef): Add min_args and max_args - parameters. Updated all callers. - (m4_builtin_define): Ditto. - (m4_macro_pushdef, m4_macro_define): Ditto. - * m4/symtab.c (m4_symbol_builtin, m4_symbol_define): Ditto. - * modules/evalparse.c: Declare argument counts for defined - builtins and remove explicit calls to m4_bad_argc(). - * modules/gnu.c: Ditto. - * modules/load.c: Ditto. - * modules/m4.c: Ditto. - * modules/modtest.c: Ditto. - * modules/mpeval.c: Ditto. - * modules/perl.c: Ditto. - * modules/shadow.c: Ditto. - * modules/stdlib.c: Ditto. - * modules/time.c: Ditto. - * TODO: Updated. - -2001-10-10 Gary V. Vaughan <gary@gnu.org> - - The trace semantics now attach the trace bit to a symbol name. - For as long as a traceon(`foo') is active, calls to foo will be - traced regardless of intervening undefines or module unloads. - Fixed the flag propogation issues differently to the fixes - reverted with the last attempt at nailing down trace: - - * m4/m4private.h: This file is not visible outside of the m4 - source tree, so I removed all the `M4_' and `m4_' prefixes to save - on typing. Updated all clients. - (m4_token): New typedef contains the fields that need to be passed - around with the low level tokeniser. - (m4_token_data): Removed. - (m4_symbol): Now contains the traced flag again. - * m4/symtab.c: Rewritten again. Now we don't remove symbols with - the trace bit set. This change is contained entirely within this - module and doesn't leak out into the callers. Updated all - clients. - (m4_symbol_builtin, m4_symbol_macro): Adjusted to make use of the - new fields in m4_token. Updated all clients. - * m4/builtin.c (m4_builtin_pushdef): Needs a flags argument so - that `groks_macro_args' and `blind_if_no_args' flags are retained - when defn() results are passed around in m4 code. Updated all - callers. - (m4_builtin_define): Ditto. - (m4_macro_pushdef, m4_macro_define): Ditto. - * m4/input.c (struct input_block): Add a flags field to facilitate - the above. - (m4_push_macro): ...use it. - (init_macro_token): Retrieve it. - (m4_next_token): Initialise it. - * m4/macro.c (expand_argument): Copy it. - * m4/m4module.h: Adjust. - * tests/builtins.at: Adjust the expected output of the trace - tests to reflect the change in semantics. - * tests/modules.at (modules: trace): Check that unloading a - module which supplies a traced symbol definition doesn't lose te - trace bit. - -2001-10-07 Gary V. Vaughan <gary@gnu.org> - - * modules/gnu.c (m4_macro_table): Display the timetamp when - expanding __m4_version__. - - * configure.ac (--with-modules): Forgot a comma in the - AC_HELP_STRING parameter list. - -2001-10-05 Gary V. Vaughan <gary@gnu.org> - - * bootstrap: Remove aclocal.m4t when it is no longer required. - -2001-10-05 Akim Demaille <akim@epita.fr> - - * tests/Makefile.am: Adjust for gnuprog2. - * tests/m4.in: There can be a leading path. - * tests/modules.at (AT_CHECK_M4_MODTEST): No need for $4 and $5. - * tests/testsuite.at: Adjust to the most recent Autotest. - (AT_CHECK_M4_FILTER): Fix and rename as... - (AT_TEST_M4): this. - * tests/others.at: Use it. - - * config/gmp.m4 (_AC_LIB_GMP): In order to read the content of a - variable in shell scripts, one uses `$'... - -2001-10-04 Gary V. Vaughan <gary@gnu.org> - - * configure.ac: `rm -f $m4_getopt_h' was lost. - -2001-10-04 Gary V. Vaughan <gary@gnu.org> - - * configure.ac (TIMESTAMP): Display with AS_BOX at configure - time. Define it for config.h in order to... - * src/main.c (main): ...display the timestamp for --version. - -2001-10-04 Akim Demaille <akim@epita.fr> - - * modules/gnu.c (m4_regexp_do, m4_patsubst_do): Extracted from - previous builtins `regexp' and `patsubst'. - (regexp, patsubst): Use them. - (eregexp, epatsubst): New builtins. - * doc/m4.texinfo (Patsubst, Regexp): Rename and complete as... - (Epatsubst and Patsubst, Eregexp and Regexp): these. - (Extensions): More info on REs. - -2001-10-04 Akim Demaille <akim@epita.fr> - - * modules/modtest.c (init_handler): Consistently output to stderr. - (finish_handler): New. - (test): The `if' is an `assert'. - * tests/modules.at: Adjust. - -2001-10-04 Akim Demaille <akim@epita.fr> - - * m4/utility.c (m4_bad_argc): Detail the mismatches. - -2001-10-01 Akim Demaille <akim@epita.fr> - - * tests/generate.awk: Tag the tests with `documentation'. - * tests/modules.at (AT_CHECK_M4_MODTEST): New. - Use the make the existing modtest tests more uniform, and complete - the set of possibilities. - -2001-10-01 Akim Demaille <akim@epita.fr> - - * config/gmp.m4: Consult the user before using GMP: use - --without-gmp. - * configure.ac: Adjust. - * modules/gmp.c: No protection needed as the module is not built - if GMP is not used. - -2001-10-01 Akim Demaille <akim@epita.fr> - - * tests/generate.awk: Remove debugging code. - (fatal): Specify the current location. - - * m4/debug.c, m4/macro.c, m4/utility.c, modules/format.c, - * modules/gnu.c, modules/m4.c: Use M4ARG. - -2001-10-01 Akim Demaille <akim@epita.fr> - - * modules/gnu.c (RE_SYNTAX_BRE, RE_SYNTAX_ERE): New. - (m4_regexp_compile): New. - (regexp, patsubst): Use it. - -2001-09-30 Gary V. Vaughan <gary@gnu.org> - - Reinstate the memory handling improvements from the patch I just - reverted. Relevant ChangeLog entries repeated here: - - * m4/module.c (m4_module_remove): New function that holds the core - of the old m4_module_unload. - (m4_module_unload): Use it. - (m4_module_unload_all): When we know the modules will never be - used again (i.e. on exit), free up as much module memory as - possible. There are still some artifacts from resident modules - living inside ltdl.c, but everything else is freed. - * m4/debug.c (m4_debug_exit): Free memory allocated in - m4_debug_init(). - * m4/input.c (m4_input_exit): Ditto wrt m4_input_init(). - * m4/output.c (m4_output_exit): Ditto wrt m4_output_init (). - * src/stackovf.c (stackovf_exit): Ditto wrt setup_stackovf_trap (). - * m4/m4module.h: Updated prototypes. - * m4/hash.c (m4_hash_exit): Free the nodes on the free list. - * m4/hash.h: Updated prototypes. - * src/main.c (main): Use all these new functions to clean up as - much memory as possible before exit. - -2001-09-30 Gary V. Vaughan <gary@gnu.org> - - Reverted my large patch for removing the old m4_symbol - structure on 2001-09-20. We are still not happy about the way - trace works in conjunction with defn and undefine, and leaving - the reverted patch active prevents us from moving the traced - bit from the definition back to the symbol. - -2001-09-30 Gary V. Vaughan <gary@gnu.org> - - * configure.in: Moved to... - * configure.ac: ...here. Added a libtool like timestamped - banner, and tidied up the libltdl cruft. - * config/mkstamp: Script to extract a timestamp from ChangeLog. - * modules/Makefile.am (INCLTDL): Removed. This is required - only when libltdl is configured in a subdirectory. - * src/Makefile.am: Ditto. - (LIBADD_DL): No need to add this again, libtool already knows - that libm4.la depends on it. - * m4/Makefile.am: Automake sets variables from AC_SUBST. Use - them. - - * TODO: stackovf.c is basically broken. - Reported by Marc Espie <espie@schutzenberger.liafa.jussieu.fr> - -2001-09-28 Akim Demaille <akim@epita.fr> - - * tests/Makefile.am (EXTRA_DIST): `m4' is not to be shipped. - -2001-09-27 Akim Demaille <akim@epita.fr> - - * tests/m4.in: Don't use short options. - Simplify the stderr signature normalization. - -2001-09-27 Akim Demaille <akim@epita.fr> - - tests/m4 shall be position independent. - - * tests/m4.in: New. - * tests/m4: Remove. - * tests/testsuite.at: No args to AT_INIT. - * configure.in, tests/Makefile.am: Adjust. - -2001-09-22 Akim Demaille <akim@epita.fr> - - Autotest has changed again. - - * tests/Makefile.am (DISTCLEANFILES): Add package.m4. - (package.m4): Remove. - * configure.in: Adjust to LIBADD_GMP. - -2001-09-21 Gary V. Vaughan <gary@gnu.org> - - * config/gmp.m4 (AC_ARG_WITH): Removed. - (GMP_LIB): Renamed to LIBADD_GMP for consistency. - (AC_LIB_GMP): When performing a test compile against libgmp, - include the header gmp.h if possible, and link against -lgmp. If - they both work define USE_GMP. - * modules/Makefile.am (mpeval_la_LIBADD): Add LIBADD_GMP. - (mpeval_LTX_init_func): Complain on load that there was no libgmp - at compile time. - -2001-09-20 Gary V. Vaughan <gary@gnu.org> - - * m4/evalparse.c: Moved to... - * modules/evalparse.c: ...here. This code is shared between - modules/mpeval.c and modules/m4.c, so there is no need to pollute - the libm4 API with its details. Moderately rewritten to interface - into its clients more simply. - * m4/eval.c: Deleted. Migrated functionality to... - * modules/m4.c: ...here. - (builtin_eval): Implemented in terms of the new interface style. - * modules/mpeval.c (builtin_mpeval): Ditto. - * m4/m4module.h: Removed references to the former m4/eval.c. - * m4/Makefile.am (libm4_la_SOURCES): Removed eval.c. - (EXTRA_libm4_la_SOURCES): Deleted. - * modules/Makefile.am (EXTRA_m4_la_SOURCES): Reference evalparse.c. - (EXTRA_mpeval_la_SOURCES): Reference evalparse.c. - -2001-09-20 Akim Demaille <akim@epita.fr> - - * config/gmp.m4 (AM_WITH_GMP): Rename as... - (AC_LIB_GMP): this. - By default, use gmp. - Massive revamping. - * configure.in: Adjust. - Use Automake conditionals for USE_GMP. - Always compute sizeof (long long int). - This was a bug BTW, as `eval' (not `mpeval') depends on it: - before, it was used _only_ if mpeval was not activated. - * modules/Makefile.am (pkglibexec2dir, +pkglibexec2_LTLIBRARIES) - (mpeval_la_LIBADD): New macros. - * modules/mpeval.c: No longer be conditioned by WITH_GMP. - Indent. - * tests/Makefile.am ($(srcdir)/$(TESTSUITE)): Create package.m4. - * tests/atlocal.in, tests/builtins.at: Depend upon USE_GMP, not - WITH_GMP. - -2001-09-20 Akim Demaille <akim@epita.fr> - - * tests/Makefile.am (package.m4): New. - * tests/testsuite.at: Adjust AT_INIT and AT_VICTIMS. - -2001-09-20 Gary V. Vaughan <gary@gnu.org> - - More cleanup. After the last patch, m4_symbol holds nothing but - the head of a chain of m4_token_data. So I have removed the old - m4_symbol, so that m4_token_data chains are stored directly in the - value cell of a hash table node. But there's more... m4_symbol - was a more natural name for the symbol value cell, and now that it - is gone I have renamed the former m4_token_data structure to - m4_symbol. This change turned out to be a pig to get right, since - the original code didn't need to modify the value cell itself, - since changing the chain happened inside the m4_symbol that used - to be returned -- I had to pass the address of the value cell - across various function calls, incase the head value changed. I - also tightened up the memory management to help me find a nasty - memory corruption bug that took me all night to track down... - - * m4/m4private.h (struct m4_symbol): Removed. - (struct m4_token_data): Renamed to `struct m4_symbol'. Updated - all references. - * m4/hash.c (m4_hash_iterator_value): Return the address of the - value cell. Updated all callers. - * m4/symtab.c: Took advantage of the simplification in the data - structures to rewrite a lot of this file more simply. There is - still some room for optimisation here, but we should tackle that - systematically closer to the release. - - * m4/ltdl.c: Added dmalloc support, and fixed some memory leaks it - revealed. This version is ahead of CVS libtool until I get chance - to flush my changes. - * m4/module.c (m4_module_remove): New function that holds the core - of the old m4_module_unload. - (m4_module_unload): Use it. - (m4_module_unload_all): When we know the modules will never be - used again (i.e. on exit), free up as much module memory as - possible. There are still some artifacts from resident modules - living inside ltdl.c, but everything else is freed. - * m4/debug.c (m4_debug_exit): Free memory allocated in - m4_debug_init(). - * m4/input.c (m4_input_exit): Ditto wrt m4_input_init(). - * m4/output.c (m4_output_exit): Ditto wrt m4_output_init (). - * src/stackovf.c (stackovf_exit): Ditto wrt setup_stackovf_trap (). - * m4/m4module.h: Updated prototypes. - * m4/hash.c (m4_hash_exit): Free the nodes on the free list. - * m4/hash.h: Updated prototypes. - * src/main.c (main): Use all these new functions to clean up as - much memory as possible before exit. - -2001-09-18 Gary V. Vaughan <gary@gnu.org> - - The `traced' flag needs to be attached to the definition of a - symbol rather than the current symbol containing the definition. - Implementing this showed up some long standing post 1.4 bugs in - flag propogation which I also fixed. - - * m4/m4private.h (struct m4_symbol): Remove the traced flag. - (struct m4_token_data): And add it back in here. - * m4/input.c (init_macro_token): Propogate the traced flag - correctly. - * m4/macro.c (expand_argument): Ditto. - * tests/builtins.at (trace2, trace3): New tests based on Akim's - sadistic email ;-) - -2001-09-08 Gary V. Vaughan <gary@gnu.org> - - * m4/m4private.h (struct m4_token_data): Simplified by removing - the redundant `traced' flag, and one level of structure nesting. - (M4_TOKEN_DATA_FUNC_TRACED): Removed. - * m4/input.c (init_macro_token): No need to initialise removed - `traced' field. - * m4/macro.c (expand_argument): No need to copy it either. - * m4/utility.c (m4_token_data_func_traced): Or provide an access - function. - - * m4/hash.c (m4_hash_bucket_insert): Symbol shadowing is no longer - dependant on multiple symbols with the same key, so preserving - relative symbol order in each bucket during resizing is no longer - required. The resize function is considerably faster as a result. - - * m4/m4module.h, m4/builtin.c, m4/symtab.c: - s/m4_symbol_insert/m4_symbol_define/g; - s/m4_builtin_insert/m4_builtin_define/g; - s/m4_macro_insert/m4_macro_define/g. Updated all callers. - -2001-09-08 Gary V. Vaughan <gary@gnu.org> - - Get rid of m4_symbol_lookup_t entirely. With Akim's earlier - commits, the m4_lookup_symbol dispatch function is split into - specialised functions that must be called directly. - - * m4/m4module.h (m4_symbol_lookup_t): Removed. - * m4/symtab.c (m4_lookup_symbol): Removed. - (m4_symbol_builtin, m4_symbol_macro): New functions. - * m4/builtin.c (m4_builtin_define): Split into... - (m4_builtin_pushdef, m4_builtin_insert): ...these. - (m4_macro_define): Split into... - (m4_macro_pushdef, m4_macro_insert): ...these. - * src/main.c (main): Set command line macros from `-D' parameters - using `m4_macro_define'. - -2001-09-08 Gary V. Vaughan <gary@gnu.org> - - * m4/symtab.c (m4_symtab_remove_module_references): Renamed as - this from m4_remove_table_reference_symbols(). - * m4/m4module.h, m4/module.c: Updated all references. - -2001-09-07 Akim Demaille <akim@epita.fr> - - * modules/stdlib.c, modules/times.c: Misc cleanups. - -2001-09-07 Akim Demaille <akim@epita.fr> - - * configure.in: We now need Autoconf 2.52e. - * m4/m4module.h (m4_symbol_lookup_t): Remove `M4_SYMBOL_POPDEF' - and `M4_SYMBOL_DELETE'. - * m4/symtab.c (m4_lookup_symbol, symtab_debug): Adjust. - * src/main.c (main): Adjust. - -2001-09-06 Gary V. Vaughan <gary@gnu.org> - - Fix the obstack.h problem once and for all! At configure time we - can test for a system supplied obstack.h: depending on the - result, we now generate system.h with an #include of the correct - header. As a bonus, I've also added a --with-included-obstack, - incase the user doesn't like the system obstack for some - reason... and also we can test the shipped obstack on a system - that has oe of its own. We also now need to be careful to add - build directories to the include search path, since the generated - system.h will be in the build tree. - - * configure.in (AC_CONFIG_FILES): Generate system.h from - system-h.in. - * config/gnu-obstack.m4 (M4_AC_FUNC_OBSTACK): Determine whether to - include the system obstack header or the copy shipped with M4. - Allow the user to override configure and force the build to use - the shipped version. - * m4/system-h.in: New file, template for... - * m4/system.h: ...this. Now deleted. - * m4/m4module.h: Include system.h before everything else. - * src/freeze.c: Ditto. - * m4/Makefile.am (dist-hook): Remove generated system.h. - (INCLUDES): Check builddir for generated headers before checking - srcdir. - * modules/Makefile.am (INCLUDES): Ditto. - * src/Makefile.am (INCLUDES): Ditto. - -2001-09-05 Gary V. Vaughan <gary@gnu.org> - - * TODO: Remove the items that have been addressed already. - -2001-09-05 Akim Demaille <akim@epita.fr> - - * src/main.c (main): Standardize --version. - -2001-09-05 Akim Demaille <akim@epita.fr> - - * modules/format.c (format): Have a bigger `str'. - -2001-09-05 Akim Demaille <akim@epita.fr> - - Rationalize warnings, reporting the macro name as if it were a - program name, and assertions. - - * m4/m4module.h (m4_lookup_symbol): Prototype, it is still used. - (M4WARN): New. - * m4/symtab.c (m4_lookup_symbol, m4_symbol_popdef) - (m4_symbol_delete): - Use assert for internal errors. - * m4/utility.c (m4_bad_argc, m4_numeric_arg, m4_dump_symbols): Use - M4WARN. - * modules/m4.c (undefine, defn, traceon, traceoff, dumpdef): use - M4WARN and assert. - * tests/builtins.at (pushpop): Adjust. - -2001-09-05 Akim Demaille <akim@epita.fr> - - * m4/symtab.c (m4_symbol_insert): Don't use `foo () || bar ()' - with pointers. - -2001-09-05 Akim Demaille <akim@epita.fr> - - * m4/m4module.h (m4_symbol_lookup): Remove M4_SYMBOL_LOOKUP. - * m4/macro.c, m4/symtab.c: Adjust. - -2001-09-05 Akim Demaille <akim@epita.fr> - - * m4/symtab.c (m4_symbol_popdef, m4_symbol_delete): Rename as... - (m4_symbol_pop, m4_symbol_del): this. - (m4_symbol_lookup, m4_symbol_pushdef, m4_symbol_insert) - (m4_symbol_popdef, m4_symbol_delete): New. - (m4_lookup_symbol): Adjust. - * m4/m4module.h, src/main.c, modules/gnu.c, modules/m4.c: Adjust. - -2001-09-05 Akim Demaille <akim@epita.fr> - - * m4/m4module.h (m4_symbol_lookup): Rename as... - (m4_symbol_lookup_t): this. - -2001-09-05 Akim Demaille <akim@epita.fr> - - * m4/m4module.h (m4_symbol_lookup): Remove M4_SYMBOL_IGNORE, - unused. - * m4/symtab.c (m4_lookup_symbol): Adjust. - -2001-09-03 Gary V. Vaughan <gary@gnu.org> - - Bootstrap will now work with Libtool 1.4.1 or higher: - * bootstrap: Remove stale autom4te.cache files when - rebootstrapping. - * config/Makefile.am (ACLOCAL_MACROS): Add ltdl.m4 and - libtool.m4. - * bootstrap: Ignore acinclude.m4 now the we include ltdl.m4 and - libtool.m4 directly. - Run libtoolize to refresh ltmain.sh. - * config/ltmain.sh: Deleted. - * acinclude.m4: Deleted. - * m4/ltdl.c, m4/ltdl.h: Updated from libtool-1.4.1. - - * config/debug.m4 (AC_LIBTOOL_COMPILER_OPTION): Provide a fallback - implementation for the cvs impaired libtool user. - -2001-09-03 Akim Demaille <akim@epita.fr> - - * m4/symtab.c (m4_lookup_symbol): Give more details when reporting - internal errors. - Avoid using `default' in switch, as it hides useful compiler - warnings when a case is forgotten. - -2001-09-03 Akim Demaille <akim@epita.fr> - - * src/main.c (MODULE_SHORTOPT, MODULEPATH_SHORTOPT): Remove, there - is no such thing as `WITH_MODULES'. - -2001-09-03 Akim Demaille <akim@epita.fr> - - Improve the test suite's selfcontainedness. - - * doc/m4.texinfo: Let `input.m4' be the input file, not `in'. - (Include, Undivert): Tag the other input files. - * tests/generate.awk: Catch `@comment file:'. - `-I $src' is no longer needed. - `next' is really like `return': the rest is skipped. - Adjust to `input.m4'. - (fatal): New function. - * tests/foo, tests/incl.m4: Remove. - -2001-09-01 Gary V. Vaughan <gary@gnu.org> - - The shadowing mechanism and, infact, the whole symbol table - implementation was creaking under the weight of the features piled - on top of it. We now have a separate hash table module which will - dynamically resize to keep symbol density withing good performace - limits, and a new symtab module layered above it. Symbol lookups - are now marginally more efficient (since the shadowed flag is no - longer required) and symbol removal, such as on module unload, is - considerably faster due to a reorganisation of the data structures - used in symtab.c. - - * src/main.c (main): Don't mention `-H'. - * doc/m4.texinfo (Invoking m4): Document that -H no longer has any - effect. - * NEWS: Updated. - * m4/hash.c: New generalised dynamic hash table data structure - management module. - * m4/hash.h: Public interface. - * m4/Makefile.am (pkginc_HEADERS): Add hash.h. - (libm4_la_SOURCES): Add hash.c. - * m4/symtab.c: More or less rewritten from scratch, within the - bounds of the previous API. - (m4_symtab_apply): A cleaner version of the old hack_all_symbols - call. Updated all callers. - * m4/m4module.c: #include <m4/hash.h>, and changed all affected - declarations to reflect API changes. - (M4INIT): Generate a declaration too, to avoid the warning with - --enable-debug builds. - (M4FINISH): Ditto. - (HASHMAX): Removed. - * m4/utility.c (hash_table_size): Removed. - (m4_dump_symbols): Rewritten to build and qsort an array of symbol - names, which are then looked up by builtin_dumpdef() as necessary. - This implies a small speedup in builtin_symbols(), which discarded - all of the symbol info under the old call. - * m4/m4private.h (m4_symbol): Removed shadowed flag -- symbol - shadowing is implicit in respect to the new data structures. - symbol names are no longer duplicated here, they are stored in the - key field of the hash table. - Moved macro_args and blind_no_args... - (m4_token_data): ...to here. - m4/macro.c (expand_macro): Added a name argument since the symbol - name is no longer copied into each struct m4_symbol. Modified all - callers. - (collect_arguments): Ditto. - * modules/m4.c (set_trace): Ditto. - * modules/gnu.c (builtin_symbols): Updated. - * src/freeze.c (produce_symbol_dump): Much improved in light of - the improved symbol table layout. - -2001-09-01 Gary V. Vaughan <gary@gnu.org> - - * m4/m4private.h (SYMBOL_NEXT): Move into m4's name space; renamed - to M4_SYMBOL_NEXT. - (SYMBOL_TRACED): Similarly renamed by prefixing with `M4_'. - (SYMBOL_SHADOWED, SYMBOL_MACRO_ARGS, SYMBOL_BLIND_NO_ARGS, - SYMBOL_NAME, SYMBOL_TYPE, SYMBOL_TEXT, SYMBOL_FUNC, - SYMBOL_HANDLE): Ditto. - * m4/builtin.c, m4/macro.c, m4/symtab.c, m4/utility.c, - modules/gnu.c, modules/m4.c, src/freeze.c, - src/main.c: Updated all references. - - * src/Makefile.am (m4_SOURCES): Don't list $(M4OBJS) here, since - Automake 1.5 chokes on dynamic source file lists, Besides, it is - already listed in m4_LDADD... how did that ever used to work? - * configure.in (getopt.h): Use AC_CONFIG_LINKS instead of a manual - link. - * config/gnu-obstack.m4 (M4_AC_FUNC_OBSTACK): Ditto. - Suggested by Tim Van Holder <tim.van.holder@pandora.be> - - * tests/m4: Don't call the m4 wrapper script with libtool, it - works fine all by itself. - -2001-08-30 Gary V. Vaughan <gary@gnu.org> - - The experimental `changeword' feature never took off, and has - no obvious advantages over `changesyntax' to compensate the - enormous speed penalty it carries: - * configure.in (ENABLE_CHANGEWORD): Removed. - * m4/m4module.h (m4_set_word_regexp): Removed. - * m4/m4private.h (m4_token_data): Removed original_text field. - * m4/utility.c (m4_token_data_orig_text): Removed. - * m4/input,c: Removed all conditional ENABLE_CHANGEWORD code. - * m4/macro.c: Ditto. - * src/main.c: Ditto. - * modules/Makefile.am (changeword.la): Removed. - * modules/changeword.c: File removed. - * doc/m4.texinfo: References to changeword and --word-regexp - removed. - * po/POTFILES.in: modules/changeword.c removed. - * tests/atlocal.in (ENABLE_CHANGEWORD): Removed. - * tests/builtins.at (changeword): Test removed. - -2001-08-30 Akim Demaille <akim@epita.fr> - - * bootstrap.sh: Create aclocal.m4 instead of modifying it. - This also help having a single list of m4 files: in - config/Makefile.am. - * config/Makefile.am (STANDARD_MACROS): Rename as... - (ACLOCAL_MACROS): this. - (list-standard-macros): Remove. - (spy): New. - -2001-08-29 Gary V. Vaughan <gary@gnu.org> - - In an attempt to moderate my egomania... - * tests/modules.at: Remove attributions. - - * tests/generate.awk: When making substitutions to "@&t@", either - "&" or "\&" in the substitution string argument to gsub refer back - to the matched text. "@\\&t@" seems to work though, Tests 43 and - 67 now pass for me. - -2001-08-29 Akim Demaille <akim@epita.fr> - - * tests/others.at (changeword, ddivert, debug, esyscmd, exp, gmp) - (include, indir, multiquotes, patsubst, pushdef/popdef, regexp) - (sync-lines, trace, translit, undivert, wrap): Move to... - * tests/builtins.at: this new file. - * tests/others.at (Discard comments, import-environment): Move to... - * tests/options.at: this new file. - -2001-08-29 Akim Demaille <akim@epita.fr> - - * tests/others.at (Freezing modules) - (--module-directory: absolute path, modpath2, modpath3) - (M4MODPATH: absolute path, modtest, shadow, unload): Move to... - * tests/modules.at: here, new file. - * tests/others.at, tests/generate.awk: Add a banner. - * tests/testsuite.at: Adjust. - (AT_CHECK_M4_FILTER): New, but unused. - -2001-08-29 Akim Demaille <akim@epita.fr> - - * tests/testsuite.at (AT_CHECK_M4): Don't pass -I, let the tests - handle that. - * tests/others.at (wrap): Inline wrap.m4. - (shadow): Inline shadow.m4. - (iso8859): Don't specify the path from top_srcdir, but from srcdir. - * tests/m4: Simplify. - -2001-08-29 Akim Demaille <akim@epita.fr> - - * tests/Makefile.am ($(srcdir)/$(TESTSUITE)): Use autom4te's - --language. - -2001-08-29 Akim Demaille <akim@epita.fr> - - * tests/generate.awk (normalize): s/@__@/@&t@/. - -2001-08-28 Akim Demaille <akim@epita.fr> - - * examples/indir.m4, tests/others.at (indir): s/nonsens/nonsense/. - -2001-08-28 Gary V. Vaughan <gary@gnu.org> - - * bootstrap (generate.awk): Generate test cases with new script. - -2001-08-27 Akim Demaille <akim@epita.fr> - - * tests/Makefile.am (installcheck-local): Don't use - `dc_install_base' which is not visible here, but `exec_prefix' - which is clearly the RT anyway. - * tests/testsuite.at (AT_CHECK_M4): Don't pass -M here since it is - related to testing a now installed m4. - * tests/m4: Do it here. - -2001-08-27 Akim Demaille <akim@epita.fr> - - * tests/others.at (indir): Formatting change. - -2001-08-27 Akim Demaille <akim@epita.fr> - - * tests/Makefile.am (installcheck-local): New. - * tests/testsuite.at (AT_CHECK_M4): Pass `-b' so that C-c works on - the test suite. - Prefer options over envvars. - * src/main.c (main): First bug caught by the test suite (yeah!): - --batch lacked a `break' which resulted in an accidental - invocation of --discard-comments. - -2001-08-27 Akim Demaille <akim@epita.fr> - - * tests/others.at (capitalize, changeword, comments, ddivert) - (debug, esyscmd, exp, foreach, forloop, fstab, hanoi, include) - (misc, multiquotes, patsubst, pushdef/popdef, regexp, reverse) - (sysv-args, trace, translit, undivert): Don't rely on files in - examples/: AT_DATA them. - -2001-08-27 Akim Demaille <akim@epita.fr> - - Let the test suite use a wrapper around the not installed m4 to - pretend it is (installed). - - * bootstrap (aclocal.m4): Output AC_SUBST's and AM_CONDITIONAL's in - such a way that m4 does not process them. - * configure.in: The package name seems to be `m4', not `M4'. - * tests/m4: New. - * tests/atlocal.in (at_package, M4): Remove. - * tests/testsuite.at, tests/others.at: Use m4, not $M4. - -2001-08-27 Akim Demaille <akim@epita.fr> - - * tests/Makefile.am (CLEANFILES): Remove. - (DISTCLEANFILES, clean-local): New. - * examples/mktests.sh: Remove. - -2001-08-27 Akim Demaille <akim@epita.fr> - - * Makefile.am (AUTOMAKE_OPTIONS): 1.5. - Don't use aclocal: it's written by hand. - * aclocal.m4: m4_include all the files instead of being built by - aclocal. - * bootstrap: Help automake find the AC_SUBSTs and AM_CONDITIONALs - until it reads the traces by itself. - * configure.in: Require Autoconf 2.42c as we are now using - AC_CONFIG_TESTDIR instead of AT_CONFIG. - Catch unexpanded `jm_' macros. - * config/atconfig.m4: Remove. - * config/error.m4: new. - * config/Makefile.am: Ship the files included by aclocal.m4. - * tests/Makefile.am (TESTSUITE_SOURCES): Rename as... - (TESTSUITE_AT): this, to please Automake. - (TESTSUITE): This target uses autotest/autotest.m4, not - autotest/general.m4. - * tests/testsuite.at: Prereq Autotest 2.52c. - * examples/Makefile.am (pkgdata_DATA): Rename as... - (dist_pkgdata_DATA): this. - * doc/Makefile.am (man_MANS): Rename as... - (dist_man_mans): this. - -2001-08-20 Gary V. Vaughan <gary@gnu.org> - - * m4/system.h [cygwin*]: Thanks to Paul Sokolovsky and - Robert Collins, building on Cygwin no longer requires Windows - import and export symbol decorations. - * m4/m4module.h (M4_SCOPE) [cygwin*]: Deleted all occurences. - * m4/error.h (M4_SCOPE) [cygwin*]: Ditto. - * m4/debug.c (M4_GLOBAL_DATA) [cygwin*]: Ditto. - * m4/error.c (M4_GLOBAL_DATA) [cygwin*]: Ditto. - * m4/input.c (M4_GLOBAL_DATA) [cygwin*]: Ditto. - * m4/macro.c (M4_GLOBAL_DATA) [cygwin*]: Ditto. - * m4/output.c (M4_GLOBAL_DATA) [cygwin*]: Ditto. - * m4/utilty.c (M4_GLOBAL_DATA) [cygwin*]: Ditto. - * m4/xmalloc.c (M4_GLOBAL_DATA) [cygwin*]: Ditto. - * configure.in (LIBM4_DLL_IMPORT) [cygwin*]: Don't set this - anymore. - * src/Makefile.am (AM_CPPFLAGS) [cygwin*]: Don't use it either! - * modules/Makefile.am (AM_CPPFLAGS) [cygwin*]: Ditto. - -2001-08-20 Gary V. Vaughan <gary@gnu.org> - - Ansify the source. Previously we had a mix, where my code was - in a K&R compatible style, and the preexisting code was in ANSI - style. Nothing is lost wrt release 1.4 by reverting to ANSI, - and now the code base is much cleaner. - - * m4/system.h: Remove M4_PARAMS macro and all users. Remove - VOID macro and all users. - * m4/m4module.h: Ansify function prototypes and headers. - * m4/builtin.c: Ditto. - * m4/evalparse.c: Ditto. - * m4/input.c: Ditto. - * m4/macro.c: Ditto. - * m4/module.c: Ditto. - * m4/output.c: Ditto. - * m4/path.c: Ditto. - * m4/symtab.c: Ditto. - * m4/utility.c: Ditto. - * modules/format.c: Ditto. - * modules/gnu.c: Ditto. - * modules/m4.c: Ditto. - * modules/mpeval.c: Ditto. - * src/freeze.c: Ditto. - * src/m4.h: Ditto. - * src/main.c: Ditto. - -2001-08-20 Akim Demaille <akim@epita.fr> - - * config/atconfig.m4: s/EOF/ATEOF/, so that configure can be - generated with stock 2.52. - -2001-08-20 Akim Demaille <akim@epita.fr> - - * config/atconfig.m4: New, until part of Autoconf per se. - * configure.in (AT_CONFIG): Use it. - Adjust. - * tests/mkconfig.sh, tests/atconfig.in, tests/defs: Remove. - * tests/atlocal.in: New. - * tests/generate.awk: For the time being, the empty quadrigraph is - `@__@'. - * tests/others.at (changeword, gmp): Check the configuration - variable against `yes'. - * tests/testsuite.at (dnl): Allow it, as it's used all over the - place. - -2001-08-20 Akim Demaille <akim@epita.fr> - - * m4/utility.c (m4_numeric_arg): Spell out the culprit. - * modules/m4.c (undivert): Disable the possibility of undiverting - several files at once: it is not documented, it is inconsistent - with the other macros, it can be straightforwardly mocked by - several invocations, and most importantly, it prevents the - possibility of other kinds of extension. - Use `m4_numeric_arg'. - -2001-08-20 Akim Demaille <akim@epita.fr> - - * examples/include.m4: Typo. - * tests/generate.awk: Really add it. - * tests/Makefile.am: Adjust. - * tests/others.at (Discard comments): It sure fails without `-c'. - (include, undivert): Add -I examples/. - -2001-08-20 Akim Demaille <akim@epita.fr> - - Use sprintf, not ecft and friends since it is standard, portable, - simplifies the code, and since the latter is even deprecated - according to the GNU libc documentation. - - * modules/format.c: Drop evct support. - -2001-08-19 Gary V. Vaughan <gary@gnu.org> - - * config/debug.m4 (M4_AC_CHECK_DEBUGGING): Cleaned up. Don't test - for `-pipe' here... - * configure.in: ...do it here instead. - - * c-boxes.el: Deleted. - * m4/builtin.c: Reformat box comments to be closer to GNU - standards. - * m4/debug.c: Ditto. - * m4/eval.c: Ditto. - * m4/evalparse.c: Ditto. - * m4/input.c: Ditto. - * m4/m4module.h: Ditto. - * m4/macro.c: Ditto. - * m4/output.c: Ditto. - * m4/symtab.c: Ditto. - * m4/utility.c: Ditto. - * modules/changeword.c: Ditto. - * modules/format.c: Ditto. - * modules/gnu.c: Ditto. - * modules/load.c: Ditto. - * modules/m4.c: Ditto. - * modules/modtest.c: Ditto. - * modules/mpeval.c: Ditto. - * modules/perl.c: Ditto. - * modules/shadow.c: Ditto. - * modules/stdlib.c: Ditto. - * modules/time.c: Ditto. - * src/freeze.c: Ditto. - * src/main.c: Ditto. - -2001-08-17 Gary V. Vaughan <gary@gnu.org> - - * m4/module.c: Fixup some errors in the description comment. - -2001-08-17 Akim Demaille <akim@epita.fr> - - * tests/others.at (iso8859): Specify the path to the M4 test file. - * tests/testsuite.at (AT_CHECK_M4): Normalize the path of input - files in error messages. - -2001-08-17 Akim Demaille <akim@epita.fr> - - * tests/testsuite.at (AT_CHECK_M4): Anchor M4PATH in $top_srcdir. - * tests/others.at: Adjust input files paths. - * tests/atconfig.in: Set top_builddir. - * tests/Makefile.am: Adjust. - `testsuite' is in src, not build. - -2001-08-17 Akim Demaille <akim@epita.fr> - - * tests/Makefile.am (EXTRA_DIST): Ship generate.awk. - (generate.at): Install a temporary hack until the actual - generate.awk is added to the repository. - * tests/atconfig.in: New. - -2001-08-17 Akim Demaille <akim@epita.fr> - - Really apply the patch ``Drop Autoconf 2.13 compatibility.'' - -2001-08-17 Akim Demaille <akim@epita.fr> - - * doc/m4.texinfo: Promote proper quotation. - -2001-08-17 Akim Demaille <akim@epita.fr> - - Remove the non Autotest tests. - - * tests/other-tests/capitalize.test, - * tests/other-tests/changeword.test, - * tests/other-tests/comments.test, tests/other-tests/ddivert.test, - * tests/other-tests/debug.test, - * tests/other-tests/discard-comments.m4, - * tests/other-tests/discard-comments.test, - * tests/other-tests/esyscmd.test, tests/other-tests/exp.test, - * tests/other-tests/foreach.test, tests/other-tests/forloop.test, - * tests/other-tests/frozen.m4, tests/other-tests/fstab.test, - * tests/other-tests/gmp.m4, tests/other-tests/gmp.test, - * tests/other-tests/hanoi.test, - * tests/other-tests/import-environment.m4, - * tests/other-tests/import-environment.test, - * tests/other-tests/include.test, tests/other-tests/indir.test, - * tests/other-tests/iso8859.m4, tests/other-tests/iso8859.test, - * tests/other-tests/misc.test, tests/other-tests/modfreeze.test, - * tests/other-tests/modpath1.test, tests/other-tests/modpath2.test, - * tests/other-tests/modpath3.test, tests/other-tests/modpath4.test, - * tests/other-tests/modtest.test, - * tests/other-tests/multiquotes.test, - * tests/other-tests/patsubst.test, tests/other-tests/pushpop.test, - * tests/other-tests/regexp.test, tests/other-tests/reverse.test, - * tests/other-tests/shadow.test, tests/other-tests/stackovf.test, - * tests/other-tests/sync-lines.m4, - * tests/other-tests/sync-lines.test, - * tests/other-tests/sysv-args.test, tests/other-tests/trace.test, - * tests/other-tests/translit.test, tests/other-tests/undivert.test, - * tests/other-tests/unfrozen.m4, tests/other-tests/unload.test, - * tests/other-tests/wrap.test: Remove. - - * tests/run-test, tests/get-them: Remove. - * tests/Makefile.am: Adjust. - -2001-08-17 Akim Demaille <akim@epita.fr> - - others.at no longer depends on other-tests/. - - * tests/others.at (stackovf): You're actually... - (sync-lines): this. - (modfreeze, modpath1, modpath2, modpath3, modpath4, modtest, shadow) - (unload.test): Keep their authorship. - (discard-comments, gmp, import-environment, modfreeze) - (sync-lines): Embed the input files. - * tests/stackovf.test: Copy from other-tests/stackovf.test. - * tests/iso8850.m4: Copy from other-tests/iso8859.m4. - -2001-08-17 Akim Demaille <akim@epita.fr> - - * doc/m4.texinfo (Esyscmd): Fix the paths in the Vice example. - (M4exit): Tag the exit status of the example. - * tests/get-them: Adjust. - * tests/generate.awk: New, based on get-them. - * tests/Makefile.am: Adjust to generate `generated.at'. - * tests/testsuite.at: Adjust. - (AT_CHECK_M4): Don't overquote. Blush... - -2001-08-17 Akim Demaille <akim@epita.fr> - - Start using Autotest. atconfig creation is still lacking. - - * examples/patsubst.m4, modules/modtest.m4, modules/shadow.m4, - * examples/reverse.m4, tests/other-tests/import-environment.m4, - * tests/other-tests/iso8859.m4: Don't produce trailing blanks. - * tests/other-tests/import-environment.test: Don't check LANGUAGE - as it might be `unset', or set to `C'. - * tests/other-tests/iso8859.test, tests/other-tests/modpath1.test, - * tests/other-tests/modpath2.test, tests/other-tests/modpath3.test, - * tests/other-tests/modpath4.test, tests/other-tests/modtest.test, - * tests/other-tests/patsubst.test, tests/other-tests/reverse.test, - * tests/other-tests/shadow.test: Adjust. - * tests/testsuite.at, tests/others.at: New. - * tests/Makefile.am: Adjust. - -2001-08-17 Akim Demaille <akim@epita.fr> - - Drop Autoconf 2.13 compatibility. - - * configure.in (changeword): No need to undefine it, as anyway if - it's defined, M4sugar moved it as m4_changeword. - And anyway, proper quotation is enough. - (m4_pattern_allow): As it exists in 2.50, just use it. - (AC_OUTPUT): Split in AC_CONFIG_FILES and AC_CONFIG_COMMANDS. - Don't handle Gettext's duties, let it handle them. - * config/gnu-obstack.m4: Use m4_pattern_allow directly. - -2001-08-17 Akim Demaille <akim@epita.fr> - - * modules/m4.c (m4_dumpdef): Output to stderr, not m4_debug. - (m4_errprint): Use fputs. - * doc/m4.texinfo (Invoking m4) <--error-output>: errprint and - dumpdef are not concerned. - (Dumpdef, Errprint): Emphasize their insensitivity to - --error-output. - * doc/Makefile.am: Add `TAGS' support. - (MAINTAINERCLEANFILES): Remove texinfo.tex and mdate-sh which are - in `config/' now. - * config/Makefile.am (MAINTAINERCLEANFILES): New. - -2001-08-17 Akim Demaille <akim@epita.fr> - - * modules/Makefile.am (ETAGS_ARGS): New. - -2001-08-17 Akim Demaille <akim@epita.fr> - - * m4/symtab.c (m4_hack_all_symbols, m4_lookup_symbol): Formatting - changes. - -2001-08-17 Akim Demaille <akim@epita.fr> - - * m4/builtin.c (m4_macro_define): Do not reset SYMBOL_TRACED. - -2001-08-17 Akim Demaille <akim@epita.fr> - - * m4/m4module.h (m4/list.h): Don't include it. - -2001-08-16 Gary V. Vaughan <gary@gnu.org> - - m4_modules are no more, we use lt_dlhandles directly and let - latest libltdl features manage the list of loaded modules. - * acinclude.m4: Regenerated. - * m4/ltdl.c: Updated from master copy. - * m4/module.c: Reimplemented to take advantage of advances in - libltdl. - * m4/builtin.c (m4_builtin_find_by_name): Traverse loaded module - list with lt_dlhandle_next. - (m4_builtin_find_by_func): Ditto. - (m4_builtin_table_install): Use lt_dlhandle. - (m4_macro_define): Ditto. - (m4_macro_table_install): Ditto. - m4/module.h: Prototype new module management API. - (m4_modules): No longer required. - (m4_module_init_t, m4_module_finish_t): POSIX namespace - violations, renamed to... - (m4_module_init_func, m4_module_finish_func): ...these, - respectively. - (M4INIT_HANDLER): Clean way to declare init functions in modules. - (M4FINISH_HANDLER): And similarly for finish functions. - * m4/system.h (_CONC): Used by M4INIT_HANDLER and M4FINISH_HANDLER - -- Add indirection to the CONC macro so that arguments are - correctly expanded. - * modules/modtest.c (m4_init_module): Replaced with M4INIT_HANDLER. - * modules/shadow.c (m4_init_module): Ditto. - Due to new init function semantics, be careful to perform the - initialisation only on first load. - * modules/perl.c (m4_init_module): Ditto. And Ditto. - (m4_finish_module): Replaced with M4FINISH_HANDLER. - Due to new finish function semantics, be careful to perform the - finalisation only on first load. - * m4/m4private.h (m4_module): Removed in favour of... - (m4_module_data): ...structure without all the wrapper fields. - Instances of this new structure are stored associated lt_dlhandles - with lt_dlcaller_data_set(). - * m4/builtin.c (m4_builtin_define): Takes a handle argument - instead of the old module argument. - (m4_builtin_table_install): Ditto. - * modules/load.c (m4_resident_module): Removed. This is no - longer implemented as a magic symbol... - * modules/m4.c (m4_resident_module): Ditto. - * modules/load.c (M4INIT_HANDLER): ...the module init function now - uses the ltdl api to make the module resident. - * modules/m4.c (M4INIT_HANDLER): Ditto. - * modules/load.c (builtin_modules): Traverse the loaded module - list with lt_dlhandle_next. - (builtin_load): Much simplified in light of the reimplemented - module loader. - * src/freeze.c (produce_module_dump): Cleaned up and optimised in - light of the m4/module.c rewrite. - (produce_symbol_dump): Ditto. - (reload_frozen_state): Ditto. - * m4/list.c, m4/list.h: Files deleted. No longer required. - * m4/Makefile.am (pkginc_HEADERS): Delete list.h reference. - (libm4_la_SOURCES): Delete list.c reference. - * m4/m4private.h (m4_token_data): Add a handle field. This - eliminates many of the searches to find the handle associated with - various tokens that are passed between functions. - (struct m4_symbol): Removed the module field. The - module association does not belong with the symbol... - * m4/input.c (struct m4_builtin): ...it belongs with the builtin - that the module implementation code is from. Added a handle - field. - (m4_push_macro): Add a `handle' argument. Changed all callers. - (init_macro_token): Set the `handle' field for the - m4_token_data. - * m4/macro.c (expand_argument): Copy the new handle field during - reassignment. - * modules/m4.c (macro_install): Use the new handle field to - optimise the search for the correct builtin structure, and pass - the handle details to m4_builtin_define. - -2001-08-15 Akim Demaille <akim@epita.fr> - - * config/gnu-obstack.m4 (M4_AC_FUNC_OBSTACK): Be sure `m4/' exists - when creating `m4/obstack.h'. - * tests/Makefile.am (TESTS_ENVIRONMENT): Pass top_srcdir and - top_builddir. - * tests/defs: Make them absolute. - (CDPATH) Neutralize. - * tests/gethem: Use them. - -2001-08-14 Gary V. Vaughan <gary@gnu.org> - - * config/ltmain.sh: Doh! Import again for a quoting fix that - prevented any regression test from passing. - - * m4/m4module.h (obstack.h): Choose between installed version - and shipped version based on configure tests. - * src/freeze.c (obstack.h): Ditto. - - * acconfig.h: Removed. No longer required. - - * bootstrap: Rewritten to play nicely with Autoconf 2.5x. - * configure.in (MY_NAME, MY_VERSION): Define these once, and feed - them to AC_INIT and AM_INIT_AUTOMAKE. - * Makefile.am (AUTOMAKE_OPTIONS): Remove `gnits' which would - disallow MY_NAME and MY_VERSION arguments to AM_INIT_AUTOMAKE. - * config/gnu-obstack.m4 (M4_AC_FUNC_OBSTACK): Don't choke on - shell variable m4_cv_func_obstack_h. - * tests/defs (M4): Be more careful about relative path to libtool - script and m4 binary by using $srcdir. - - * src/main.c (main): Use lt_dlinsertsearchdir to prepend -M - optargs to the existing libltdl search path. - * acinclude.m4: Regenerate from latest libtool,m4 and ltdl.m4. - * m4/ltdl.c: Updated. - * m4/ltdl.h: Ditto. - * config/ltmain.sh: Ditto. - -2001-08-11 Gary V. Vaughan <gary@gnu.org> - - * src/main.c (main): Add `-b' (for `batch') mode switch to force - interactive mode off. - -2001-08-10 Akim Demaille <akim@epita.fr> - - * configure.in: Require Autoconf 2.52. - (AC_ARG_PROGRAM): Remove, handled by Automake. - (m4_getopt): Rename as... - (m4_getopt_h): this. - Allow the tokens `m4_cv_*', `m4_top_srcdir', and `m4_getopt_h'. - Undefine `changeword' only if defined. - * config/gnu-obstack.m4: Require Autoconf 2.52. - (M4_AC_FUNC_OBSTACK): Rename `m4_obstack' and `m4_obstack_h'. - Allow this token. - -2001-08-09 Yuji Minejima <ggb01164@nifty.ne.jp> - - * doc/m4.texinfo: Fix some typos, and apply some small - clarifications. - -2001-08-09 Andreas Schwab <schwab@suse.de> - - * src/main.c (main): Fix improper uses of error (missing format - string). - -2001-08-07 Akim Demaille <akim@epita.fr> - - Improve `make distcheck'. - - * configure.in: Be sure to be able to run `mkconfig.sh' when src - != build. - * Makefile.am (dist-hook): Remove, as it is no longer needed. - * doc/m4.texinfo (Include): Add missing blank. - * m4/Makefile.am (EXTRA_DIST): Distribute gnu-obstack.h and - obstack.c. - -2001-08-07 Akim Demaille <akim@epita.fr> - - * m4/evalparse.c: A better introductory comment. - * m4/m4module.h (M4_DEBUG_PRINT2): s/M4_debug/m4_debug/. - * m4/macro.c: Adjust old comments. - * modules/README: Typo. - -2001-08-07 Akim Demaille <akim@epita.fr> - - * config/gnu-obstack.m4: New. - -2001-08-07 Akim Demaille <akim@epita.fr> - - * config/Makefile.am, config/stackovf.m4: New. - * configure.in, Makefile.am: Adjust. - -2001-08-05 gettextize <bug-gnu-utils@gnu.org> - - * po/Makefile.in.in: Upgrade to gettext-0.10.39. - * po/cat-id-tbl.c: Remove file. - * po/stamp-cat-id: Remove file. - -2001-04-08 Roderick Koehle <Roderick.Koehle@infineon.com> - - * modules/format.c (format): Formatting for %f was not - interpreting the position of the decimal point correctly for - whole numbers. - -2000-12-01 Gary V. Vaughan <gary@gnu.org> - - * TODO: Removed m4exit bug. - * modules/load.c (m4_resident_module): Make this module resident. - * module/m4.c (m4_resident_module): Ditto. - * m4/modules.c (m4_module_load): Use new ltdl resident modules - feature to mark modules as resident if they export - `m4_resident_module' as TRUE. - (m4_module_unload): Do not remove resident modules, and take care - with symbol insertion and deletion with resident modules. - * m4/ltdl.c, m4/ltdl.h: Update to latest unreleased versions to - use resident modules feature. - -2000-11-30 Gary V. Vaughan <gary@gnu.org> - - * TODO: Updated. Removed some cruft that has since been fixed - or implemented. Added some more entries. - * NEWS: Updated. - * README: Updated. - * modules/README: Updated. - * doc/m4.texinfo: Updated. - - * modules/gnu.c (builtin_functions): Make indir orthogonal to - builtin, in that each is recognised as a macro only with parameters - (builtin_indir): Passing 0 arguments is now an error, as with - builtin. - - * src/main.c (usage): Added missing description of `-c' option. - -2000-11-29 Gary V. Vaughan <gary@gnu.org> - - Consolidate the myriad of dispersed test scripts into the - tests subdirectory. I think I now have all the file where I - want them, so there shouldn't be anymore upheaval =)O| - Honest! - * tests/Makefile.am: Updated to run the new tests added below. - * tests/other-tests/capitalize.test, tests/other-tests/comments.test, - tests/other-tests/ddivert.test, tests/other-tests/debug.test, - tests/other-tests/esyscmd.test, tests/other-tests/exp.test, - tests/other-tests/foreach.test, tests/other-tests/forloop.test, - tests/other-tests/frozen.m4, tests/other-tests/fstab.test, - tests/other-tests/hanoi.test, tests/other-tests/include.test, - tests/other-tests/indir.test, tests/other-tests/misc.test, - tests/other-tests/modfreeze.test, tests/other-tests/modpath1.test, - tests/other-tests/modpath2.test, tests/other-tests/modpath3.test, - tests/other-tests/modpath4.test, tests/other-tests/modtest.test, - tests/other-tests/multiquotes.test, tests/other-tests/patsubst.test, - tests/other-tests/pushpop.test, tests/other-tests/regexp.test, - tests/other-tests/reverse.test, tests/other-tests/shadow.test, - tests/other-tests/sysv-args.test, tests/other-tests/trace.test, - tests/other-tests/translit.test, tests/other-tests/undivert.test, - tests/other-tests/unfrozen.m4, tests/other-tests/unload.test, - tests/other-tests/wrap.test: New tests based on the contents - of the tests removed below. - * examples/Makefile.am, modules/Makefile.am: Updated to - reflect removed tests. - * examples/defs,modules/defs: Removed. - * examples/capitalize.test, examples/comments.test, - examples/ddivert.test, examples/debug.test, - examples/esyscmd.test, examples/exp.test, - examples/foreach.test, examples/forloop.test, - examples/fstab.test, examples/hanoi.test, - examples/include.test, examples/indir.test, - examples/misc.test, examples/multiquotes.test, - examples/patsubst.test, examples/pushpop.test, - examples/regexp.test, examples/reverse.test, - examples/sysv-args.test, examples/trace.test, - examples/translit.test, examples/undivert.test, - examples/wrap.test, modules/frozen.m4, modules/modfreeze.test, - modules/modpath1.test, modules/modpath2.test, - modules/modpath3.test, modules/modpath4.test, - modules/modtest.test, modules/shadow.test, - modules/unfrozen.m4, modules/unload.test: Removed. - - Move the implementation of GMP support for the mpeval() builtin - into a loadable module that depends on libgmp. mpeval() and - eval() share a common parser, now in m4/evalparser.c; the code - in m4/numb.c and m4/numb.h is now physically split between - m4/eval.c (the eval() backend) and modules/mpeval.c (the - mpeval() backend), rather than being differentiated by cpp - macros and multiple inclusion. The mpeval module is always - built but will generate an diagnostic if it is used from an - installation that didn't link in the gmp library. - * modules/Makefile.am: build and install the new mpeval module. - * modules/mpeval.c: Now contains the former parts of m4/numb.c - and m4/numb.h that are required for gmp support in mpeval(). - * m4/Makefile.am (libm4_la_SOURCES): Removed evalmp.c. - * m4/evalmp.c: Removed. - * m4/m4module.h: Removed conditional prototype for - m4_mp_evaluate(). - * m4/eval.c: Rewritten. Contains the former parts of m4/numb.c - and m4/numb.h that do not rely on gmp. - * m4/evalparse.c: New file, contains the shared parts of the - eval() and evalmp() parser implementations, and is no longer - unencumbered by cpp magic to uncover the right parts. - * m4/numb.h: Removed. It's former contents are split between - m4/eval.c and modules/mpeval.c. - * m4/numb.c: ditto. - - * tests/other-tests/changeword.test: New test. Rudimentary - testing of changeword builtin runs only if --wnable-changeword - was used at configure time. - * tests/mkconfig.sh: Solaris sed (at least) does not parse nested - alternation correctly. Split into two expressions to compensate. - * m4/input.c (m4_input_init): Use m4_ prefix on m4_set_word_regexp. - * modules/Makefile.am: Build changeword module. - * modules/changeword.c (m4_macro_table): Define __m4_changeword__ - only when --enable-changeword was passed to configure. - (builtin_changeword): If --enable-changeword was not used, then - report that changeword() builtin has no support in m4 binary. - -2000-11-28 Gary V. Vaughan <gary@gnu.org> - - * src/main.c (main): Fixed a particularly nasty bug is - user_search_path setting -- the -M flag processing must be - extremely careful with search path ordering, or else the default - installed module directory (possibly containing modules from a - previous release) is placed earlier in the search path than any -M - arguments (which are relied upon to load uninstalled modules with - most of the tests in the regresion suite). - - * modules/load.c (builtin_load): Nasty hack to prevent adding - symbols to symtab again if a module is loaded more than once. - * modules/m4.c (builtin_ifelse): removed unused variable argv0. - - * m4/symtab.c (m4_remove_table_reference_symbols): Fixed a - possible NULL pointer dereference. - - * m4/module.c (m4_module_find_by_modname): Renamed from - m4_module_modname_find. Fixed all references. - (m4_module_find_by_builtin): New function. - - * modules/modfreeze.test: load the `load' module with each - invocation. - * src/freeze.c (produce_frozen_state): Simplified in light of - module field in m4_symbol. Allow a third argument for text macros - to name the originating module. - (reload_frozen_state): ditto. - * m4/m4module.h: Fixup prototypes. - * m4/builtin.h (m4_builtin_define): Add a module argument so - that symbols can be registered against the defining module. - (m4_macro_define): ditto. - * m4/m4private.h (m4_symbol): Make the module field const to save - on casting in the rest of the code. - (SYMBOL_MODULE): New macro. - - * m4/symtab.c (m4_remove_table_reference_symbols): Fixed stupid - symbol reference maintenance bugs when removing a symbol from the - symtab. - - * src/stackovf.c (setup_stackovf_trap): Fixed some memory leaks. - -2000-11-27 Gary V. Vaughan <gary@gnu.org> - - * configure.in (m4_cv_func_obstack): A better check for whether - libc has an obstack implementation. - * m4/Makefile.am (EXTRA_libm4_la_SOURCES): add gnu-obstack.h. - - * configure.in (--with-modules): Changed semantics. This - option is now used to list modules to be preopened. - * src/m4.h: #include "ltdl.h" unconditionally. - * src/main.c: Removed all dependencies on WITH_MODULES. - * src/freeze.c: ditto. - * modules/Makefile.am: ditto. - * m4/m4.c (builtin_m4exit): ditto. - * modules/modpath1.test: ditto. - * modules/modpath2.test: ditto. - * modules/modpath3.test: ditto. - * modules/modpath4.test: ditto. - * modules/modtest.test: ditto. - * modules/shadow.test: ditto. - * modules/unload.test: ditto. - - * m4/Makefile.am (libm4_la_SOURCES): Removed obstack.c, since it - comes up on demand in LTLIBOBJS now. - * configure.in (getopt_long): Creating and relying on a link for - getopt.h on hosts with no getopt_long() of thier own works - correctly now. This is necessary so that callers of getopt_long() - can simply `#include <getopt.h>': the naive way of doing this - would end up using our own getopt.h and the installed - getopt_long(), which is asking for trouble! - (obstack_init): A similar argument applies to obstack.h and - obstack_init(). - - * m4/ltdl.c: Upgraded to latest bleeding edge version again. - On Solaris-2.5 (at least) the native dlopen implementation - gets confused about m4.o when looking for module "m4". This - version always looks for .la an .$lib_ext suffixed names first - to work around the problem. Sigh. - - * po/POTFILES.in: Take account of these file movements. - * src/Makefile.am (m4_SOURCES): removed eval.c. - (EXTRA_m4_SOURCES): removed numb.c and numb.h. - * m4/Makefile.am (libm4_la_SOURCES): added eval.c. - (EXTRA_libm4_la_SOURCES): added numb.c and numb.h. - * modules/m4.c (builtin_eval): Use m4_evaluate(). - * m4/eval.c: Moved here from src/eval.c to facilitate - implementation of eval() builtin as part of the `m4' loadable - module. - (m4_evaluate): renamed from evaluate for namespace cleanliness. - * m4/numb.c: Moved here from src/numb.c, since it is #included - into eval.c at compile time. - * m4/m4module.h (m4_evaluate): Added prototype. - * src/m4.h (evaluate): Removed prototype. - -2000-11-25 Gary V. Vaughan <gary@gnu.org> - - * modules/perl.c (builtin_perleval): Use PL_na for - compatibility with perl-5.6. - - * src/main.c (main): It is now safe to - ``m4_module_install("m4")'', without tripping over the m4 - binary itself! - * m4/ltdl.h, m4/ltdl.c: Upgraded to latest bleeding edge - versions having fixed the insidious module search order bug. - - * m4/Makefile.am (libm4_la_LIBADD): New magic -- we are - supposed to be using @LIBADD_DL@; @DLLDFLAGS@ is dead. - - * configure.in: Figure out whether to use the installed - getopt.h or the supplied one. - * src/Makefile.am: ditto. - - * po/POTFILES.in: List files in their new positions. - - * config/ltmain.sh: This needs to be checked in to match the - libtool macros copied to acinclude.m4 (until a released - libtool copes with m4's needs). - * bootstrap: Run gettextize. - -2000-11-24 Gary V. Vaughan <gary@gnu.org> - - * AUTHORS: Added my details. - * TODO: updated. - * NEWS: updated. - * bootstrap: temporary update until released libtool catches up. - - * All files: Use new GNU GPL copyright blurb with current contact - address. - - * configure.in (LTLIBOBJS): Use canonical code for calculation of - this variable. - - * config: renamed acm4 directory to config to be more like - other autoconfiscated packages. - - * configure.in (M4_AC_CHECK_DEBUGGING): Use it. - * config/debug.m4: New file implementing configure macros to add - suitable debug flags to the compiler invocation. - - * modules/load.c: New file implementing the ``load'' and - ``unload'' builtins. - * tests/get-them: Set the module search directory to the modules - build directory in generated tests. - * modules/shadow.test: ditto. - * modules/modtest.test: ditto. - * modules/modpath1.test: ditto. - * modules/modpath2.test: ditto. - * modules/modpath3.test: ditto. - * modules/modpath4.test: ditto. - * modules/modtest.test: ditto. - * modules/modfreeze.test: ditto. - * modules/unload.test: ditto. - - * modules/changeword.c: New file implementing the ``changeword'' - builtin as a loadable module. - * modules/mpeval.c: New file implementing the ``mpeval'' builtin - as a loadable module. - - * src/main.c (main): Load the gnu module if m4 was started - normally -- i.e. without the -G option. - * modules/gnu.c: New file implementing a new loadable module wuth - definitions for all the gnu extension builtins. - * modules/format.c: Moved here from src/format.c. Now included - directly by gnu.c. - - * src/main.c (main): Load the traditional module if m4 was - started in `no_gnu_extensions' mode. - * modules/traditional.c: New file implementing the ``unix'' macro, - required when m4 is executed in traditional mode, as a loadable - module. - - * src/main.c: Renamed from m4.c to avoid confusion with - modules/m4.c. - (main): Always load the m4 module. - * modules/m4.c: New file implementing a new loadable module with - definitions for all m4 builtins that are not gnu extensions. - - * m4/Makefile.am: Adjusted to take new files below into account. - * m4/m4module.h: Prototypes for exported functions and types moved - to this directory from the src directory. - * m4/m4private.h: Moved here from src/m4private.h to facilitate - the migration of all builtin implementations to loadable modules. - * m4/macro.c: Moved this file here from the src directory, - renaming all exported symbols to use the prefix ``m4_''. - * m4/builtin.c: ditto. - * m4/module.c: ditto. - * m4/symtab.c: ditto. - * m4/debug.c: ditto. - * m4/input.c: ditto. - * m4/output.c: ditto. - * m4/path.c: ditto. - * m4/ltdl.h, m4/ltdl.c: ditto. - * m4/utility.c: Odd functions moved here from files in the src - directory to facilitate builtin migration. - -2000-08-12 Gary V. Vaughan <gary@gnu.org> - - * src/builtin.c (dump_symbols): Use "Undefined name `%s'" for - error message, to make translators' jobs a little easier. - (builtin_builtin): ditto. - (builtin_traceon): ditto. - (builtin_traceoff): ditto. - Reported by Akim Demaille <akim@epita.fr> - - * m4/Makefile.am (pkgincdir): Deleted. Use automake's built in - pkgincludedir instead. - - * m4/m4module.h (rquote): Renamed with a prefix of `m4_' since - it is exported globally. Fixed all references. - (lquote): ditto. - (bcomm): ditto. - (ecomm): ditto. - (DEF_RQUOTE): Renamed with a prefix of `M4_' since it is exported - globally. Fixed all references. - (DEF_LQUOTE): ditto. - (DEF_BCOMM): ditto. - (DEF_ECOMM): ditto. - -2000-07-28 Gary V. Vaughan <gary@gnu.org> - - * NEWS: updated. - * TODO: updated. - - * configure.in (AC_CHECK_FUNCS): added bzero and calloc. - (AC_OUTPUT): touch stamp-h.in, not stamp-h. - - * doc/m4.texinfo: Fixed to work with --html option of makeinfo. - Removed `Prev', `Next' and `Up' fields of all @nodes now that - makeinfo calculates them for us, and to make any future - reorganisation easier. - (Frozen files): Document format version 2. - `V' now takes argument `2'. - `F' can take a single argument if symbol and builtin names - are the same, or 3 arguments if the builtin is from a module. - New `S' specification for saving syntax table contents. - New `M' specification for saving loaded module names. - * src/freeze.c: Implement them. - * src/input.c (syntax_code): For interpreting frozen syntax - state. - - * examples/Makefile.am: Add the contents of the WWW directory to - the distribution. - * examples/WWW/Makefile: ditto, - (%.htm): Compares file contents (not just sizes) to determine - whether a change has occured. - * examples/WWW/_header.htm: Bumped version number. - * examples/WWW: Regenerated content. - - * m4/Makefile.am (AUTOMAKE_OPTIONS): Support for non-ANSI - compilers comes much easier without ansi2knr. - * src/Makefile.am (AUTOMAKE_OPTIONS): ditto. - - * m4/list.c: New generic list container type. - * m4/list.h: Interface to new container type. - * m4/Makefile.am (pkginc_HEADERS): Install list.h. - (libm4_la_SOURCES): compile and link list.c. - * src/builtin.c (builtin_tables): Use list container. - * src/module.c (symtab): ditto. - * src/symtab.c (symtab): ditto. - - * m4/system.h: New file for common preprocessor definitions. - * m4/Makefile.am (pkginc_HEADERS): install system.h. - * m4/error.c: Use system.h in place of inline preprocessor. - * m4/error.h: ditto. - * m4/module.c: ditto. - * m4/module.h: ditto. - * m4/xmalloc.c: ditto. - - * m4/error.h (error_one_per_line): Make M4_GLOBAL_DATA for WIN32 - compatibility. - * m4/xmalloc.c (xmalloc_exit_failure): ditto. - - * m4module.h (syntax_table): Renamed with a prefix of `m4_' since - it is exported globally. Fixed all references. - (builtin): ditto. - (module_init_t): ditto. - (module_finish_t): ditto. - (token_data): ditto. - (SYNTAX_OTHER): Renamed with a prefix of `M4_' since - it is exported globally. Fixed all references. - (SYNTAX_IGNORE): ditto. - (SYNTAX_SPACE): ditto. - (SYNTAX_OPEN): ditto. - (SYNTAX_CLOSE): ditto. - (SYNTAX_COMMA): ditto. - (SYNTAX_DOLLAR): ditto. - (SYNTAX_ACTIVE): ditto. - (SYNTAX_ESCAPE): ditto. - (SYNTAX_ALPHA): ditto. - (SYNTAX_NUM): ditto. - (SYNTAX_ALNUM): ditto. - (SYNTAX_LQUOTE): ditto. - (SYNTAX_RQUOTE): ditto. - (SYNTAX_BCOMM): ditto. - (SYNTAX_ECOMM): ditto. - (SYNTAX_VALUE): ditto. - (SYNTAX_MASKS): ditto. - (IS_OTHER): ditto. - (IS_IGNORE): ditto. - (IS_SPACE): ditto. - (IS_OPEN): ditto. - (IS_CLOSE): ditto. - (IS_COMMA): ditto. - (IS_DOLLAR): ditto. - (IS_ACTIVE): ditto. - (IS_ESCAPE): ditto. - (IS_ALPHA): ditto. - (IS_NUM): ditto. - (IS_ALNUM): ditto. - (IS_LQUOTE): ditto. - (IS_RQUOTE): ditto. - (IS_BCOMM): ditto. - (IS_ECOMM): ditto. - (TOKEN_EOF): ditto. - (TOKEN_NONE): ditto. - (TOKEN_STRING): ditto. - (TOKEN_SPACE): ditto. - (TOKEN_WORD): ditto. - (TOKEN_SIMPLE): ditto. - (TOKEN_MACDEF): ditto. - - * m4/m4module.h (voidstar): Removed in favour of `VOID' for - consistency. Fixed all references. - (STRING): Renamed to `m4_string' for consistency, and because if - is exported globally. Fixed all references. - (token_type): Renamed to `m4_token_t' for the same reasons. - (token_data_type): Renamed to `m4_token_data_t' for the same - reasons. - - * m4/m4module.h (XCALLOC): Wrapper macro which handles type - sizes. - (XMALLOC): ditto. - (XREALLOC): ditto. - (XFREE): Wrapper macro which avoids freeing NULL pointers. - - * m4/m4module.h (m4_macro): New type for module defined user - macros. - * modules/modtest.c (m4_macro_table): Define module user macros. - * modules/shadow.c (m4_macro_table): ditto. - - * m4/m4module.h (M4BUILTIN_HANDLER): For defining handlers - declared with M4BUILTIN. - - * m4/xmalloc.c: Use memset if bzero is not available when - emulating calloc with malloc. - (xcalloc): Fallback to malloc/bzero if calloc is not available. - (xfree): Added for consistency. Will not try to free NULL - pointers. - * src/m4.c (xfree): Deleted in favour of the above. - * m4/xmalloc.c (WITH_DMALLOC): preprocess away the entire file if - linking with libdmalloc. - * m4/xstrdup.c (WITH_DMALLOC): ditto. - - * modules/frozen.m4: New test case. - * modules/unfrozen.m4: ditto. - * modules/modfreeze.test: New test. - * modules/unload.test: ditto. - * modules/Makefile.am (EXTRA_DIST): Distribute them. - (TESTS): Use them. - * modules/modpath1.test: Don't try this test if module support is - not compiled in. - * modules/modpath2.test: ditto. - * modules/modpath3.test: ditto. - * modules/modpath4.test: ditto. - * modules/modtest.test: ditto. - * modules/shadow.test: ditto. - - * modules/perl.c: New module. - * modules/perl.m4: Example of using it. - * modules/Makefile.am (perl_la_SOURCES): Build new perl module. - - * src/m4.c (main): Assume interactive mode if STDIN is connected - to a tty. - Changed startup sequence slightly so that syntax is not - initialised from here when loading a frozen file. - - * src/builtin.c: Much improved macro definition style. - * src/m4private.h: Internal structures for m4_builtin and - m4_macro instances. These are not exposed to module writers. - * src/module.c (module_modname_find): Find a module structure - from the its name. - (make_macro_table): Build an internal macro table from a external - definition. - (make_builtin_table): Build an internal builtin table from an - external definition. - - * src/module.c (module_unload): Be extremely careful to remove - builtins and macros that match the module being unloaded -- no - longer assume that the top element can be removed incase another - odule defines an identical name. - * src/symtab.c (remove_table_reference_symbols): remove all symbol - table entries which refer to a given builtin table. - * src/builtin.c (remove_tables): Use it! - -2000-07-13 Thomas Tanner <tanner@ffii.org> - - * Makefile.am (SUBDIRS): we need modules/ for "make dist" - * acm4/modules.m4: deleted - * bootstrap: don't libtoolize libltdl! - * configure.in: AC_SUBST INCLTDL and LIBLTDL, -with-modules flag: - if set, enable WITH_MODULES and add modules to DLPREOPEN - * examples/misc.test: redirect standard output - * lib/Makefile.am: don't use DLLDFLAGS - * lib/m4module.c: include necessary headers to silence GCC -Wall - * lib/m4regex.c: fixes to silence GCC -Wall - * modules/Makefile.am: don't use DLLDFLAGS, add INCLTDL to INCLUDES, - build modules conditionally - * modules/shadow.c: define symbol aliases before using them - * modules/test.c: define symbol aliases before using them - * po/de.po: update translation - * src/Makefile.am: delete pathconf.h, set MODULE_PATH to - pkglibexecdir, don't use DLLDFLAGS, add INCLTDL to INCLUDES and - LIBLTDL to LIBS. - * src/m4.c: initialize libltdl's preloaded symbols via - LTDL_SET_PRELOADED_SYMBOLS - * src/module.c: libltdl's memory management must be initialized - before calling lt_dlinit!, fix warnings - -2000-01-18 Gary V. Vaughan <gary@gnu.org> - - * README: Caveat about nls not supported by dll architecture on - Windows. - - * TODO (MODULE SPECIFIC ISSUES): more ideas for the future. - - * tests/Makefile.am (stamp-TESTS): now works with VPATH. - * src/Makefile.am (m4_LDADD): use $(builddir) for VPATH. - * modules/Makefile.am (LIBS): ditto. - (INCLUDES): search $(top_srcdir) (for eg. <m4/error.h>) and then - $(top_srcdir)/m4 (for only <m4module.h>). - * modules/shadow.test: fixed for VPATH. - * modules/modtest.test: ditto. - * modules/modpath4.test: ditto. - * modules/modpath3.test: ditto. - * modules/modpath2.test: ditto. - * modules/modpath1.test: ditto. - - * modules/time.test: Removed due to timezone dependence, - * modules/Makefile.am (TESTS): Removed time.test. - - * configure.in: Use $3 of AC_DEFINE so that we can,,, - * acconfig.h: Remove everything except the gettext parameters. - * acm4/gmp.m4: Add a serial number, and take advantage of $3 of - AC_DEFINE. - * acm4/ltdl.m4: Updated to latest from libtool cvs. - * acm4/modules.m4: Remove code which duplicates ltdl.m4 and - increment serial number. - - * Makefile.am (SUBDIRS): Moved @MODULES_DIR@ to compile before - src dir and immediately after libm4 is built for confidence that - it doesn't rely on the src directory. - (SUBDIRS): Moved doc dir to the end since helptoman.pl and - makeinfo stop the build on cygwin (because they don't work). - - * src/m4.h: use GNU standard #if HAVE_CONFIG_H ideom. - - * m4/m4private.h: ...is not a public header, so moved to src. - Add `#include <config.h>', `#define _COMPILING_M4' and - `#include "m4.h". - * m4/Makefile.am (noinst_HEADERS): remove m4private.h. - * src/Makefile.am (noinst_HEADERS): add m4private.h. - * src/builtin.c: `#include "m4private.h"' now takes care of the - above. Duplicates removed. - * src/debug.c: ditto. - * src/eval.c: ditto. - * src/evalmp.c: ditto. - * src/format.c: ditto. - * src/freeze.c: ditto. - * src/input.c: ditto. - * src/m4.c: ditto. - * src/macro.c: ditto. - * src/module.c: ditto. - * src/numb.h: ditto. - * src/output.c: ditto. - * src/path.c: ditto. - * stackovf.c: ditto. - * symtab.c: ditto. - - * po/POTFILES.in: compensate for renaming of lib/*. - * m4/Makefile.am (CLEANFILES): @EXEEXT@ left libtool wrapper behind. - (INCLUDES): Look first in $(top_srcdir) (for eg. <m4/error.h>), - and then in $(top_srcdir)/lib (for eg. "m4private.h"). - * src/Makefile.am (m4_LDADD): replace libi/libm4.la with - m4/libm4.la. - * m4/m4error.h: Renamed error.h, for installation to - $prefix/include/m4.. - * m4/m4obstack.h: Renamed obstack.h, for same reason. - * m4/m4regex.h: Renamed regex.h, for same reason. - * m4/m4error.c: Renamed error.c, and use #include "error.h". - * m4/m4obstack.c: Renamed obstack.c, and fix #includes. - * m4/m4regex.c: Renamed regex.c, and fix #includes. - - * lib: moved to m4 to easily support header installation to - $prefix/include/m4. - * Makefile.am (SUBDIRS): renamed lib dir to m4. - * configure.in (AC_OUTPUT): reference m4/Makefile.in. - * acm4/regex.m4: Point to m4/regex.c. - - * examples/foreach.m4: Sanitise quoting. - * examples/foreach.test: New torture test. - From Akim Demaille <akim@epita.fr> - -2000-01-17 Gary V. Vaughan <gary@gnu.org> - - * src/ltdl.c: Use access() to abort doomed module load attempts - if module file does not exist. - - * src/Makefile.am (m4_SOURCES, EXTRA_SOURCES): getopt.o and - getopt1.o will already be used if appropriate, so I moved getopt.c - and getopt1.c from m4_SOURCES to EXTRA_SOURCES. - - * modules/modpath1.test: Use correct filename in header line. - * modules/modpath2.test: ditto. - * modules/modpath3.test: ditto. - * modules/modpath4.test: ditto. - - Without these changes lt_dlopen("test") attempts to - LoadLibrary("/bin/test") on Windows, which although harmless - generates a spurious error message which spoils most of the tests: - * modules/Makefile.am (EXTRA_DIST): s/test.m4 /modtest.m4 / - (TESTS): s/test.test /modtest.test / - (pkglibexec_LTLIBRARIES): s/test.la /modtest.la / - (test_la_SOURCES, test_la_LDFLAGS): renamed to use modtest. - * modules/modpath1.test: s/test.m4 /modtest.m4 / - * modules/modpath2.test: ditto. - * modules/modpath4.test: ditto. - * modules/modpath3.test: s/-m test /-m modtest / - * modules/shadow.m4: use {un,}loadmodule(`modtest'). - -2000-01-16 Gary V. Vaughan <gary@gnu.org> - - * src/ltdl.c (find_file): Updated to new version with fixed memory - allocation bug in `next'. - * src/ltdl.h: updated to match. - - * modules/Makefile.am: Cleaned up and reordered. - -2000-01-16 René Seindal <rene@seindal.dk> - - * modules/Makefile.am (TESTS): New tests for the module system. - - * modules/*.test: New files. - - * src/m4.c (main): Added call to module_init(). - Treats -M and -m as the arguments -D -U and -t, ie deferred. - - * src/m4.h: Added declaration of module_init(). - - * src/module.c (module_init): No longer static - - * modules/Makefile.am ({test,shadow,time,stdlib}_la_LDFLAGS): - Added to shut up automake about non standard libtool library - names. - - * src/module.c: Disabled DEBUG by default. - - * modules/README: Changed example from unload.m4 to shadow.m4 - - * modules/shadow.m4: Renamed from unload.m4 - - * modules/Makefile.am (EXTRA_DIST): Removed unload.m4. - - * src/m4.c (main): Functionality for -m and -M were reversed. - Fixed. - -2000-01-12 Gary V. Vaughan <gary@gnu.org> - - * doc/help2man.pl: updated to version 1.020. - - * lib/COPYING.LIB: updated to version 2.1. - - * lib/m4module.h: restructure the M4_SCOPE code to work when - creating a dll which links with libm4.la and both DLL_EXPORT - (for the new dll) and LIBM4_DLL_IMPORT (for m4module.h) are - both defined. - -2000-01-11 Gary V. Vaughan <gary@gnu.org> - - Merged the following changes from my tree: - - 1999-06-15 Gary V. Vaughan <gary@gnu.org> - - * configure.in (AC_LIBTOOL_WIN32_DLL): Declare that m4 has been - ported to compile shared libs. - - * configure.in (LIBM4_DLL_IMPORT): Discover whether we need to - use `__declspec(dllimport)' when linking libm4.la on win32. - * src/Makefile.am (m4_LDFLAGS): Use dllimport if necessary. - - * configure.in (M4OBJS): Discover whether we need the shipped - implementation of getopt_long. - * src/Makefile.am (m4_LDADD): Link the getopt objects into the - main binary here, as opposed to the module library in lib/libm4.la. - - 1999-06-14 Gary V. Vaughan <gary@gnu.org> - - * modules/README: Updated to describe the improved libltdl based - module scheme. - * README (cygwin): Added some compilation notes for building m4 - correctly under cygwin. - * TODO: Cleaned out the entries for the module system since they - are now implemented. - - * *.[ch]: __P is in the compiler's reserved namespace, so replaced - all instances of __P with M4_PARAMS. - - * lib/getdate.h: removed unreferenced file. - - * lib/m4private.h: New file to define the private interface to the - token_data struct, which must be shared between m4module.c, and - builtin.c but not exported to modules built from the installed - m4module.h since it's size changes depending on compile time - options. - - * src/m4.h: Lots of stuff moved to lib/m4module.h. - - * lib/m4module.h: New file to define the interface available when - compiling m4 modules. - * lib/m4module.c: Moved parts of builtin.c, and m4.c which are - necessary for module compilation into this new file. - - * lib/Makefile.am (include_HEADERS): install headers (renamed to - avoid nameclash with other system headers) necessary for compiling - modules. - (libm4_la_SOURCES): always include error.c, obstack.c and regex.c - so that modules can include the (renamed) installed headers and - be guaranteed a matching implementation. - * lib/m4error.h: renamed from error.h. - * lib/m4obstack.h: renamed from obstack.h. - * lib/m4regex.h: renamed from regex.h. - * configure.in (AC_REPLACE_FUNCS): Don't look for a system - implementation, simply include the shipped version - unconditionally, otherwise it is hard for a module to know - whether the m4obstack.h header it is using matches the - implementation it ends up linking against. - (jm_WITH_REGEX): Include regex into libm4 unconditionally for - the same reason. - - 1999-05-18 Gary V. Vaughan <gary@gnu.org> - - * examples/misc.test: Don't run this test on machines which don't - have a root user in /etc/passwd (e.g. cygwin). - - * tests/get-them (/^@example$/): Error messages might have a - ``.exe'' suffix to the program name, or else use the libtool - ``.libs/lt-m4'' binary, or generally have an unexpected path. All - of these cases are now catered for when comparing error messages - in generated tests. - * tests/other-tests/*.test: ditto. - * examples/*.test: ditto. - - * tests/defs (M4): use libtool execute mode. - * examples/defs (M4): ditto. - - * tests/get-them (END): explicitly close any open file. - (printthem): In a regular expression, '{' is the start of a repeat - count! Use `[{]' for a literal open brace. - (/^@node /): Don't use substr on a string shorter than the trim - length. - - 1999-05-17 Gary V. Vaughan <gary@gnu.org> - - * configure.in (LTLIBOBJS): calculated from LIBOBJS, and - substituted. - (AC_LIBTOOL_DLOPEN): declare that this package will use dlopen. - -2000-01-10 Andreas Schwab <schwab@suse.de> - - * tests/other-tests/gmp.test: Find config.sh in build directory. - - * configure.in: Find tests/mkconfig.sh in $srcdir. - - * configure.in: Define HAVE_SIGINFO_T if siginfo_t is defined in - <signal.h> (for SUS2 compliant systems). - - * src/stackovf.c: Check for HAVE_SIGINFO_T in addition to - HAVE_SIGINFO_H. - -2000-01-10 René Seindal <rene@seindal.dk> - - * Prerelease 1.4o. - - * TODO, NEWS: Cleaned up and updated. - - * src/m4.c (main): New variable exit_status for exit status in - case of unreadable files. Now m4 will exit with EXIT_FAILURE if a - file cannot be read instead of EXIT_SUCCESS. - - * src/builtin.c (m4_indir): Changed error message to help - translators (from Akim Demaille <demaille@inf.enst.fr>). - - * lib/obstack.[hc], getopt*.[ch]: Updated to newest version from - Cygnus. - - * lib/error.[hc], lib/regex.[hc], lib/strtol.c: Updated to version - from glic 2.1.2. - - * src/input.c (match_input): Reordering of code, to avoid multiple - calls to push_string_init() from obstack_grow(), which can happen - with some compilers (found and fixed by James Bonfield - <jkb@mrc-lmb.cam.ac.uk>). - - * src/stackovf.c: Added prototypes for ultrix. - (setup_stackovf_trap): Added __P to cast. - (Both reported by John David Anglin <dave@hiauly1.hia.nrc.ca>) - -2000-01-09 René Seindal <rene@seindal.dk> - - * doc/m4.texinfo (Changequote): Added comment about changing - quotes when the old quote is a part of the new. - - * src/builtin.c (expand_ranges): Added break after trailing dash. - This caused misbehavious on some systems (found and fixed by Akim - Demaille <demaille@inf.enst.fr>). - - * AUTHORS: Thomas Tanner included - - * acconfig.h: Added entry for ss_sp (see below). - - * configure.in (use_stackovf): Added check for stack_t with member - ss_base instead of ss_sp (BSDI notably). (Reported by Paul Eggert - <eggert@twinsun.com>). - - * doc/m4.texinfo (Frozen files): Added a simpler example for - generating frozen files from several input files. - -1999-11-14 Paul Eggert <eggert@twinsun.com> - - * po/POTFILES.in: Add lib/getopt.c, lib/obstack.c, - lib/regex.c, lib/xmalloc.c. - -1999-11-10 René Seindal <rene@seindal.dk> - - * Makefile.am (ACLOCAL_AMFLAGS): Passes -I acm4 to aclocal. - - * src/module.c: reindented. - (module_load): return if this is a repeated load of same module. - (module_init): slight change of logic to avoid repeated - initialisation debug messages. - - * Makefile.am (DIST_SUBDIRS): Added to ensure modules/ is included - in the distribution. - - * modules/Makefile.am (test_la_LDFLAGS): set to -module to silence - automake warnings about missing lib prefix. - (time_la_LDFLAGS): ditto - (stdlib_la_LDFLAGS): ditto - -1999-11-10 Paul Eggert <eggert@twinsun.com> - - * src/m4.h: Include error.h, since our macros use error. - * src/m4.c: Don't need to include error.h. - -1999-11-09 Paul Eggert <eggert@twinsun.com> - - * src/m4.h (voidstar): Define to void * if __STDC__ is defined - and zero, as Solaris 7 cc does. - (bcopy): Remove macro; no longer needed with new obstack.h. - - * src/output.c (freeze_diversions): Don't assume that a - diversion size can fit in `int'. Check for diversion file - size too large to be printed with `unsigned long'. - - * src/Makefile.am (CFLAGS): Omit -Wall. - - * src/stackovf.c (setup_stackovf_trap): Remove cast to unsigned. - - * src/debug.c (trace_format): - Use ANSI C if (defined __STDC__ && __STDC__) || defined PROTOTYPES. - - * src/freeze.c (produce_frozen_state): - Don't assume string lengths fit in int. - -1999-10-13 René Seindal <rene@seindal.dk> - - * po/cs.po: Czech translation added. - - * po/sv.po: Updated Swedish translation. - - * po/ru.po: Updated Russian translation. - - * po/pl.po: Updated Polish translation. - - * po/el.po: Greek translation added. - -1999-10-13 René Seindal <rene@seindal.dk> - - * configure.in (ALL_LINGUAS): Added Greek translation (el). - (ALL_LINGUAS): Added Czech translation (cs). - -1999-03-30 Gary V. Vaughan <gary@gnu.org> - - * src/builtin.c: moved module loading functions into... - * src/module.c: entirely new implementation using libltdl. - * po/POTFILES.in: added src/module.c. - * modules/Makefile.am (LTLIBRARIES): Removed lib prefix as these - are modules, not linktime libraries. - (LDFLAGS): added -no-undefined -module and -avoid-version flags. - * modules/stdlib.c (m4_macro_table): use <name>_LTX collision - avoidance on exported symbols. - * modules/test.c (m4_macro_table, m4_init_module, - m4_finish_module): ditto. - * modules/time.c (m4_macro_table): ditto. - - * modules/time2.m4: new file which requires command line loading - of modules. - * src/m4.c (--load-module): dynamically load named runtime module - into running executable before reading the source. - (--module-directory): prepend a directory to the module search - path. - (module_init()): Do this the first time we load a module instead; - if the module subsystem is broken normal m4 scripts can still run. - * src/m4.h (install_builtin_table): is now exported. - -1999-03-26 Gary V. Vaughan <gary@gnu.org> - - * src/module.c: removed. No longer required. - * po/POTFILES.in: removed src/module.c. - - * Makefile.am (MAINTAINERCLEANFILES): Remove all the files that - the bootstrap script can recreate. - * acm4/Makefile.am (MAINTAINERCLEANFILES): ditto. - * doc/Makefile.am (MAINTAINERCLEANFILES): ditto. - * examples/Makefile.am (MAINTAINERCLEANFILES): ditto. - * lib/Makefile.am (MAINTAINERCLEANFILES): ditto. - (AUTOMAKE_OPTIONS): reduced strictness to allow COPYING.LIB. - * modules/Makefile.am (MAINTAINERCLEANFILES): ditto. - * src/Makefile.am (MAINTAINERCLEANFILES): ditto. - * tests/Makefile.am (MAINTAINERCLEANFILES): ditto. - - * acinclude.m4: removed. `aclocal -I acm4' handles this much - better. - * acm4/Makefile.am (ACINCLUDE_M4): ditto. - * acm4/gettext.m4: removed. It causes a multiple definition vs. - the installed gettext.m4 file when running aclocal. - -1999-03-25 Gary V. Vaughan <gary@gnu.org> - - * configure.in (AM_INIT_AUTOMAKE): bumped version number to - distinguish this from the last prerelease. - (AC_LIBLTDL_CONVENIENCE): build libltdl as a convenience library - in its own subdirectory. - - * modules/Makefile.am (*_SOURCES): renamed to use libtool's "no - lib prefix on a module" feature. - (LDFLAGS): Added `-module -avoid-version' flags to build - versionless module libraries. - * src/builtin.c (m4_load_module): use libltdl. - (module_unload_all): use libltdl. - * src/m4.c (module_init): initialise module loading on demand for - better diagnostics, and so that m4 will still work even if - the module code is broken. - * src/m4.h (module_init): removed. No longer relevant. - * modules/stdlib.c (m4_macro_table): use stdlib_LTX_ prefix on - exported symbols for compatibility with dlpreopening. - * modules/test.c (m4_macro_table, m4_init_module, - m4_finish_module): ditto. - * modules/time.c (m4_macro_table): ditto. - - * bootstrap: New file. Runs all the autoutils in the right order - after a fresh checkout, or a make maintainer-clean. - -1999-02-18 Akim Demaille <demaille@inf.enst.fr> - - * src/builtin.c (dump_symbols): New function, factoring common - content of m4_dumpdef and m4_symbols. - (m4_dumpdef): Use it. - (m4_symbols): New function, implementing `symbols'. Use it. - * doc/m4.texinfo: Fixed missing commas after @xref, so that the - file compile with modern makeinfo. - (Symbols): New node, documenting symbols. - (direntry): Modernize. - -1998-12-11 René Seindal <rene@seindal.dk> - - * src/builtin.c (predefined_tab): New predefined macros - __m4_changeword__, __m4_gmp__ and __m4_modules__ for testing for - configure time options. - -1998-12-01 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> - - * src/module.c (module_try_load): Don't try to be clever and - overwrite argument string. Instead allocate all constructed - strings locally, since they can have arbitrary lengths. Make - arguments pointers to const. - (module_search): Simplify due to above change. - -1998-11-29 René Seindal <rene@seindal.dk> - - * Prerelease 1.4n. - - * tests/Makefile.am (OTHER_TESTS, OTHER_FILES): New tests. - - * tests/other-tests/import-environment.{m4,test}: New test. - - * tests/other-tests/discard-comments.{m4,test}: New test. - - * doc/m4.texinfo (Invoking m4): Updated for --discard-comments. - - * src/m4.c (main): New option -c --discard-comments. - New global variable discard_comments. - - * src/m4.h (token_type): New TOKEN_NONE for tokens to be - discarded, ie never returned from next_token(). - Added declaration of discard_comments. - - * src/input.c (next_token): Now loops until token type is not - TOKEN_NONE. Comments are now given this type when comments should - be discarded. - - * doc/m4.texinfo (Invoking m4): Updated for --import-environment - and mpeval. - -1998-11-28 René Seindal <rene@seindal.dk> - - * src/m4.c (main): New option --import-environment (no single - letter option). - - * When configured with --with-gmp both the normal (fast) eval() - and the gmp aware mpeval() are defined. To restore previous - bahaviour use "define(`eval', defn(`mpeval'))". - - * tests/other-tests/gmp.m4: Changed to use mpeval(). - - * src/evalmp.c: New file for compiling eval.c as gmp aware. - Just defines USE_GMP if WITH_GMP is defined and includes eval.c. - - * src/eval.c: Now includes "numb.c" directly. Everything in this - file must by static, except evaluate(), which is changed to - mp_evaluate() if USE_GMP in force. - - * src/numb.c: Changed to be included by eval.c instead of being - compiled separately. Everything is declared static. - - * src/numb.h: Removed declarations of functions, as numb.c is now - included by eval.c. - - * src/builtin.c: Declaration of m4_mpeval() added. - Inserted `mpeval' in builtin table. - (do_eval): New function with common code for m4_eval and m4_mpeval. - (m4_mpeval): New function for gmp version of eval. - - * src/m4.h: Declaration of mp_evaluate(). - - * src/Makefile.am (m4_SOUCES): Includes mpeval.c. - (EXTRA_m4_SOURCES): Now has numb.c and numb.h - - * src/m4.c (main): m4 --version also shows which options were used - for compilation, such as: "GNU m4 1.4n (options: modules gmp)" - -1998-11-27 René Seindal <rene@seindal.dk> - - * Error messages now always print program name before input file - name as specified by GNU coding standards. Reported by Akim - Demaille <demaille@inf.enst.fr>. - - * doc/m4.texinfo (Include): Change due to changed error message - format. - (Eval): Do. - - * tests/get-them: Minor change to sed script due to changed error - message format. - - * src/m4.c (print_program_name): New func used to print program - name, input file and line number in error (). Used as an - error_print_progname handler. - (reference_error): Removed. - (main): Assigns error_print_progname. - - * src/m4.h (M4ERROR): Removed reference_error (). - -1998-11-25 René Seindal <rene@seindal.dk> - - * Updated to libtool 1.2b. - - * src/builtin.c (install_builtin_table): Added braces to avoid - warning of ambiguous 'else'. - - * src/module.c: Inserted search path code from path.c modified to - use new interface. - (module_init): Configured default path used only if M4MODPATH is - not set. - (module_try_load): Now reads libMODULE.la as generated by libtool - for actual module name. - (module_load): Gives better error messages on failure. - - * src/m4.h: Added declarations of structures and functions for - generic search path handling. - - * src/path.c: Removed all module specific code and introduced new - functions of more generic search path handling. - -1998-11-24 René Seindal <rene@seindal.dk> - - * configure.in: Defines INTLINCL to -I$(top_srcdir)/intl if using - included gettext, as <libintl.h> might not be found - otherwise. Reported by Andrew Bettison <andrewb@zip.com.au>. - -1998-11-22 René Seindal <rene@seindal.dk> - - * src/output.c (insert_diversion): Fixed bug that might cause m4 - to read from standard output! Triggered by input - 'divert(1)undivert(0)'. Test for divnum>0 changed to divnum>=0, - so now 'undivert(0)' does nothing. - -1998-11-18 René Seindal <rene@seindal.dk> - - * Prerelease 1.4m. - - * src/input.c (set_word_regexp): Fixed a bug, where word_regexp - could be changed when compiling a illegal regexp, causing later - use of the regexp to dump core. - - * src/module.c (module_load): Changed error message to conform to - standards. - - * src/m4.c (usage): Added message about reporting bugs. - - * doc/m4.texinfo (Changeword): Corrected a wrong example. - (Changeword): Added note about the type of regexps used. - - * ltconfig, ltmain.sh: New files from Libtool 1.2. - - * configure.in: Added calls to AM_ENABLE_SHARED, AM_DISABLE_STATIC - and AM_PROG_LIBTOOL. - - * acm4/modules.m4 (AM_WITH_MODULES): Redone completely to work - with libtool. - - * modules/Makefile.am: Changed completely to compile modules using - libtool. The modules are compiled as shared libraries, and are - renamed when installed. - - * src/m4.h, src/module.c, acm4/modules.m4, acconfig.h: Renamed - USE_SHL_LOAD to HAVE_SHL_LOAD - - * src/builtin.c (shipout_string): Now tests for a NULL string. - - * src/module.c: New level of indirection around non-portable - functions to load shared objects. Intended to encapsulate the non - portable parts better and to reduce the number of #ifdefs in the - code. - - * Makefile.am (DIST_SUBDIRS): Instead of EXTRA_DIST for added - directory modules/ to the distribution. - -1998-11-15 René Seindal <rene@seindal.dk> - - * Prerelease 1.4l. - - * modules/stdlib.c: New module `stdlib' defining some standard - functions: getcwd, getlogin, getpid, getppid, getuid, getpwnam, - getpwuid, hostname, rand, srand, getenv, setenv, unsetenv, uname. - - * src/builtin.c (shipout_string): New convenience function for - builtins and modules. - - * src/module.c (module_load): Tentative support for - shl_load/shl_findsym, but I cannot test it. Copied from MetaHTML. - - * Makefile.am (SUBDIRS): Directory modules added if configured. - - * modules/Makefile.am: Now correctly compiles and installs - modules in pkglibexecdir. - - * src/m4.h: WITH_MODULES defined iff HAVE_DLOPEN or USE_SHL_LOAD. - These two are now initialised by autoconf macros. - - * src/path.c (module_env_init): MODULE_PATH is always on the - search path. - - * src/Makefile.am: Now generated pathconf.h which defined the - default MODULE_PATH. - - * configure.in (pkglibexecdir): Added defintion of pkglibexecdir, - where modules are installed. - - * acm4/modules.m4: Enhanced with code from MetaHTML, contributed - by Brian J. Fox <bfox@datawave.net>. This change allow modules to - build and install automatically, and it is prepared for other - interfacec than dlopen(). - - * src/builtin.c (predefined_tab): Added __m4_version__ for the - current version of GNU m4. It is a GNU extension. - -1998-11-14 René Seindal <rene@seindal.dk> - - * tests/Makefile.am (GENERATED_TESTS): Added new - generated-tests/changesy.8.test - - * doc/m4.texinfo (Changesyntax): Documentation for escape - syntax class. - - * src/macro.c (expand_token): Check for escaped macro call before - symbol table lookup. - - * src/builtin.c (m4_changesyntax): Added `@' flag to define escape - characters - - * src/input.c: New static variable use_macro_escape, which is TRUE - iff some character has code SYNTAX_ESCAPE - (input_init): Added initialisation of use_macro_escape. - (check_use_macro_escape): New function to synchronise - use_macro_escape with the syntax table. - (set_quotes): Added call to check_use_macro_escape() - (set_comment): Do. - (set_syntax): Do. - (next_token): Added new case for IS_ESCAPE. - - * src/m4.h (SYNTAX_ESCAPE): Defined as simple syntax category. - -1998-10-13 René Seindal <rene@seindal.dk> - - * Prerelease 1.4k. - - * tests/Makefile.am (GENERATED_TESTS): Renamed gentest to - generated-tests. - - * tests/Makefile.am (OTHER_TESTS, OTHER_FILES): Added manually - maintained tests in tests/other-tests. These currently tests for - 8-bit transparency, multiple precision arithmetic and sync-line - output. Test for stackoverflow detection does not work. - - * examples/Makefile.am (TESTS): Added tests for all example files. - - * examples/mktests.sh: New file. Help program for creating test - files. - - * tests/mkconfig.sh: New file to generate tests/config.m4 and - tests/config.sh. This is for tests of configure selectable - features. Picks up all set WITH_ and ENABLE_ veriables from - config.h - - * src/path.c (path_search): Added argument 'char **expanded_name' - to return the expanded name. - - * src/m4.h: Added 2nd argument to declaration of path_search(). - - * src/m4.c (main): Added 2nd argument to path_search(). - - * src/freeze.c (reload_frozen_state): Do. - - * src/builtin.c (m4_undivert): Do. - (include): Do. - -1998-10-11 René Seindal <rene@seindal.dk> - - * acm4/Makefile.am (ACINCLUDES_M4): Added gmp.m4 and modules.m4 - - * acm4/modules.m4: New file. Defines AM_WITH_MODULES. - - * acm4/gmp.m4: New file. Defines AM_WITH_GMP. - - * configure.in: Introduced AM_WITH_MODULES and AM_WITH_GMP. - - * AUTHORS, ChangeLog: Changed all dates to ISO 8601. - - * intl/: Updated to GNU gettext 0.10.35. - - * doc/m4.texinfo (Format): Documented that format is blind. - - * src/builtin.c (builtin_tab): Builtin format marked as blind. - -1998-10-07 René Seindal <rene@seindal.dk> - - * Prerelease 1.4j. - - * tests/Makefile.am (GENERATED_TESTS): Changed .m4 extension to - .test, as the files are no longer just m4 input. - - * tests/get-them (FILE): Changed .m4 extension to .test. - - * src/m4.h (token_type): New token type TOKEN_SPACE introduced. - Otherwise quoted strings with leading whitespace first in a macro - argument would be eliminated. - - * src/macro.c (expand_token): Handles new token type TOKEN_SPACE. - (expand_argument): Do. - - * src/input.c (next_token): SPACE and NUM/OTHER characters are only - grouped together iff both quote and comment strings are single - character. Otherwise they might include a comment/quote leader. - (next_token): Returns new token type TOKEN_SPACE. - - * src/builtin.c (push_builtin_table): New function to push a - builtin_table on the stack without installing its contents. - (find_builtin_by_name): Added call to push_builtin_table() if - reading frozen files. Otherwise the builtins named in the frozen - files could not be found. - (install_builtin_table): Changed to use push_builtin_table() - -1998-10-04 René Seindal <rene@seindal.dk> - - * po/pl.po: Polish translation added. - - * po/POTFILES.in: src/module.c added. - -1998-10-04 René Seindal <rene@seindal.dk> - - * Prerelease 1.4i. - - * configure.in (ALL_LINGUAS): Added Polish pl.po - -1998-10-03 René Seindal <rene@seindal.dk> - - * Many files: Incorporated changes to implement dynamic modules. - Detailed comments in src/modules.c and modules/README - - * src/module.c: New file, implements the OS dependant parts of - dynamic module loading. - - * src/Makefile.am (m4_SOURCES): Added module.c - - * src/builtin.h: New file, declares some functions from builtin.c - that are of use for other modules (shipout_int, numeric_arg, - skip_space, bad_argc), and the macros ARG() and DECLARE(). - - * src/builtin.c (install_builtin_table): New function. Each - module brings in a builtin_table, which is pushed on a stack. - (struct builtin_table): New struct for list of builtin_tables. - (m4_loadmodule): New function to implement builtin "loadmodule". - (shipout_int): No longer static, to be used by modules. - (numeric_arg): do. - (skip_space): do. - (bad_argc): do. - (builtin_init): changed to call install_builtin_table() - (find_builtin_by_name): Now searches all builtin_tables - (find_builtin_by_addr): do. - - * src/path.c: Reorganised to allow for two search paths, one for - include files and one for modules. - - * src/m4.h: Added declarations for new functions in module.c and - in path.c. - - * src/m4.c (main): Added call to module_init(). - - * modules: New directory with a few demo modules. - - * Makefile.am (EXTRA_DIST): Added modules/* since modules/ is not - in SUBDIRS. - - * configure.in: Added modules/Makefile to AC_OUTPUT. - - * configure.in: Added code to implement --with-modules. Tests for - <dlfcn.h> and -ldl. - - * acconfig.h: Added WITH_MODULES - -1998-10-02 René Seindal <rene@seindal.dk> - - * examples/Makefile.am (pkgdata_DATA): Removed special target for - check and variables TESTS. These tests are now run from the - tests/ directory. - - * tests/Makefile.am (OTHER_TESTS): Added tests from the example/ - directory. The files stay there but the tests are run from the - tests/ directory. - - * tests/Makefile.am (EXTRA_DIST): Added run-test. - - * tests/run-test: New file. Run a test manually - - * tests/Makefile.am, tests/get_them: Moved automatically generated - tests (from the manual) to sub directory tests/gentest/. The - tests/ directory had gotten a bit messy. - -1998-09-06 Erick Branderhorst <Erick.Branderhorst@asml.nl> - - * examples/{comments,ddivert,debug,iso8859,reverse,sysv-args,\ - wrap}.test: Added a few testcases. - -1998-08-21 Erick Branderhorst <Erick.Branderhorst@asml.nl> - - * Prerelease 1.4h. - - * lib/Makefile.am (noinst_HEADERS): regex.h added - - * configure.in (jm_WITH_REGEX, jm_PREREQ_ERROR): - acm4/{error,regex}.m4 (from fileutils-3.16u.tar.gz). - - * acm4/Makefile.am: created providing rules to create - $(top_srcdir)/acinclude.m4 to be used by aclocal. - - * tests/defs (LANGUAGE, LC_ALL, LANG): force them to be - `C'. Reported by Ulrich Drepper. - - * Makefile.am (SUBDIRS): Removed checks directory - * configure.in (AC_OUTPUT): Removed checks/Makefile - - * doc/m4.texinfo (Patsubst,example): @comment added to preserve - the space when m4.texinfo is edited and whitespace.el is active. - (Defn,example): idem. - -1998-08-20 Erick Branderhorst <Erick.Branderhorst@asml.nl> - - * doc/m4.texinfo (Esyscmd): grep ../Makefile instead of - ../COPYING. ../Makefile is a file which is certainly present when - test is executed in testSubDir. One can't be sure that the COPYING - file is in .. or ../.. in all situations, the ../Makefile is - always there. - - * doc/m4.texinfo (Include): adjusted expected test output - according to new tests, i.e. the input will always come from the - file `in' created by the test. - - * tests/Makefile.am: Added three lines at the top to get - esyscmd.1.test working. - - * tests/get-them: modified to generate clearer tests who will need - less maintenance when new test examples are created in - `doc/m4.texinfo'. All tests are small (nearly stand-alone, they - need the generic file `defs') shell scripts creating `in', `ok', - `out' and when apropriate `okerr' and `err' in the directory - `testSubDir' when executed. The compare of `ok' and `out' - (and of `okerr' and `err') will be the exit status of the test. - `out' must match `ok' (and `okerr' must match `err') for the test - to be succesful. - - * tests/[a-b]\{1,8\}.[0-9]+.test: This namespace is reserved for - the tests generated by tests/get-them getting it input normally - from doc/m4.texinfo. The namespace tests/[a-b]+[0-9]+.test (no `.' - (dot) before the numeric part) is reserved for all other (hand - written) tests. The `+' means one or more times. - -1998-08-12 Erick Branderhorst <Erick.Branderhorst@asml.nl> - - * doc/Makefile.am (EXTRA_DIST): helptoman.pl and $(MANS) to - supported short man page to refer to info documentation - * helptoman.pl: added - * configure.in: AC_PATH_PROG(PERL,perl) - * Makefile.am (SUBDIRS): doc after src - - * libitized with libit 0.5 from - ftp://ftp.iro.umontreal.ca/pub/contrib/pinard/maintenance/libit. - - * configure.in (AC_REPLACE_FUNCS): added xmalloc xstrdup - * lib/Makefile.am (libm4_a_SOURCES): removed automakely supported - replacement functions, (libm4_a_LIBADD): @LIBOBJS@ - * configure.in (AM_WITH_REGEX), acconfig.h (WITH_REGEX): added - lib/rx.{c,h}: added - * configure.in (AC_CHECK_FUNC): getopt_long - - * src/m4.c (usage): Report bugs to m4-bugs@gnu.org. - - * TODO: added entry about dependencies - -1998-08-10 René Seindal <rene@seindal.dk> - - * Prerelease 1.4f - - * doc/m4.texinfo (Changesyntax): Added documentation for the macro - "changesyntax". - - * src/builtin.c (m4_changesyntax): Added builtin macro - "changesyntax" to modify the syntax table. - - * src/input.c, src/m4.h, src/macro.c: Implemented an input syntax - table. All categories are assigned a syntax code and tokens are - read according to this table. - -1998-08-09 René Seindal <rene@seindal.dk> - - * src/numb.{c,h}: New files, implements multiple precision eval - using GNU gmp. Originally submitted by John Gerard Makecki - (johnm@vlibs.com), later modified. Tested with GNU gmp 2.0.2. - - * doc/m4.texinfo (Eval): Added documentation for multiple - precision arithmetic library support. - - * src/m4.{c,h}, src/eval.c, src/builtin.c, configure.in: Changes - to accommodate multiple precision eval. - -1998-08-07 René Seindal <rene@seindal.dk> - - * src/input.c (MATCH, match_input), src/m4.h: changed definition - of comment and quote strings to `unsigned int' to allow eight bit - chars (reported by andrewb@zip.com.au (Andrew Bettison)). - - * src/builtin.c, doc/m4.texinfo: Builtin `syncoutput' added by - patch from Mike Howard <mike@clove.com> - -1998-08-06 René Seindal <rene@seindal.dk> - - * gettext.m4: corrected AM_WITH_NLS to handle use of installed - -lintl. - -1998-08-03 René Seindal <rene@seindal.dk> - - * Prerelease 1.4e - - * src/m4.h: Added ifdef ENABLE_NLS around include of <libintl.h> - and _ macro. M4 now builds with --disable-nls. - - * src/m4.c (main): reintroduced textdomain(PACKAGE) to get gettext - to look for right message catalogs. Call indef'ed by ENABLE_NLS. - - * configure.in (ALL_LINGUAS): Added complete list of translations: - de fr it ja nl ru sv. - -1998-05-23 Erick Branderhorst <Erick.Branderhorst@asml.nl> - - * po/nl.po: Dutch translation by Erick Branderhorst. - - * po/fr.po: French translation by Erick Branderhorst, based on the - translations by François Pinard in fr.msg and m4.cod. - -1998-05-22 Erick Branderhorst <Erick.Branderhorst@asml.nl> - - * Prerelease 1.4d. - - * src/m4.c: #include <signal.h> not <sys/signal.h>. - - * src/Makefile.am: CFLAGS = -Wall @CFLAGS@. - - * checks/Makefile.am: explicit list tests in CHECKS. - - * configure.in, {,src,doc,lib,examples,checks}/Makefile.am, - src/{ansi2knr.{1,c}} doc/{m4.texinfo,mdate-sh}, missing, - mkinstalldirs, install-sh: Added automake (1.3) support. - - * lib/{alloca.c,error.{c,h},get{date.h,opt.{c,h},opt1.c}, - obstack.{c,h},regex.{c,h},strtol.c,xmalloc.c,xstrdup.c}: - Used libitize (0.4) to update. - - * configure.in, ABOUT-NLS, intl/*, po/*: Added gettextize - (0.10.25) support. Removed LOCALE, fr.msg, m4.cod and adjusted - README accordingly. - - * src/stackovf.c: #ifdef USE_STACKOVF ... #endif to (de-)activate - stack overflow functionality. - -1994-12-03 François Pinard <pinard@iro.umontreal.ca> - - * Prerelease 1.4.1. - - * Makefile.in (realclean-local): Delete stamp-h.in. - - * configure.in, {,src,lib}/Makefile.in, src/m4.h, src/m4.c: - Localize, adapting from how it is done in sharutils. - - * fr.tt: New file, for French. - - * configure.in, {,*/}Makefile.in, acconfig.h, src/m4.c, - src/freeze.c: Rename PRODUCT to PACKAGE. - -1994-11-26 François Pinard <pinard@iro.umontreal.ca> - - * configure.in: Check for <libintl.h> and <locale.h>. - * src/m4.h, src/builtin.c, src/debug.c, src/eval.c, src/macro.c, - src/stackovf.c: Rename _ to __P. - * src/m4.h: Declare _ as a macro returning its argument, or else, - include <libintl.h> and declare _ as gettext. - * src/m4.c: Possibly include <locale.h> and call setlocale. - * src/m4.c, src/builtin.c, src/debug.c, src/eval.c, src/freeze.c, - src/input.c, src/macro.c, src/output.c, src/path.c, - src/stackovf.c, src/symtab.c: Use _ macro over all localizable - strings. - -1994-11-07 François Pinard <pinard@iro.umontreal.ca> - - * doc/Makefile.in (stamp-vti): Use new -r option to date. - - * configure.in: Put --with-gmp in place, in prevision for John - Gerard's work. - * acconfig.h: Document WITH_GMP. - -1994-11-05 François Pinard <pinard@iro.umontreal.ca> - - * Release 1.4. - - * doc/Makefile.in (realclean): Also remove stamp-vti. - Reported by Eric Backus. - -1994-11-02 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1994-11-01 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1994-10-31 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1994-10-30 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1994-10-29 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1994-10-28 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1994-10-27 François Pinard <pinard@iro.umontreal.ca> - - * Makefile.in (mostlyclean-local): Do not remove *~. - * */Makefile.in (mostlyclean): Idem. - Reported by Robert E. Brown and Richard Stallman. - -1994-10-09 François Pinard <pinard@iro.umontreal.ca> - - * src/m4.h: Get rid of CONFIG_BROKETS. - -1994-10-02 François Pinard <pinard@iro.umontreal.ca> - - * configure.in: Use AC_ARG_PROGRAM. - * aclocal.m4 (fp_C_PROTOTYPES): Substitute @kr@ by kr or empty. - Reported by David MacKenzie. - -1994-10-01 François Pinard <pinard@iro.umontreal.ca> - - * configure.in: Do not add -O to CFLAGS for GNU C, now that - configure does it automatically. - Reported by Jim Meyering. - -1994-09-23 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1994-09-18 François Pinard <pinard@iro.umontreal.ca> - - * src/Makefile.in (TAGS): Include a ../lib/TAGS reference. - Reported by Karl Berry. - -1994-09-14 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1994-09-13 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1994-09-10 François Pinard <pinard@iro.umontreal.ca> - - * configure.in: Use fp_ to match aclocal.m4. Revert _OS_ macros - to old names, for following Autoconf. - -1994-09-08 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1994-09-06 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1994-09-02 François Pinard <pinard@iro.umontreal.ca> - - * lib/Makefile.in (install): Depend on all. - -1994-08-31 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1994-08-30 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1994-08-29 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1994-08-28 François Pinard <pinard@iro.umontreal.ca> - - * Makefile.in, lib/Makefile.in, checks/Makefile.in: Arrange so - dist works from another build directory. - -1994-08-27 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1994-08-24 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1994-08-15 François Pinard <pinard@iro.umontreal.ca> - - * m4.c (long_options): Use "error-output", the dash was missing. - Reported by Akiko Matsushita. - -1994-08-12 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1994-07-29 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1994-07-21 François Pinard <pinard@iro.umontreal.ca> - - * m4.c (usage): Replace printf par fputs. - -1994-07-18 François Pinard <pinard@iro.umontreal.ca> - - * Release 1.2 - -1994-07-17 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1994-07-16 François Pinard <pinard@iro.umontreal.ca> - - * ansi2knr.c: New version sent by its author, Peter Deutsch. - -1994-07-15 François Pinard <pinard@iro.umontreal.ca> - - * Makefile.in: Modify so parallel make will not try making - lib/libm4.a twice simultaneously. - Reported by Jim Meyering. - -1994-07-14 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1994-07-12 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1994-07-07 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1994-07-06 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. - -1994-07-05 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1994-07-02 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1994-06-29 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1994-06-27 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1994-06-25 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1994-06-24 François Pinard <pinard@iro.umontreal.ca> - - * Makefile.in (DISTFILES): Distribute install.sh. - * install.sh: New file, copied from elsewhere. - Reported by Assar Westerlund and Kaveh R. Ghazi. - -1994-06-23 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1994-06-22 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1994-06-05 François Pinard <pinard@iro.umontreal.ca> - - * m4.h (_): Change argument from `x' to `Args'. - -1994-04-22 François Pinard <pinard@iro.umontreal.ca> - - * m4.h: Rename Args() to _(). - * m4.h: Remove extern specifier from all function declarations. - -1994-04-22 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. - -1994-04-13 François Pinard <pinard@iro.umontreal.ca> - - * checks/Makefile.in: Rename .all-stamp to stamp-checks. - - * Makefile.in (Makefile, etc.): Adapt for Autoconf 1.8. - -1994-01-30 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1994-01-25 François Pinard <pinard@iro.umontreal.ca> - - * m4.h: Move the conditional definition of volatile after the - inclusion of system files, because they may define it first. - -1994-01-04 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1994-01-03 François Pinard <pinard@iro.umontreal.ca> - - * Makefile.in: Do not define LDFLAGS, use CFLAGS on link calls. - Reported by Richard Stallman. - -1993-12-25 François Pinard <pinard@iro.umontreal.ca> - - * configure.in: Correct test for strerror, AC_FUNC_CHECK was used - instead of AC_HAVE_FUNCS. - Reported by Noah Friedman. - -1993-12-01 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1993-11-27 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1993-11-24 François Pinard <pinard@iro.umontreal.ca> - - * checks/get-them: Escape braces with backslashes in patterns, - because HPUX-9.01 awk needs this. - Reported by Jim Meyering. - -1993-11-22 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1993-11-20 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1993-11-17 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1993-11-12 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1993-11-09 François Pinard <pinard@iro.umontreal.ca> - - * m4.h: Do not define volatile if already defined. - Reported by René Seindal. - - * lib/Makefile.in: Add a forgotten ALLOCA=@ALLOCA@. Grrr! - - Reported by Bernhard Daeubler, Eric Backus, Hal Peterson, Hoang - Uong, Ian Taylor, Kaveh R. Ghazi, Tom McConnell and Walter Wong. - -1993-11-08 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1993-11-08 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1993-11-05 François Pinard <pinard@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. - -1993-11-04 François Pinard <pinard@iro.umontreal.ca> - - * lib/Makefile.in (dist): Correct permissions on files. - - * output.c: Declare tmpfile, some systems don't. - -1993-11-03 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1993-11-02 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1993-11-01 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1993-10-30 François Pinard <pinard@iro.umontreal.ca> - - * Makefile.in (m4.info): Use -I$(srcdir) on $(MAKEINFO). - Reported by Noah Friedman. - -1993-10-25 François Pinard <pinard@iro.umontreal.ca> - - * Makefile.in: Remove MDEFINES and cleanup. - -1993-06-09 François Pinard <pinard@iro.umontreal.ca> - - * Makefile.in (dist): Replace "echo `pwd`" by a mere "pwd". - Create a gzip file. - -1993-02-06 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1993-01-17 François Pinard <pinard@iro.umontreal.ca> - - * Makefile.in, lib/Makefile.in: Put $(CFLAGS) after $(CPPFLAGS), - so the installer can override automatically configured choices. - Reported by Karl Berry. - -1993-01-15 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1993-01-01 François Pinard <pinard@iro.umontreal.ca> - - * Makefile.in, lib/Makefile.in: Reinstate $(CPPFLAGS), use it. - Richard wants it there. - -1992-12-27 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1992-12-23 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1992-12-20 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1992-12-19 François Pinard <pinard@iro.umontreal.ca> - - * 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! - -1992-12-18 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1992-11-18 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. - -1992-11-17 François Pinard <pinard@iro.umontreal.ca> - - * *.[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. - -1992-11-16 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1992-11-16 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'. - -1992-11-15 François Pinard <pinard@iro.umontreal.ca> - - * *.[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. - -1992-11-14 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1992-11-13 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1992-11-12 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1992-11-11 François Pinard <pinard@iro.umontreal.ca> - - * 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(). - -1992-11-10 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1992-11-06 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1992-11-05 François Pinard <pinard@iro.umontreal.ca> - - * 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/. - -1992-03-10 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1992-03-09 François Pinard <pinard@iro.umontreal.ca> - - * 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. - -1992-03-08 François Pinard <pinard@iro.umontreal.ca> - - * 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 René to François. - -1991-10-24 René Seindal <seindal@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. - -1991-07-26 René Seindal <seindal@diku.dk> - - * Fixed various bugs. Release 0.99, manual 0.09. Many thanks to - François Pinard and Roland H. Pesch for providing me with reports. - - * The builtins incr and decr are now implemented without use of - eval. - - * The builtin indir is added, to allow for indirect macro calls - (allows use of "illegal" macro names). - - * The debugging and tracing facilities has been enhanced - considerably. See the manual for details. - - * The -tMACRO option is added, marks MACRO for tracing as soon - as it is defined. - - * Builtins are traced after renaming iff they were before. - - * Named files can now be undiverted. - - * The -Nnum option can be used to increase the number of - divertions available. - - * Calling changecom without arguments now disables all comment - handling. - - * The function m4_patsubst() is now consistently declared - static. - - * A bug in dnl is fixed. - - * A bug in the multi-character quoting code is fixed. - - * Several typos in the manual has been corrected. More probably - persist. - - * The m4.info file is now installed along with the program. - -1990-11-15 René Seindal <seindal@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. - -1990-01-22 René Seindal <seindal@diku.dk> - - * Initial beta release. Release 0.50, manual 0.05. - - - ----- - - Local Variables: - coding: utf-8 - End: - - Copyright (C) 1990-1994, 2000-2001, 2003, 2005-2010, 2013-2014, - 2017 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. |