syntax-check: [REDO] fix violations and implement sc_prohibit_test_const_follows_var.

To safely use a non-literal fist argument to 'test', you must
always prepend a literal non-'-' character, but often the second
operand is a constant that doesn't begin with a '-' already, so
always use 'test a = "$b"' instead of the noisy 'test "X$b" = Xa'.
* cf.mk (sc_prohibit_test_const_follws_var): New syntax-check
rule to ensure we don't reintroduce noisy test operands.
bootstrap, build-aux/extract-trace, build-aux/general.m4sh,
build-aux/ltmain.m4sh, configure.ac, doc/libtool.texi, libtoolize.m4sh,
m4/argz.m4, m4/libtool.m4, m4/ltdl.m4, tests/bindir.at, tests/defs.m4sh,
tests/demo-relink.test, tests/demo/configure.ac,
tests/depdemo-relink.test, tests/destdir.at, tests/duplicate_conv.at,
tests/fail.at, tests/getopt-m4sh.at, tests/help.at, tests/libtoolize.at,
tests/link-2.test, tests/link-order2.at, tests/lt_dlopenext.at,
tests/mdemo/configure.ac, tests/mdemo2/configure.ac,
tests/need_lib_prefix.at, tests/nocase.at, tests/pdemo/configure.ac,
tests/pic_flag.at, tests/search-path.at, tests/shlibpath.at,
tests/static.at, tests/sysroot.at, tests/tagtrace.test,
tests/testsuite.at, tests/with-pic.at: Swap operands to avoid useless
noise.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
syntax-check: fix violations and implement sc_prohibit_sed_s_comma.

I like to name temporary directories that I will remove shortly
with two leading commas so that they sort lexicographically at
the top of `ls' output.  Now, `./configure
--prefix=`pwd`/,,inst' works again, for the first time in
several years.
* cfg.mk (sc_prohibit_sed_s_comma): Comma is too common a
character to use routinely as the separator for sed
substitutions on file paths and other variables determined by
the user, causing bugs like the one I describe above.  Make sure
we don't accidentally reintroduce any comma separators in
future.
* Makefile.am, bootstrap, bootstrap.conf, build-aux/extract-trace,
build-aux/general.m4sh, build-aux/git-hooks/commit-msg,
build-aux/git-log-fix, build-aux/ltmain.m4sh, libtoolize.m4sh,
m4/libtool.m4, m4/ltdl.m4, tests/cdemo-undef.test,
tests/cmdline_wrap.at, tests/darwin.at, tests/defs.m4sh,
tests/getopt-m4sh.at, tests/install.at, tests/libtoolize.at,
tests/mdemo/Makefile.am, tests/need_lib_prefix.at,
tests/sysroot.at, tests/tagdemo-undef.test, tests/testsuite.at:
Try to use `|' as the default separator wherever possible,
otherwise something else that doesn't occur in the substitution
expression.
* NEWS: Updated.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
maint: Fix generated ChangeLog typos.

* build-aux/git-log-fix: Spell Stefano Lattarini's name
correctly.
Don't use my home email address for GNU commits.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
bootstrap: make sure patch is available to bootstrap if necessary.

Make sure we're not lacking any functionality provided by the
incumbent gnulib bootstrap script, and where it's easy to do so
(like it is here), provide better functionality!
* bootstrap (require_patch): Make sure that PATCH expands to the
best `patch' command available on the system, honouring
overrides in the users environment.
(require_patch_buildreq): Automatically add a requirement for a
patch command to buildreq when there are diff files in
$local_gl_dir.
(func_require_buildtools_uptodate): Call require_patch_buildreq
before testing build tool versions.
(func_gnulib_tool_copy_file): Make sure PATCH is set before using
gnulib-tool to copy files.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
bootstrap: ensure consistent function header comments.

* bootstrap (require_bootstrap_uptodate)
(require_buildtools_uptodate): Use `require_...' in header
comment for these functions to be consistent with the rest,
rather than `func_require_...'.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
bootstrap: use _buildreq as a prefix for better ordering.

* bootstrap (require_autobuild_buildreq)
(require_autoconf_buildreq, require_automake_buildreq)
(require_autopoint_buildreq, require_libtoolize_buildreq)
(require_patch_buildreq): Rename from these...
(require_buildreq_autobuild, require_buildreq_autoconf)
(require_buildreq_automake, require_buildreq_autopoint)
(require_buildreq_libtoolize, require_buildreq_patch): ...to
these, respectively.  Adjust all callers.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
bootstrap: reorder function definitions to keep func_buildreq_* together.

* bootstrap: Restore asciibetical order, so that all the
buildreq function definitions are together.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
bootstrap: escape quotes properly in generated functions.

* bootstrap: Although not a real bug, for consistency, be sure
to correctly escape single quotes inside a single quoted
function generator.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
libtoolize: rename ltdl.mk filter function.

* libtoolize.m4sh (require_Makefile_inc_filter): Rename from
this...
(require_ltdl_mk_filter): ...to this. Adjust all callers.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
libtoolize: use _filter as a prefix for better ordering.

* libtoolize.m4sh (require_Makefile_am_filter)
(require_ltdl_mk_filter, require_aclocal_m4_filter)
(require_configure_ac_filter): Rename these functions from this...
(require_filter_Makefile_am, require_filter_ltdl_mk)
(require_filter_aclocal_m4, require_filter_configure_ac): ...to
this, respectively.  Adjust all callers.
(Makefile_am_filter, ltdl_mk_filter, aclocal_m4_filter)
(configure_ac_filter): Rename these global variables from this...
(filter_Makefile_am, filter_ltdl_mk, filter_aclocal_m4)
(filter_configure_ac): ...to this, respectively.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
libtoolize: reorder function definitions to keep func_filter_* together.

* libtoolize: Restore asciibetical order, so that all the
filter function definitions are together.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
maint: share useful functions from general.m4sh.

* build-aux/ltmain.m4sh (func_append, func_append_quoted)
(func_arith, func_len): Removed from here...
* build-aux/general.m4sh (func_append, func_append_quoted)
(func_arith, func_len): ...and added to here.
(func_dirname, func_dirname_and_basename, func_normal_abspath)
(func_relative_path): Use func_append.
* tests/getopt-m4sh.at (_LT_AT_FALLBACK_FUNC_EXTRACT): Removed.
Fallback functions are now in any m4sh generated file
automatically.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
maint: pick XSI funcs at runtime, not configure time.

Determine, on a function by function basis, what XSI features
are available in the shell that is actually running the script,
rather than the one that was picked at configure time by the
re-execution engine.
* m4/libtool.m4 (_LT_PROG_FUNCTION_REPLACE)
(_LT_PROG_REPLACE_SHELLFNS): Remove.
(_LT_CHECK_SHELL_FEATURES): Remove tests for XSI and += support.
* build-aux/general.m4sh (func_append, func_append_quoted)
(func_arith, func_len, func_basename, func_dirname)
(func_dirname_and_basename, func_stripname): List both enhanced
and fallback implementations, and choose one based on whether
the enhanced features required by the fastest version are
available.
* build-aux/getopt.m4sh (func_split_short_opt)
(func_split_long_opt): Ditto.
* build-aux/ltmain.m4sh (func_lo2o, func_xform): Ditto.
* tests/getopt-m4sh.at: Add tests for enhanced and fallback
implementations of func_arith, func_len, func_stripname and
func_dirname_and_basename.
* NEWS: Updated.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
libtoolize: refactor copying filter creation.

Prevent the various require_filter functions from becoming too
long by factoring common code into new functions.
* libtoolize (func_make_relative_dir_filter)
(func_make_relative_ltdl_filter): New functions. Generalize and
consolidate the various similar snippets for concatenating
together the sed scripts for func_copy filtering.
(require_filter_Makefile_am, require_filter_aclocal_m4)
(require_filter_configure_ac): Simplify.
(require_ltdl_relative_aux_dir): Remove.
(require_ltdl_relative_macro_dir): Ditto.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
bootstrap: put back missing spaces before parens.

* bootstrap (func_require_buildreq_autobuild)
(func_require_buildreq_automake): Vi's delete word command is
too greedy and also eats trailing whitespace before following
non-word-chars. Put back the spaces it ate so that
syntax-checks pass once again.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
tests: make sure file restore traps are called correctly on AIX.

* tests/demo-noinst-link.test (func_save_files): set the restore
trap outside a function, otherwise AIX 5.3 /bin/sh will run the
trap at the end of the function, instead of when the script
exits.
* tests/demo-relink.test (func_save_files): Ditto.
* tests/depdemo-relink.test (func_save_files): Ditto.
Reported by Stefano Lattarini.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
tests: s/snippit/snippet/.

* tests/demo/foo.h, tests/pdemo/foo.h: Spell `snippet' correctly.
Reported by Stefano Lattarini.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
maint: disable prohibit_always-defined_macros syntax check.

Aside from Apple grep silently failing to run this test and
report violations, libtool still uses non-gnulib versions of
dirent.h and argz.h which use the same macros, but are not
always-defined.
* cfg.mk (local-checks-to-fix): Move
sc_prohibit_always-defined_macros from here...
(local-checks-to-skip): ...to here.
Reported by Peter O'Gorman.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
Support x32.

* m4/libtool.m4 (_LT_ENABLE_LOCK): Support x32.
libtool: minimise forks per invocation under bash.

* build-aux/general.m4sh (lt_HAVE_PLUSEQ_OP, lt_HAVE_ARITH_OP)
(lt_HAVE_XSI_OPS): Set these without forking a test script when
running under bash, to avoid a few unnecessary forks.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>