Paul Eggert [Tue, 20 Jun 2023 21:46:29 +0000 (14:46 -0700)]
doc: INSTALL uses UTF-8 now
* doc/Makefile (INSTALL.ISO, INSTALL.UTF-8):
Adjust to the fact that INSTALL now uses UTF-8.
INSTALL.UTF-8 is now obsolescent since it is identical.
(INSTALL.ISO): Transliterate all non-ASCII characters,
not just single quotes.
* doc/INSTALL.ISO: Regenerate.
Paul Eggert [Mon, 19 Jun 2023 21:08:06 +0000 (14:08 -0700)]
largefile: port to GNU/Linux alpha and s390x
This patch syncs from Autoconf master.
Problem reported by Matoro <https://bugs.gnu.org/64123>.
* lib/autoconf/specific.m4 (_AC_SYS_LARGEFILE_TEST_CODE):
New overridable macro FTYPE, to test types other than off_t.
(_AC_SYS_LARGEFILE_TEST_CODE): Test ino_t for
-D_FILE_OFFSETBITS=64 too, if no flags are needed for off_t.
Needed for GNU/Linux on alpha and s390x.
Bruno Haible [Mon, 19 Jun 2023 17:00:58 +0000 (19:00 +0200)]
doc: Use "spaced en dash" style instead of "spaced em dash" style.
Suggested by Paul Eggert.
* doc/gnulib.texi: At sentence level, use "spaced en dash" style instead
of "spaced em dash" style.
* doc/gnulib-intro.texi: Likewise.
* doc/multithread.texi: Likewise.
* doc/strings.texi: Likewise.
Bruno Haible [Sun, 18 Jun 2023 20:37:32 +0000 (22:37 +0200)]
configmake: Bypass the unusable 'echo' command of some shells.
Reported by Brian Inglis <Brian.Inglis@Shaw.ca> in
<https://lists.gnu.org/archive/html/bug-gettext/2023-06/msg00054.html>.
* m4/build-to-host.m4 (gl_BUILD_TO_HOST): Use 'printf' instead of
'echo', because the "dash" shell has a SystemV compatible 'echo'
command. Also, be sure to remove trailing CRs.
Paul Eggert [Sun, 18 Jun 2023 07:27:52 +0000 (00:27 -0700)]
Update \(en in copyright notices
* build-aux/update-copyright (ndash_re): New var, matching \(en too.
(stmt_remainder_re, stmt): Use it.
(stmt): Match year in constructs like "\(en2023".
(ndash): Now \(en in man pages.
Bruno Haible [Thu, 15 Jun 2023 06:38:48 +0000 (08:38 +0200)]
aligned-malloc, rmdir-errno: Sanitize configuration test result.
* m4/malloc-align.m4 (gl_MALLOC_ALIGNMENT): Don't put a newline at the
end of the conftest.out file.
* m4/rmdir-errno.m4 (gl_FUNC_RMDIR_NOTEMPTY): Don't put a newline at the
end of the confdir2/errno file.
Bruno Haible [Mon, 12 Jun 2023 16:39:49 +0000 (18:39 +0200)]
vasnwprintf-posix: Work around another musl libc bug.
* m4/printf.m4 (gl_SWPRINTF_DIRECTIVE_LC): New macro.
* m4/vasnprintf.m4 (gl_PREREQ_VASNWPRINTF): Invoke it, and set
NEED_WPRINTF_DIRECTIVE_LC if the %lc test failed.
* lib/vasnprintf.c (VASNPRINTF): If NEED_WPRINTF_DIRECTIVE_LC is set, do
the processing for %lc and %ls ourselves.
(local_wcslen): Update condition.
* doc/posix-functions/swprintf.texi: Mention the %lc problem.
Bruno Haible [Mon, 12 Jun 2023 14:48:03 +0000 (16:48 +0200)]
vasnwprintf-posix: Work around a musl libc bug.
* m4/vasnprintf.m4 (gl_PREREQ_VASNWPRINTF): Test also whether swprintf
in the C locale is free of encoding errors, and set
NEED_WPRINTF_DIRECTIVE_C if not.
* doc/posix-functions/swprintf.texi: Clarify the list of platforms for
the %c problem.
Bruno Haible [Mon, 12 Jun 2023 12:00:42 +0000 (14:00 +0200)]
warnings: Save memory and CPU time when inhibiting all warnings.
* m4/warnings.m4 (gl_WARN_ADD): Improve comments.
(gl_CC_INHIBIT_WARNINGS): Add also '-fno-analyzer' to
GL_CFLAG_INHIBIT_WARNINGS.
(gl_CXX_INHIBIT_WARNINGS): Add also '-fno-analyzer' to
GL_CXXFLAG_INHIBIT_WARNINGS.
* m4/javacomp.m4 (gt_JAVACOMP): Use option '-Xlint:-options' by default
and omit it only when it does not work.
* lib/javacomp.c (compile_using_javac): Add nowarn_option parameter.
(is_envjavac_usable): Add nowarn_option_out parameter. Use option
'-Xlint:-options' by default and omit it only when it does not work.
(is_javac_usable): Likewise.
(compile_java_class): Store the nowarn_option returned from
is_envjavac_usable and use it when invoking compile_using_envjavac.
Store the nowarn_option returned from is_javac_usable and use it when
invoking compile_using_javac.
Bruno Haible [Sun, 11 Jun 2023 01:13:29 +0000 (03:13 +0200)]
javacomp-script, javacomp: Add support for javac versions > 11.
Reported by Adrian Bunk <bunk-gnu@fs.tum.de> in
<https://savannah.gnu.org/bugs/?63385>.
* m4/javacomp.m4 (gt_JAVACOMP): When the java version is > 11, use that
version as target_version, not 11. When the java version is > 17, don't
warn. Remove goodcode, failcode variables. Don't bail out if the
source-version argument or the target-version argument is in the range
12..99. Use a heuristic that works with javac versions 11..20 at least.
Update comments.
* lib/javacomp.h (compile_java_class): State that source-version and
target-version may be larger than 11.
* lib/javacomp.c (default_target_version): Accommodate versions up to
99.
(SOURCE_VERSION_BOUND): Increase to 94.
(source_version_index): Accept versions up to 99.
(get_goodcode_snippet, get_failcode_snippet): Remove functions.
(TARGET_VERSION_BOUND): Increase to 94.
(target_version_index): Accept versions up to 99.
(corresponding_classfile_version): Remove function.
(execute_and_read_line): New function, based on lib/javaversion.c.
(get_compiler_version): New function.
(is_envjavac_usable): Add parameters source_option_out,
target_option_out. Use a heuristic that works with javac versions 11..20
at least. Call cleanup_temp_dir.
(is_javac_usable): Likewise.
(compile_java_class): Update.
Bruno Haible [Sun, 11 Jun 2023 01:13:24 +0000 (03:13 +0200)]
javacomp-script, javacomp: Remove support for javac versions < 1.6.
* m4/javacomp.m4 (gt_JAVACOMP): State that the minimum source_version
and the minimum target_version are 1.6. Map smaller values to 1.6.
Complain if the java version is < 1.6. Use 1.6 as default, instead of
1.1. Don't bother trying the -target option alone.
* lib/javacomp.h (compile_java_class): State that the minimum
source_version and the minimum target_version are 1.6.
* lib/javacomp.c (default_target_version): Complain if the java version
is < 1.6. Use 1.6 as default, instead of 1.1.
(SOURCE_VERSION_BOUND, source_version_index, get_goodcode_snippet,
get_failcode_snippet): Adjust to the new minimum source_version = 1.6.
(TARGET_VERSION_BOUND, target_version_index,
corresponding_classfile_version): Adjust to the new minimum
target_version = 1.6.
(get_source_version_for_javac): Remove function.
(is_envjavac_usable): Remove source_version_for_javac parameter. Don't
bother trying the -target option alone.
(is_javac_usable): Likewise.
(compile_java_class): Map source_version < 1.6 to 1.6. Map
target_version < 1.6 to 1.6. Use source_version instead of calling
get_source_version_for_javac.
Jim Meyering [Fri, 9 Jun 2023 17:15:30 +0000 (10:15 -0700)]
maint.mk: sc_prohibit_xalloc_without_use: also match alloc_die
* top/maint.mk (sc_prohibit_xalloc_without_use):
Adjust in-comment command's regexp so it also finds alloc_die,
whose declaration has a prefix of "_Noreturn" .
Also delete some now-obsolete commentary.
(_xa1): Regenerate the regexp using that command.
Reported by Pádraig Brady in
<https://lists.gnu.org/r/bug-gnulib/2023-06/msg00062.html>.
Paul Eggert [Fri, 9 Jun 2023 18:13:19 +0000 (11:13 -0700)]
xalloc-die: omit /*extern*/
* lib/xalloc.h (xalloc_die): Omit leading "/*extern*/".
It complicates syntax checking; see:
https://lists.gnu.org/r/bug-gnulib/2023-06/msg00062.html
Plus, it’s inconsistent style: the other function declarations in
xalloc.h don’t use ‘extern’. (I’m not a fan of using ‘extern’ when
it’s just noise, as is the case here.)
Bruno Haible [Fri, 9 Jun 2023 14:08:18 +0000 (16:08 +0200)]
javacomp-script: Remove support for 'jikes'.
* build-aux/javacomp.sh.in: Don't test HAVE_JIKES.
* m4/javacomp.m4 (gt_JAVACOMP): Don't set HAVE_JIKES. Don't set
CONF_JAVAC to 'jikes'. Update comment.
(gt_JAVACOMP_DISABLED): Don't set HAVE_JIKES.
Bruno Haible [Fri, 9 Jun 2023 13:29:01 +0000 (15:29 +0200)]
javacomp-script: Remove support for 'gcj'.
* build-aux/javacomp.sh.in: Don't test HAVE_GCJ_C.
* m4/javacomp.m4 (gt_JAVACOMP): Don't set HAVE_GCJ_C. Don't test whether
$JAVAC is gcj. Don't set CONF_JAVAC to 'gcj -C'. Update comment.
(gt_JAVACOMP_DISABLED): Don't set HAVE_GCJ_C.
Bruno Haible [Fri, 9 Jun 2023 13:14:52 +0000 (15:14 +0200)]
javaexec-script: Remove support for 'gij'.
* build-aux/javaexec.sh.in: Don't test HAVE_GIJ.
* m4/javaexec.m4 (gt_JAVAEXEC): Don't set HAVE_GIJ. Don't set CONF_JAVA
to 'gij'.
* m4/javacomp.m4: Update comment.
Bruno Haible [Fri, 9 Jun 2023 12:56:49 +0000 (14:56 +0200)]
javaexec-script: Remove support for 'jview'.
* build-aux/javaexec.sh.in: Don't test HAVE_JVIEW.
* m4/javaexec.m4 (gt_JAVAEXEC): Don't set HAVE_JVIEW. Don't set
CONF_JAVA to 'jview'.
(gt_JAVAEXEC_DISABLED): Don't set HAVE_JVIEW.
* m4/javacomp.m4: Update comment.
Paul Eggert [Thu, 8 Jun 2023 21:53:51 +0000 (14:53 -0700)]
Spelling fixes
Most of these were reported by Josh Soref <jsoref@gmail.com> in:
https://lists.gnu.org/r/bug-gnulib/2023-06/msg00057.html
except that some are omitted because the original is OK (e.g.,
"obsolescent"), and some are omitted because they are upstream
files and I've fixed them upstream or have filed bug reports,
and I made a few nearby corrections to grammar.
Paul Eggert [Tue, 6 Jun 2023 05:04:37 +0000 (22:04 -0700)]
copy-file-range: support building for older kernels
* m4/copy-file-range.m4 (gl_FUNC_COPY_FILE_RANGE):
Remove static check, to support the dubious practice of
building for platforms that predate the build platform.
On working kernels this adds an extra syscall the first time
that copy_file_range is used. Problem reported for Gentoo by
Sam James <https://bugs.gnu.org/63850>.
Paul Eggert [Mon, 5 Jun 2023 20:16:22 +0000 (13:16 -0700)]
manywarnings: more nuance about optimization
* doc/manywarnings.texi (manywarnings): Suggest compiling with the
optimization flags commonly used, as opposed to -O2 and -O0
specificially. -ggdb shouldn’t affect warnings so don’t mention it.
Bruno Haible [Mon, 5 Jun 2023 09:15:37 +0000 (11:15 +0200)]
Fix bugs on mingw when module dirfd is in use (regression 2023-04-26).
* lib/getcwd.c: When GNULIB_defined_DIR, revert to the system's
definitions of opendir, closedir, readdir, rewinddir.
* lib/mountlist.c: When GNULIB_defined_DIR, revert to the system's
definitions of opendir, closedir, readdir.
* lib/scandir.c: Likewise.
* lib/glob.c: Fix comment. When GNULIB_defined_DIR, don't undefine
opendir, closedir.
Bruno Haible [Sun, 4 Jun 2023 22:16:40 +0000 (00:16 +0200)]
manywarnings: Overhaul documentation.
* doc/manywarnings.texi: In the example, put all unwanted warning
options into 'nw', and use a second gl_MANYWARN_COMPLEMENT invocation to
sort out how these options need to get added to WARN_FLAGS.
Describe the first-time use in more detail: Recommend a new GCC.
Recommend to test builds with -O2 and with -O0. Suggest to sort the
warning by warning option. Add reference to the GCC pragma's
documentation.
Bruno Haible [Sun, 4 Jun 2023 17:27:48 +0000 (19:27 +0200)]
error: Fix support for library namespacing (regression 2023-05-27).
* lib/error.in.h (error): If error is defined as a macro, define a
static inline function _gl_inline_error that invokes it, and let the
new error macro invoke that function.
(error_at_line): If error_at_line is defined as a macro, define a static
inline function _gl_inline_error_at_line that invokes it, and let the
new error_at_line macro invoke that function.
Paul Eggert [Sat, 3 Jun 2023 05:30:52 +0000 (22:30 -0700)]
error: do not evaluate status twice
Do this in a different way, so that the status is evaluated
once even when not optimizing and when using GCC.
* lib/error.in.h (__gl_error_call1) [__GNUC__]: New macro.
(__gl_error_call) [__GNUC__]: Use it.
Bruno Haible [Fri, 2 Jun 2023 21:41:47 +0000 (23:41 +0200)]
warnings: Add ability to inhibit all warnings.
* m4/warnings.m4 (gl_CC_INHIBIT_WARNINGS, gl_CXX_INHIBIT_WARNINGS): New
macros, based on gl_CC_ALLOW_WARNINGS and gl_CXX_ALLOW_WARNINGS in
m4/gnulib-common.m4.
Paul Eggert [Fri, 2 Jun 2023 21:02:53 +0000 (14:02 -0700)]
propername-lite: new module
propername_lite acts like propername_utf8 but needs less
infrastructure, e.g., it does not worry about memory allocation.
* MODULES.html.sh (func_all_modules): Mention it.
* lib/propername.h (proper_name_lite): New decl.
* lib/propername-lite.c, modules/propername-lite: New files.
* pygnulib/GLEmiter.py (GLEmiter.po_Makevars):
Treat proper_name_lite like proper_name_utf8.
* lib/javacomp.c: Include verify.h.
(is_envjavac_gcj43_usable, is_envjavac_oldgcj_14_13_usable,
is_envjavac_nongcj_usable, compile_java_class): Assert that the
xasprintf results are non-NULL. This is possible since all involved
format strings are valid and don't use %ls, and all argument strings
are small compared to INT_MAX.
* modules/javacomp (Depends-on): Add verify.
Paul Eggert [Tue, 30 May 2023 21:38:41 +0000 (14:38 -0700)]
error: don’t call ‘exit’
Let the underlying functions call ‘exit’, instead of having the
Gnulib replacement macros do it. Use ‘unreachable’ to tell the
compiler that those functions exit when the status is nonzero.
This saves a function call.
* lib/error.in.h: Include stddef.h, not stdlib.h.
(__gl_error_call): Rely on the function to exit, using
‘unreachable’ to tell the compiler that the function does not return.
* modules/error (Depends-on): Add stddef.
Paul Eggert [Tue, 30 May 2023 19:49:20 +0000 (12:49 -0700)]
error: don’t evaluate status arg twice
This avoids potential issues if the first argument has a side effect.
* lib/error.in.h (__gl_error_call): New macro, which evaluates its
status arg only once, by using a statement expression if GNU C -
the only platform we need to worry about pacifying - and by simply
calling ‘error’ otherwise.
(error, error_at_line): Use it.
Jim Meyering [Sun, 28 May 2023 16:41:08 +0000 (09:41 -0700)]
file-has-acl: avoid warning from bleeding-edge GCC
* lib/file-has-acl.c: Include attribute.h.
(have_xattr): Declare with ATTRIBUTE_PURE,
to avoid new warning from GCC14-to-be.
* modules/file-has-acl (Depends-on): Add attribute.
Spotted while building coreutils with this:
gcc version 14.0.0 20230526 (experimental)
Bruno Haible [Sat, 27 May 2023 20:39:59 +0000 (22:39 +0200)]
error: Support the compiler's control flow analysis better.
* lib/error.in.h: Remove @PRAGMA_SYSTEM_HEADER@. Include <stdlib.h>.
(error): Define as a macro that explicitly invokes exit().
(error_at_line): Likewise.
* lib/error.c (_GL_NO_INLINE_ERROR): Define before including error.h.
* modules/error-h (configure.ac): Don't invoke gl_CONDITIONAL_HEADER.
(Makefile.am): Generate error.h always. Don't substitute
PRAGMA_SYSTEM_HEADER.
* m4/error_h.m4 (gl_ERROR_H): Set COMPILE_ERROR_C instead of
GL_GENERATE_ERROR_H.
* modules/error (configure.ac, Depends-on): Test COMPILE_ERROR_C instead
of GL_GENERATE_ERROR_H.
* lib/copy-file.c: Revert the last change.
Bruno Haible [Fri, 26 May 2023 22:18:57 +0000 (00:18 +0200)]
flexmember: Make it easier to use.
* lib/flexmember.h (FLEXNSIZEOF): New macro.
* lib/hamt.c (alloc_bucket, alloc_subtrie): Fix FLEXSIZEOF invocation.
Use FLEXNSIZEOF instead of FLEXSIZEOF.
* lib/ssfmalloc.h (init_small_block_page_pool): Use FLEXNSIZEOF instead
of FLEXSIZEOF.
Paul Eggert [Wed, 24 May 2023 17:10:18 +0000 (10:10 -0700)]
manywarnings: speed up nomfi test
* m4/manywarnings.m4 (gl_MANYWARN_ALL_GCC): Simplify and speed up
on current platforms, by seeing first whether
-Wno-missing-field-initializers is needed (it isn’t), so that
later we don’t need to determine whether it’s supported.
Paul Eggert [Wed, 24 May 2023 16:23:01 +0000 (09:23 -0700)]
Simplify -Wno-missing-field-initializers checking
* m4/gnulib-common.m4 (gl_CC_GNULIB_WARNINGS): Don’t worry about
-Wmissing-field-initializers, as this is no longer needed now that
gl_MANYWARN_ALL_GCC is fixed.
Paul Eggert [Wed, 24 May 2023 16:20:48 +0000 (09:20 -0700)]
manywarnings: port better to GCC 11.2 and earlier
Problem reported by Bruno Haible in:
https://lists.gnu.org/r/bug-diffutils/2023-05/msg00015.html
* m4/manywarnings.m4 (gl_MANYWARN_ALL_GCC):
Also test for GCC bug 82283
<https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82283>.
Paul Eggert [Tue, 23 May 2023 19:56:40 +0000 (12:56 -0700)]
nstrftime: wmemmove → __wmemmove in glibc part
https://sourceware.org/pipermail/libc-alpha/2023-May/148435.html
* lib/nstrftime.c (__strftime_internal) [COMPILE_WIDE]:
Use __wmemmove, not wmemmove, to keep in better sync with draft glibc.
Bruno Haible [Mon, 22 May 2023 12:32:42 +0000 (14:32 +0200)]
git-merge-changelog: Code style changes.
* lib/git-merge-changelog.c: Don't make side effects to variables
inside parenthesized expressions. Write (size_t)(-1), for consistency
with gl_list.h.
(compute_mapping): Rename variable in2 to jrev.
Paul Eggert [Mon, 22 May 2023 01:25:45 +0000 (18:25 -0700)]
strtol: match 'configure' to 'make check'
Inferred from report by Tomasz Kłoczko <https://bugs.gnu.org/63632>.
* m4/strtol.m4 (gl_FUNC_STRTOL):
* m4/strtoll.m4 (gl_FUNC_STRTOLL):
Also test "0b", since the test cases check it.
Paul Eggert [Sun, 21 May 2023 20:25:25 +0000 (13:25 -0700)]
git-merge-changelog: prefer idx_t
* lib/git-merge-changelog.c: Include idx.h.
(struct entry, entry_create, entry_hashcode)
(struct changelog_file, read_changelog_file)
(entries_mapping_get, entries_mapping_reverse_get)
(compute_mapping, struct edit, struct differences)
(compute_differences, find_paragraph_end)
(try_split_merged_entry, struct conflict, conflict_write, main):
Prefer idx_t to ptrdiff_t and size_t when the value is a
nonnegative index or size. Change a few for-loops so that
the index never goes negative.
* modules/git-merge-changelog (Depends-on): Add idx.