summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
* configury: move local gnulib patches to build-aux subdirectory.Gary V. Vaughan2013-09-227-2/+2
| | | | | | | | * gl: Move from here... * build-aux/gl: ...to here. * ltdl/m4/gnulib-cache.m4: Regenerate. Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* configury: gettext cleanup.Gary V. Vaughan2013-09-222-1/+16
| | | | | | | | | | | | | | | Gettext's autopoint script only omits the intl directory creation for exactly 'AM_GNU_GETTEXT([external])'; any additional arguments force that directory to be built again. * configure.ac (AM_GNU_GETTEXT): move need-format-string-macros from here... (AM_GNU_GETTEXT_NEED): ...to here. * bootstrap.con (m4_precopy_git_version_gen): Since we use git-version-gen directly in configure.ac, it has to be in place before calling autopoint, which leaks error messages about the missing script otherwise. Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* configury: don't generate annoying autom4te.cache directory.Gary V. Vaughan2013-09-221-0/+4
| | | | | | * .autom4te.cfg: New file. Disable autotools caching. Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* configury: remove obsolete perl path search.Gary V. Vaughan2013-09-221-7/+0
| | | | | | * configure.ac (AC_PATH_PROG): Remove perl. Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* modules: huge simplification of module loading without libltdl.Gary V. Vaughan2013-09-2117-225/+70
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Libltdl is huge and slow, and carrying the weight of support for decades old systems. We can do much better using POSIX dlopen and dlsym directly, simplifying and speeding up as we do so. * configure.ac (LT_CONFIG_LTDL_DIR, LTDL_INIT): Remove. (M4_DEFAULT_PRELOAD): Set to ""; we lost preload support along with removing libltdl. * Makefile.am: Don't include ltdl/Makefile.inc. (AM_CPPFLAGS): Manually add current directory to include search paths. * m4/m4private.h (includes): Remove ltdl.h. (INIT_SYMBOL, m4__module_init): Remove. (struct m4_module): Change handle type from lt_dlhandle to void *. * m4/m4module.h (M4INIT_HANDLER): Remove. * m4/module.c (includes): Add dlfcn.h. (m4__module_interface, iface_id, m4__module_init, module_dlerror): Remove. (m4__module_open): Drastically simplified without all the libltdl setup and interface id twiddling. Just call dlopen to get a native handle, and the dlsym to get the init function. (m4_module_import): Similarly wrt dlsym. * m4/path.c (FILE_SUFFIXES): Replace .la and LT_MODULE_EXT with hardcoded ".so". (m4_load_filename): Likewise. * modules/gnu.c: Remove libltdl preprocessor symbol renaming, and use "include_<modulename>" as the single entry point function. * modules/import.c, modules/m4.c, modules/modtest.c, modules/mpeval.c, modules/shadow.c, modules/stdlib.c, modules/time.c, modules/traditional.c: Likewise. * main.c (main): Remove calls to m4__module_init and LTDL_SET_PRELOADED_SYMBOLS. * tests/m4.in: Make sure we always have the modules/.libs and tests/.libs directories at the front of M4PATH so that the tests will find the modules they need to include. Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* modules: speed up multiple includes of the same module.Gary V. Vaughan2013-09-201-5/+5
| | | | | | | | * m4/module.c (m4_module_load): If we already have the module loaded, reuse that. Otherwise, open the module afresh and register it's builtins and macros on success. Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* modules: simplify module lookup by name.Gary V. Vaughan2013-09-204-16/+24
| | | | | | | | | | | | | * m4/m4private.h (m4:namemap): New field for hash table to lookup module structures by name string. * m4/m4.c (hashfn): Hash function for plain strings. (m4_create): Initialise namemap field to a hash table using hashfn for inserting and looking up keys. * m4/module.c (m4__module_find): Replace the fussy libltdl twiddling with a hash lookup in m4:namemap. Add a new context parameter. Adjust all callers. Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* modules: store loaded modules in context struct.Gary V. Vaughan2013-09-206-38/+28
| | | | | | | | | | | | * m4/m4private.h (struct m4_module): Add a next pointer. (struct m4): Add a module list pointer. * m4/module.c (m4__module_open): Initialise the next pointer and update the list head when a new module is successfully opened. (m4_module_next): Replace the ugly libltdl twiddling with a straight forward module list traversal one-liner! Add a context parameter. Adjust all callers. Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* modules: store module name in the module struct.Gary V. Vaughan2013-09-203-10/+7
| | | | | | | | | | | * m4/m4private.h (m4_module): Add name field. * m4/module.c (m4__module_open): Save the name field. * m4/path.c (m4_load_filename): Pass the raw filename to m4_module_load. * m4/module.c (m4_get_module_name): Replace all the ltdl twiddling with returning the saved name field. Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* modules: allow only a single function access point.Gary V. Vaughan2013-09-2013-126/+147
| | | | | | | | | | | | | | | | | | | | | | Exporting non-function symbols barely works on Windows, so change the module loading API to use a single function access point which is then responsible for calling back to install symbols and macros. * m4/m4module.h, m4/m4module.c (m4_install_builtins) (m4_install_macros): New APIs for saving builtins and macros into the module struct. * m4/m4module.c (install_macro_table, install_builtin_table): Adjust accordingly. (m4__module_open): Simplify accordingly. * m4/m4private.h (BUILTIN_SYMBOL, MACRO_SYMBOL): Remove. * modules/gnu.c, modules/import.c, modules/m4.c, modules/modtest.c, modules/mpeval.c, modules/shadow.c, modules/time.c, modules/traditional.c (m4_builtin_table, m4_macro_table): Make static, and remove LTX symbol mangling macros. (M4INIT_HANDLER): Call m4_install_builtins and/or m4_install_macros. * tests/options.at: Now that init_func is always called, adjust expected debug output. Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* modules: remove support for module unload and refcount.Gary V. Vaughan2013-09-2015-748/+67
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Module management is horrifically more complex than it needs to be for the simple purpose of providing a means to implement new builtins using C. Fussing about reference counting or needing to maintain and test a facility to unload modules is an easy 600 lines to cut as a start at simplification. * src/main.c (main): Don't call m4__module_exit to unload all modules just prior to exiting the application. * m4/m4private.h (FINISH_SYMBOL, m4_module:refcount) (m4__module_exit, m4_module_refcount): Remove. (m4__module_next): Rename from this... * m4/m4module.h (m4_module_next): ...to this. Adjust all callers. (M4FINISH_HANDLER, m4_module_finish_func, m4_module_makeresident) (m4_module_refcount, m4_module_unload, m4_module_exit): Remove. * m4/m4module.c (m4__module_next): Rename from this... (m4_module_next): ...to this. (module_remove, m4_module_makeresident, m4_module_unload) (m4_module_exit, m4_module_refcount): Remove. * modules/load.c: Remove. (m4modules): Move from here... * modules/gnu.c (m4modules): ...to here. Update all callers. (M4FINISH_HANDLER(gnu)): Remove. * modules/m4.c (M4INIT_HANDLER(m4)): Remove. * modules/modtest.c (M4FINISH_HANDLER(modtest)): Remove. * modules/shadow.c (M4INIT_HANDLER(shadow)): Rewrite to work without refcount. * Makefile.am (pkglib_LTLIBRARIES): Remove modules/load.la. (modules_load_la_LDFLAGS, modules_load_la_LIBADD): Remove. * tests/modules.at: Remove references to load module, and tests of unload builtin. * tests/options.at: Remove obsolute finish hook and module unload trace output. * doc/m4.texi (Unload, Refcount): Remove. (M4modules): Change module reference from load to gnu. Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* refactor: remove dead M4MODPATH code.Gary V. Vaughan2013-09-203-25/+13
| | | | | | | | | | | * m4/m4private.h (USER_MODULE_PATH_ENV): Remove. * m4/module.c: Correct doc-comment header details. (m4__module_init): Remove PKGLIBEXECDIR and M4MODPATH handling. Move configmake.h include from here... * m4/path.c: ...to here. (m4__include_init): Append PKGLIBDIR to search path. Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* modules: remove ancient broken perl module.Gary V. Vaughan2013-09-184-148/+0
| | | | | | | | * modules/perl.c, modules/perl.m4: Remove. * po/POTFILES.in: Remove reference to perl.c. * Makefile.am: Remove commented out rules for building perl.so. Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* docs: update modules/README.Gary V. Vaughan2013-09-181-22/+9
| | | | | | * modules/README: Update to reflect current state. Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* doc: fix SVR3/4 references.Michael Witten2013-09-181-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | Consider: $ git grep SVR4 861325a84f231a2a2da307b53ef5ff527d67e876 | cut -c 42- ChangeLog: that Jim developped stackovf.c on a 486 running SVR4.0 (ESIX), and ChangeLog: `boolean'. This tag conflicts with <sys/types.h> on SVR4. README:processor. It is mostly SVR4 compatible, although it has some doc/m4.texinfo:processor. It is mostly SVR4 compatible, although it has some examples/WWW/m4lib/whatis.m4:version, and SVR4, although it has some extensions (for example, src/stackovf.c: signal stacks using either SVR4 or BSD interfaces. src/stackovf.c: 1. The siginfo parameter (with siginfo.h, i.e., SVR4). src/stackovf.c:/* SVR4. */ In particular: doc/m4.texinfo:processor. It is mostly SVR4 compatible, although it has some Elsewhere in `doc/m4.texinfo', only `Release 3' is referenced: $ git grep Release 861325a84f231a2a2da307b53ef5ff527d67e876 -- doc/m4.texinfo | cut -c 42- doc/m4.texinfo:System V, Release 3 version, except for some minor differences. doc/m4.texinfo:UNIX, such as System V Release 3, Solaris, and @acronym{BSD} flavors. This commit simply changes those last 2 lines by replacing `Release 3' with `Release 4'. * doc/m4.texinfo: Note that m4 is mostly compatible with SVR4. Signed-off-by: Michael Witten <mfwitten@gmail.com>
* build: avoid test failure on HPUXEric Blake2013-09-181-0/+64
| | | | | | | | | | | | | | | | | | | | POSIX permits implementations to open fd 0, 1, and 2 on exec(), even when the user tried to close them. HPUX-11.23 is one of the implementations that does not allow closed standard descriptors, leading to a failure of test 005.command_li. But a test that makes sure we behave gracefully in the face of closed standard descriptors makes no sense on a platform where we can never have them closed, so add some code to skip the test on "helpful" platforms. Note - HPUX opens any closed standard descriptor as O_WRONLY on /dev/null. This means that attempts to close stdout generally result in silent success, but attempts to close stdin often still result in failure when it is not possible to read from the O_WRONLY stdin. * doc/m4.texi (Command line files): Skip tests on systems where it is impossible to start with stdin/out closed. Reported by Gary V. Vaughan. Signed-off-by: Eric Blake <eblake@redhat.com>
* build: fix large diversions on mingwEric Blake2013-09-182-1/+15
| | | | | | | | | | | | | | | | | | Gnulib's clean-temp module defaults to using _O_TEMPORARY on mingw, which has the effect of deleting a file the first time it is closed. This resulted in a testsuite failure in 146.diversions, with m4 complaining that it could not create a temporary file for holding a diversion. In reality, m4 was trying to rename the file, but because mingw does not allow renaming an open file, we have to close it first - but closing it first deleted the file. For now, we will just work around the gnulib issue by disabling the use of _O_TEMPORARY. This was probably introduced in commit da5f6db (1.4.13), although my testing environment was painfully slow to confirm this, so I did not call out a 'regression since xyz' in the NEWS entry. * gl/lib/clean-temp.c.diff: New file. Signed-off-by: Eric Blake <eblake@redhat.com>
* maint: either fix or disable failing syntax-check rules.Gary V. Vaughan2013-09-1810-19/+19
| | | | | | | | | | | | | | | | | * cfg.mk (local-checks-to-skip): Skip bindtextdomain until I understand it! (old_NEWS_hash): Update. (exclude_file_name_regexp--sc_prohibit_always_true_header_tests) (exclude_file_name_regexp--sc_prohibit_strncpy) (exclude_file_name_regexp--update_copyright): Exclude failing files. * doc/Makefile.am: Remove trailing blank line. * m4/path.c: Remove trailing whitespace. * doc/m4.texi: Fix some errors flagged by syntax checks. * m4/input.c, m4/macro.c, m4/output.c, m4/stackovf.c: Don't use `main ()', which confuses syntax-checks. Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* maint: move syntax check exemptions into cfg.mkEric Blake2013-09-186-19/+11
| | | | | | | | | | | | | It's easier to maintain exemptions in a single file than it is to maintain a bunch of hidden .x files. * .x-sc_cast_of_argument_to_free: Delete file. * .x-sc_prohibit_tab_based_indentation: Likewise. * .x-sc_require_config_h: Likewise. * .x-sc_require_config_h_first: Likewise. * Makefile.am (syntax_check_exceptions): Delete rule. * cfg.mk (exclude_file_name_regexp): Move exemptions here. Signed-off-by: Eric Blake <eblake@redhat.com>
* build: avoid problematic gcc 4.4 warningsEric Blake2013-09-181-1/+22
| | | | | | | | | | | | Warnings that make sense under newer gcc can cause spurious failures under older gcc; it's nice to allow out-of-the-box development on stable releases while still getting the benefit of improved warning detection in bleeding-edge setups. * configure.ac (nw): Disable gcc warnings that cause build failures under RHEL 6.3. * gnulib: Update to latest. Signed-off-by: Eric Blake <eblake@redhat.com>
* doc: improve prehistory discussionPaul Eggert2013-09-181-9/+32
| | | | | | | * doc/m4.texinfo (History): Describe M6 and related processors. From a suggestion by Doug McIlroy in <http://lists.gnu.org/archive/html/m4-discuss/2012-05/msg00004.html>. Also, improve citation quality by giving URLs and so forth.
* maint: drop CVS cruftEric Blake2013-09-181-1/+1
| | | | | | | | These days, no one is complaining about using git as the primary interface. Anyone still using CVS can maintain their own ignore files. * bootstrap.conf (vc_ignore): Drop .cvsignore. Signed-off-by: Eric Blake <eblake@redhat.com>
* build: add more compiler checkingEric Blake2013-09-181-6/+3
| | | | | | | | Enable a bit more gcc warning coverage. * configure.ac (nw): Turn on some warnings that no longer trigger a gcc warning, or where we reduce the scope of unwarned code. Signed-off-by: Eric Blake <eblake@redhat.com>
* build: mark several pure functionsEric Blake2013-09-182-2/+3
| | | | | | | | | Found by using gcc 4.7.0's -Wsuggest-attribute=pure. * m4/system_.h (M4_GNUC_PURE): New macro. * m4/builtin.c (m4_builtin_find_by_name, m4_builtin_find_by_func): Mark pure. Signed-off-by: Eric Blake <eblake@redhat.com>
* doc: fix misuse of @xrefEric Blake2013-09-181-3/+3
| | | | | | | Texinfo states that @xref must start a sentence. * doc/m4.texinfo (Inhibiting Invocation): Reword. Signed-off-by: Eric Blake <eblake@redhat.com>
* build: deal with newer glibc vs. FORTIFY_SOURCEEric Blake2013-09-181-3/+8
| | | | | | | | | | | Recent glibc (for whatever stupid reason) decided to issue a #warning when FORTIFY_SOURCE is requested but not possible, due to compilation without optimization. But when debugging sources, we don't want our use of -Werror to kill compilation just because glibc wants to be chatty; when debugging, we don't care about source fortification. * configure.ac (FORTIFY_SOURCE): Make conditional on optimization. Signed-off-by: Eric Blake <eblake@redhat.com>
* gnulib: improve SIGPIPE emulation on mingwEric Blake2013-09-181-1/+2
| | | | | | | | | | On mingw, even doing 'm4 --help | sed 1q' would result in warnings about EINVAL, because mingw has odd pipe behavior and doesn't fail with EPIPE when no one is reading the other end. Gnulib works around most of this. * m4/gnulib-cache.m4: Import sigpipe module. Signed-off-by: Eric Blake <eblake@redhat.com>
* gnulib: remove obsolete strtol module.Gary V. Vaughan2013-09-181-2/+1
| | | | | | * ltdl/m4/gnulib-cache.m4: Regenerate. Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* index: fix another regression from faulty strstrEric Blake2013-09-182-0/+9
| | | | | | | | | * doc/m4.texinfo (Index macro): Test for the bug. * THANKS: Update. Reported by Mike Stump, with additional analysis from Ralf Wildenhues and Jim Meyering. Signed-off-by: Eric Blake <eblake@redhat.com>
* gnulib: use manywarnings module.Gary V. Vaughan2013-09-183-0/+48
| | | | | | | | * ltdl/m4/gnulib-cache.m4: Import manywarnings. Regenerate. * configure.ac: Support --enable-gcc-warnings configure option. * Makeflie.am (AM_CFLAGS): Honor --enable-gcc-warnings setting. Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* gnulib: import fclose module.Gary V. Vaughan2013-09-181-1/+2
| | | | | | * ltdl/m4/gnulib-cache.m4: Regenerate. Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* maint: speed up normal configure.Eric Blake2013-09-182-0/+10
| | | | | | | | * configure.ac (gl_ASSERT_NO_GNULIB_POSIXCHECK): Speed up normal configure runs (and document how to rerun GNULIB_POSIXCHECK). * HACKING: Document GNULIB_POSIXCHECK. Signed-off-by: Eric Blake <eblake@redhat.com>
* maint: update http git cloning instructionsEric Blake2013-09-182-1/+2
| | | | | | | | * HACKING: Git http doesn't like the redirect at git.sv.gnu.org. * THANKS: Update. Reported by Mike Dupont. Signed-off-by: Eric Blake <eblake@redhat.com>
* maint: prefer STREQ/STRNEQ to strcmp contortions.Gary V. Vaughan2013-09-183-3/+4
| | | | | | | | * m4/m4private (STRNEQ): New macro. * m4/path.c (m4_load_filename): Use it. * src/freeze.c (produce_frozen_state): Likewise. Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* maint: reflect recent copyright assignmentsEric Blake2013-09-181-1/+1
| | | | | | * AUTHORS: Update. Signed-off-by: Eric Blake <eblake@redhat.com>
* maint: update copyright year.Gary V. Vaughan2013-09-1879-125/+115
| | | | | | | * all files: Run 'make update-copyright' to add 2013 to list of copyright years. Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* maint: document use of copyright rangesEric Blake2013-09-184-19/+24
| | | | | | | | | | | * README: Copy coreutils wording for allowing copyright year ranges. * cfg.mk (UPDATE_COPYRIGHT_USE_INTERVALS): Now that GNU Coding Standards permit it, prefer shorthand copyright. * NEWS: 1.4.16 will be in 2011. * doc/m4.texinfo (History): Likewise. Signed-off-by: Eric Blake <eblake@redhat.com>
* build: pull in various gnulib fixesEric Blake2013-09-182-3/+3
| | | | | | | * m4/gnulib-cache.m4: Reflect spawn-pipe module name change. * modules/gnu.c (includes): Likewise. Signed-off-by: Eric Blake <eblake@redhat.com>
* maint: reflect recent copyright assignmentEric Blake2013-09-181-1/+3
| | | | | | * AUTHORS: Add Raphael Poss. Signed-off-by: Eric Blake <eblake@redhat.com>
* build: work around glibc and libsigsegv bugsEric Blake2013-09-171-0/+11
| | | | | | * docs/m4.texinfo (Index macro): Expose strstr bug. Signed-off-by: Eric Blake <eblake@redhat.com>
* docs: mention more historyEric Blake2013-09-171-1/+4
| | | | | | * doc/m4.texinfo (History): Add upcoming 1.4.16 release. Signed-off-by: Eric Blake <eblake@redhat.com>
* maint: clean up compiler warnings.Eric Blake2013-09-172-3/+2
| | | | | | | | * modules/evalparse.c (unary_term): Likewise. * m4/input.c (match_input): Likewise. Also drop useless casts to void. Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* m4: avoid spurious output with unrecognized format specifiers.Gary V. Vaughan2013-09-174-2/+10
| | | | | | | | | | | | | | | | * modules/format.c (format): Advance the loop invariants past an unrecognized format specifier to avoid printing the specifier character on the next pass. * doc/m4.texi (Format): Don't expect unrecognized specifiers to be output by format macro. * tests/null.out: Don't expect unrecognized null specifier to be output. * tests/generate.awk (new_test): Treat `ignore' in expected error output the same as Autotest. * doc/m4.texi (Format): Use special `ignore' string rather than unsupported @comment xerr magic. Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* m4: avoid a crash with bad format string.Carlo Teubner2013-09-172-1/+2
| | | | | | | | * src/format.c (expand_format): Fix off-by-one error. * THANKS: Add Carlo Teubner. Copyright-paperwork-exempt: Yes Signed-off-by: Eric Blake <eblake@redhat.com>
* maint: test bad format string crash.Eric Blake2013-09-171-0/+12
| | | | | | * doc/m4.texi (Format): Add a test. Signed-off-by: Eric Blake <eblake@redhat.com>
* maint: import release notes from branch-1.4.Gary V. Vaughan2013-09-171-14/+43
| | | | | | * NEWS: Add entries from releases 1.4.15 thru 1.4.17. Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* gnulib: fix use of link libraries.Eric Blake2013-09-172-2/+3
| | | | | | | | * Makefile.am (m4_LDADD): Update link libraries accordingly. * THANKS: Update. Reported by Rainer Tammer. Signed-off-by: Eric Blake <eblake@redhat.com>
* texinfo: drop obsolete @acronym invocations.Gary V. Vaughan2013-09-171-239/+239
| | | | | | * doc/m4.texi: Remove all uses of @acronym. Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* maint: add recent copyright assignments.Eric Blake2013-09-171-0/+2
| | | | | | * AUTHORS: Add Joel Denny and David Warme. Signed-off-by: Eric Blake <eblake@redhat.com>
* maint: enable additional c++ tests with make dist.Eric Blake2013-09-173-2/+7
| | | | | | | | | | * configure.ac (gl_CXX_CHOICE_DEFAULT_NO): Make default for C++ tests be disabled... * Makefile.am (DISTCHECK_CONFIGURE_FLAGS): ...but run them when building package. * ltdl/m4/gnulib-cache.m4: Regenerate. Signed-off-by: Eric Blake <eblake@redhat.com>