mirror of
https://https.git.savannah.gnu.org/git/m4.git
synced 2026-01-27 09:54:42 +00:00
* m4/module.c (m4__module_open): Instead of calling lt_dlopenext right away, use the preload hint first incase path searching has been disabled by POSIXLY_CORRECT. Otherwise fallback to a manual path search to override libltdl's algorithm. * m4/m4module.h: Adjust. * m4/path.c (FILE_SUFFIXES): Order to try suffixes in our path search algorithm. (NO_SUFFIXES): Alternatively, how to to search a path without adding file suffixes. (m4_path_search): Add a new suffixes parameter defaulting to NO_SUFFIXES. Adjust all callers. (m4_load_filename): New generic load function that tries to open a matched file first as a module, and if that fails fall back to as (possibly frozen) m4 input. (m4_fopen): New function with close on exec functionality. * modules/m4.c (include, sinclude): Use m4_load_filename to overload these builtins to work with modules too. * modules/load.c (load): Removed this builtin. * src/main.c: Remove Dynamic loading features section, and M4MODPATH support. (long_options): Remove "load-module", "unload-module" and "module-directory" options. (OPTSTRING): Remove 'M' and 'm' options. (process_file): Use m4_load_filename to support module names on the command line. * Makefile.am (TESTS_ENVIRONMENT): No need for abs_top_builddir any more. * doc/m4.texinfo: Update examples. (Dynamic loading features, Load): Removed. (Command line files): Describe how non-option arguments are treated to try to find a matching macro file or dso. (Include): Describe additional dso loading features if a suitable text file cannot be found. (Modules): Updated. * tests/builtins.at, tests/m4.in, tests/modules.at, tests/options.at: Adjust test cases and calling conventions to new semantics. * NEWS: Updated.
10855 lines
412 KiB
Plaintext
10855 lines
412 KiB
Plaintext
2008-05-05 Gary V. Vaughan <gary@gnu.org>
|
||
|
||
Factor load functionality into include builtin.
|
||
* m4/module.c (m4__module_open): Instead of calling lt_dlopenext
|
||
right away, use the preload hint first incase path searching has
|
||
been disabled by POSIXLY_CORRECT. Otherwise fallback to a
|
||
manual path search to override libltdl's algorithm.
|
||
* m4/m4module.h: Adjust.
|
||
* m4/path.c (FILE_SUFFIXES): Order to try suffixes in our path
|
||
search algorithm.
|
||
(NO_SUFFIXES): Alternatively, how to to search a path without
|
||
adding file suffixes.
|
||
(m4_path_search): Add a new suffixes parameter defaulting to
|
||
NO_SUFFIXES. Adjust all callers.
|
||
(m4_load_filename): New generic load function that tries to
|
||
open a matched file first as a module, and if that fails fall
|
||
back to as (possibly frozen) m4 input.
|
||
(m4_fopen): New function with close on exec functionality.
|
||
* modules/m4.c (include, sinclude): Use m4_load_filename to
|
||
overload these builtins to work with modules too.
|
||
* modules/load.c (load): Removed this builtin.
|
||
* src/main.c: Remove Dynamic loading features section, and
|
||
M4MODPATH support.
|
||
(long_options): Remove "load-module", "unload-module" and
|
||
"module-directory" options.
|
||
(OPTSTRING): Remove 'M' and 'm' options.
|
||
(process_file): Use m4_load_filename to support module names
|
||
on the command line.
|
||
* Makefile.am (TESTS_ENVIRONMENT): No need for abs_top_builddir
|
||
any more.
|
||
* doc/m4.texinfo: Update examples.
|
||
(Dynamic loading features, Load): Removed.
|
||
(Command line files): Describe how non-option arguments are
|
||
treated to try to find a matching macro file or dso.
|
||
(Include): Describe additional dso loading features if a
|
||
suitable text file cannot be found.
|
||
(Modules): Updated.
|
||
* tests/builtins.at, tests/m4.in, tests/modules.at,
|
||
tests/options.at: Adjust test cases and calling conventions
|
||
to new semantics.
|
||
* NEWS: Updated.
|
||
|
||
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.
|
||
* NEWS: Document the extension.
|
||
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, 1991, 1992, 1993, 1994, 2000, 2001, 2003,
|
||
2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
||
|
||
Copying and distribution of this file, with or without
|
||
modification, are permitted provided the copyright notice
|
||
and this notice are preserved.
|