summaryrefslogtreecommitdiff
path: root/NEWS
Commit message (Collapse)AuthorAgeFilesLines
* Use correct license on auxiliary documentation.Eric Blake2010-01-071-4/+14
| | | | | | | | | | | | | | | | | | Finish the work started by commit bef627e995. * 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. Signed-off-by: Eric Blake <ebb9@byu.net> (cherry picked from commit 6ba66f1202d607726e72e17e1fc778cdafee1941)
* More whitespace cleanup.Eric Blake2010-01-071-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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. Signed-off-by: Eric Blake <ebb9@byu.net> (cherry picked from commit b30b61aa1be7659c155272135fa17a8d7528f80e)
* Update copyright year.Eric Blake2010-01-051-2/+2
| | | | | | | | All files impacted, via 'make update-copyright'. Additionally: * .gitignore: Ignore backup files. Signed-off-by: Eric Blake <ebb9@byu.net> (cherry picked from commit 5f42c4dabb6858601abce7b38ca78f4c3069f301)
* Pick up gnulib fixes for sub-process execution.Eric Blake2009-08-241-1/+5
| | | | | | | | | | * 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. Signed-off-by: Eric Blake <ebb9@byu.net> (cherry picked from commit d3237b2af19c80fc80218fd33eb64266be510be8)
* A status of 127 does not always imply esyscmd failure.Eric Blake2009-08-241-0/+8
| | | | | | | | | | * modules/gnu.c (esyscmd): Silence gnulib message; regression introduced 2009-03-13. * doc/m4.texinfo (Sysval): Test this. * NEWS: Document the change. Signed-off-by: Eric Blake <ebb9@byu.net> (cherry picked from commit 5fa9c079fbe226113280ac86401b432d9c0e7981)
* Mention release of 1.4.13.Eric Blake2009-04-161-1/+1
| | | | | | | | | * 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. Signed-off-by: Eric Blake <ebb9@byu.net> (cherry picked from commit 19141fb1c466da0b97f5606a3c7ab53123262131)
* Allow configuration choice in syscmd shell.Eric Blake2009-03-131-0/+3
| | | | | | | | | | | | | | | | | * 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. Signed-off-by: Eric Blake <ebb9@byu.net> (cherry picked from commit 060b5319b3452a2464eea1defc5fae608a12b574)
* Speed up translit when from argument is short.Eric Blake2009-02-231-2/+5
| | | | | | | | | * modules/m4.c (translit): Use memchr2 when possible. * tests/builtins.at (translit): Add tests. * NEWS: Document this. Signed-off-by: Eric Blake <ebb9@byu.net> (cherry picked from commit 29b625aa941718e43cc04dfc217f314518bbc6d1)
* Sync changecom documentation with branch.Eric Blake2009-02-171-4/+4
| | | | | | | * doc/m4.texinfo (Changecom): Tweak wording. * NEWS: Import changes from the branch. Signed-off-by: Eric Blake <ebb9@byu.net>
* Stage 29b: Process quotes and comments by buffer, not bytes.Eric Blake2009-02-171-5/+8
| | | | | | | | | * 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. Signed-off-by: Eric Blake <ebb9@byu.net>
* Enhance index to support starting offset.Eric Blake2009-02-091-0/+4
| | | | | | | | | | * modules/m4.c (index): Add optional third argument. * NEWS: Document this. * doc/m4.texinfo (Index macro): Likewise. (Macro Arguments): Adjust tests. Signed-off-by: Eric Blake <ebb9@byu.net> (cherry picked from commit b9c165b394c06d2da657caae33efd5843689ff3b)
* Enhance substr to support replacement text.Eric Blake2009-01-071-1/+2
| | | | | | | | | * doc/m4.texinfo (Substr): Document new semantics. * modules/m4.c (substr): Support optional fourth argument. * NEWS: Document this. Signed-off-by: Eric Blake <ebb9@byu.net> (cherry picked from commit 59d3cfafa8d73e43a974bc066722cd6220cb479f)
* Enhance substr to support negative values.Eric Blake2009-01-071-2/+7
| | | | | | | | | | * doc/m4.texinfo (Substr): Document new semantics, and how to simulate old. * modules/m4.c (substr): Support negative values. * NEWS: Document this. Signed-off-by: Eric Blake <ebb9@byu.net> (cherry picked from commit e9e4abba45f7e9f368cf497e14bc2ce64b867a02)
* Relax eval as allowed by POSIX 2008.Eric Blake2008-12-241-1/+5
| | | | | | | | | | * 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 `?:'. Signed-off-by: Eric Blake <ebb9@byu.net>
* Add debugmode(o) to control dumpdef output location.Eric Blake2008-12-231-7/+5
| | | | | | | | | | | | | | | | | * 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. Signed-off-by: Eric Blake <ebb9@byu.net> (cherry picked from commit df6bfeeaac6bdc1ef8e5406c6ac051af2c10d0d8)
* Make --debugfile argument optional.Eric Blake2008-12-231-13/+18
| | | | | | | | | | | | | | * 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. Signed-off-by: Eric Blake <ebb9@byu.net> (cherry picked from commit c59c67993219ec04965b1347b44a7e3d09ff425c)
* Avoid quadratic behavior for some cases of divert/undivert.Eric Blake2008-12-151-1/+1
| | | | | | | | | | | | | | | * 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. Signed-off-by: Eric Blake <ebb9@byu.net>
* Resync NEWS with branches.Eric Blake2008-11-281-10/+48
| | | | | | * NEWS: Mention 1.4.12, update state of 1.6. Signed-off-by: Eric Blake <ebb9@byu.net>
* Allow debugmode control over whether defn(undef) warns.Eric Blake2008-08-231-14/+38
| | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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. Signed-off-by: Eric Blake <ebb9@byu.net>
* Remove deprecated -N option; fixes a regression from 2006-09-14.Eric Blake2008-08-181-0/+3
| | | | | | | | | | | * 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. Signed-off-by: Eric Blake <ebb9@byu.net> (cherry picked from commit b8829779ba82826040f16fe78420f0e5a2fe881e)
* Fix regression in commenting unbalanced quotes, from 2008-02-16.Eric Blake2008-08-031-7/+7
| | | | | | | | | | | | | | * 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. Signed-off-by: Eric Blake <ebb9@byu.net>
* Improve frozen debugmode behavior.Eric Blake2008-05-281-2/+7
| | | | | | | | | | | | * 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. Signed-off-by: Eric Blake <ebb9@byu.net>
* In frozen file, split consecutive strings with newline.Eric Blake2008-05-191-5/+7
| | | | | | | | | | | | | | | * 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. Signed-off-by: Eric Blake <ebb9@byu.net>
* Allow freezing the trace status of macros.Eric Blake2008-05-171-5/+6
| | | | | | | | | | | | | | * 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. Signed-off-by: Eric Blake <ebb9@byu.net>
* Stage 23: allow tracing of indirect macro calls.Eric Blake2008-05-081-4/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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. Signed-off-by: Eric Blake <ebb9@byu.net>
* Test for traceon regression just fixed in branch-1.6.Eric Blake2008-05-071-0/+4
| | | | | | | * doc/m4.texinfo (Trace): Enhance test. * NEWS: Port news item from branch. Signed-off-by: Eric Blake <ebb9@byu.net>
* Stage 22: allow builtin token concatenation outside $@.Eric Blake2008-05-051-0/+14
| | | | | | | | | | | | | | | | | | | | | | | | | * 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. Signed-off-by: Eric Blake <ebb9@byu.net>
* Mention 1.4.11 release.Eric Blake2008-04-091-18/+56
| | | | | | | | | | * 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. Signed-off-by: Eric Blake <ebb9@byu.net>
* Stage 20b: make m4wrap obey POSIX fifo ordering.Eric Blake2008-03-181-2/+4
| | | | | | | | | | | | | | | | | | | * 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. Signed-off-by: Eric Blake <ebb9@byu.net>
* Stage 19c: allow builtin tokens in more macros.Eric Blake2008-03-131-0/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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. Signed-off-by: Eric Blake <ebb9@byu.net>
* Fix nested builtin(`shift',$@) regression from 2008-02-23.Eric Blake2008-03-061-1/+2
| | | | | | | | | | * 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. Signed-off-by: Eric Blake <ebb9@byu.net>
* Import news from 1.4.10b.Eric Blake2008-02-291-19/+73
| | | | | | * NEWS: Update from branch. Signed-off-by: Eric Blake <ebb9@byu.net>
* Update NEWS.Eric Blake2008-02-221-2/+9
| | | | | | * NEWS: Document change to __gnu__ on 2008-02-11. Signed-off-by: Eric Blake <ebb9@byu.net>
* Update some documentation about version control.Eric Blake2007-11-021-1/+1
| | | | | | | | | | | | | * 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. Signed-off-by: Eric Blake <ebb9@byu.net> (cherry picked from commit 0f7701a19187152180a0b9907fab29d152fc534a)
* Add refcount builtin.Eric Blake2007-10-061-0/+3
| | | | | | | | | | | | | | | | | | | * 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.
* Upgrade to GPLv3, and document 1.4.10.Eric Blake2007-10-061-0/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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.
* Add extension to divert builtin.Eric Blake2007-10-061-0/+5
| | | | | | | | | | | | | | * 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. * NEWS: Document the extension. Reported by Daniel Richard G.
* * m4/output.c (m4_output_init): Update to latest gnulib.Eric Blake2007-10-061-2/+2
| | | | | | | * bootstrap (ltdl/m4/.cvsignore): No longer track generated .cvsignore in CVS. * NEWS: Reflect release of 1.4.9. * THANKS: Update.
* Exercise gnulib's new POSIX *printf modules.Eric Blake2007-10-061-0/+3
| | | | | | | | * 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.
* POSIX XCU ERN 137 was approved.Eric Blake2007-10-061-22/+330
| | | | | | | | | | | | | | | | | | | * 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.Eric Blake2007-10-061-15/+4
| | | | | | | | | | * 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.
* * m4/m4module.h (M4_SYNTAX_ASSIGN): Delete this unusedEric Blake2007-10-061-2/+4
| | | | | | | | | | | | | | | | | | | | | | | 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
* * src/freeze.c (produce_char_dump): Delete. Replace with...Eric Blake2007-10-061-4/+8
| | | | | | | | | | | (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.
* * tests/builtins.at (__m4_version__): New test.Eric Blake2007-10-061-0/+3
| | | | | | | | | | | | | | | | * 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.
* * m4/m4private.h (to_uchar): Move...Eric Blake2007-10-061-19/+27
| | | | | | | | | | | | | | | | | | | | | | | | | * 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
* * doc/m4.texinfo (Format, Incr): More merges.Eric Blake2007-10-061-1/+4
| | | | | | | | | | | | | | | | | | | (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.
* * m4/m4module.h (m4_set_syntax): Change signature.Eric Blake2007-10-061-0/+8
| | | | | | | | | | | | | | | | | | | | | | * 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,
* Add several new command line options.Eric Blake2007-10-061-352/+392
| | | | | | | | | | | | | | | | | | | | | | | | * 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 lin
* * m4/macro.c (expand_argument): Fix missing initialization.Eric Blake2007-10-061-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | * 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_tab
* Convert diversions to list instead of sparse array, part 2.Eric Blake2007-10-061-0/+5
| | | | | | | | | | | | | | | | | | * 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.