Bruno Haible [Mon, 6 Feb 2023 03:15:15 +0000 (04:15 +0100)]
c-nullptr: Fix conflict with libstdc++ in GCC >= 11.
Reported by Bjarni Ingi Gislason <bjarniig@simnet.is> in
<https://lists.gnu.org/archive/html/bug-gnulib/2023-02/msg00030.html>.
* m4/c-nullptr.m4 (gl_C_NULLPTR): Don't define nullptr if it is already
defined. In C++ mode, ignore the result of the configure test and don't
define it when we know that the C++ compiler already supports it.
Paul Eggert [Sun, 5 Feb 2023 21:20:54 +0000 (13:20 -0800)]
sh-quote: backport fix from diffutils
* lib/sh-quote.c (init_sh_quoting_options):
Use C89 through C17 style for parameterless static function.
This avoided a warning when compiling diffutils.
This patch is backported from a circa-2009 diffutils patch
and lets us remove diffutils/gl/lib/sh-quote.c.diff; see:
https://git.savannah.gnu.org/cgit/diffutils.git/commit/?id=8c3d25a63a2c5912170ef6e13f748f3904e6b5cf
Bruno Haible [Sun, 5 Feb 2023 16:20:50 +0000 (17:20 +0100)]
Update build-aux/po/Makefile.in.in.
Reported by Reuben Thomas <rrt@sc3d.org> in
<https://lists.gnu.org/archive/html/bug-gnulib/2023-02/msg00020.html>.
* build-aux/po/Makefile.in.in: Sync from GNU gettext 0.21.1.
Fixes:
- In the .po -> .gmo rules, consider the newest changes to the POT file.
- Emit a warning when creating a tarball without POT file.
Paul Eggert [Sat, 4 Feb 2023 18:07:11 +0000 (10:07 -0800)]
fts: pacify GCC 13 -Wuse-after-free
Problem reported by Peter Frazier in:
https://lists.gnu.org/r/bug-gnulib/2023-02/msg00000.html
* lib/fts.c: Include stdint.h.
(fts_build): Do not access freed pointer directly; instead,
save its bit-pattern into a uintptr_t, and use that to compare.
(ADJUST): Likewise, but more trickily since this hack
puns pointer types and relies on undefined behavior.
* modules/fts (Depends-on): Add stdint.
Bruno Haible [Sat, 4 Feb 2023 13:31:08 +0000 (14:31 +0100)]
assert-h, verify: Fix conflict with standard C++ header files on macOS.
* lib/verify.h (_Static_assert): Don't redefine with clang ≥ 3.8.0
in C++ mode.
* tests/test-assert-h-c++.cc: Also check against conflict with the
standard C++ header files.
* tests/test-assert-h-c++2.cc: Likewise.
Bruno Haible [Mon, 30 Jan 2023 11:30:21 +0000 (12:30 +0100)]
at-internal: Add support for z/OS.
Reported and draft patch by Igor Todorovski <itodorov@ca.ibm.com>.
* lib/openat-proc.c [z/OS]: Include <termios.h>.
(openat_proc_name): For z/OS, use an approach similar to kLIBC, with
3 lines of z/OS specific code by Igor Todorovski <itodorov@ca.ibm.com>.
Bruno Haible [Sat, 28 Jan 2023 18:39:23 +0000 (19:39 +0100)]
unistdio/*printf: Fix negative width handling for %U, %lU, %llU.
* lib/vasnprintf.c (VASNPRINTF): In the code for %U, %lU, %llU, test for
the FLAG_LEFT bit in the flags variable.
* tests/unistdio/test-u8-printf1.h (test_xfunction): Add tests for width
given as argument for the directives %U, %lU, %llU, %s, %a, %f, %e, %g.
* tests/unistdio/test-u16-printf1.h (test_xfunction): Likewise.
* tests/unistdio/test-u32-printf1.h (test_xfunction): Likewise.
* tests/unistdio/test-ulc-printf1.h (test_xfunction): Likewise.
Bruno Haible [Sat, 28 Jan 2023 18:12:42 +0000 (19:12 +0100)]
vasnprintf-posix: Fix possible bug with negative width handling for %lc.
* lib/vasnprintf.c (VASNPRINTF): In the code for %lc in vasnprintf, test
for the FLAG_LEFT bit in the flags variable.
* tests/test-vasnprintf-posix.c (test_function): Add tests for width
given as argument for the directives %c, %lc.
* tests/test-vasprintf-posix.c (test_function): Likewise.
* tests/test-snprintf-posix.h (test_function): Likewise.
* tests/test-sprintf-posix.h (test_function): Likewise.
* tests/test-snprintf-posix.c: Include <wchar.h>, for wint_t.
* tests/test-sprintf-posix.c: Likewise.
* tests/test-vsnprintf-posix.c: Likewise.
* tests/test-vsprintf-posix.c: Likewise.
Bruno Haible [Sat, 28 Jan 2023 18:05:24 +0000 (19:05 +0100)]
vasnprintf-posix: Fix possible bug with negative width handling for %lc.
* lib/vasnprintf.c (VASNPRINTF): In the code for %lc in vasnprintf, test
for the FLAG_LEFT bit in the flags variable.
* tests/test-vasnprintf-posix.c (test_function): Add tests for width
given as argument for the directives %c, %lc.
* tests/test-vasprintf-posix.c (test_function): Likewise.
* tests/test-snprintf-posix.h (test_function): Likewise.
* tests/test-sprintf-posix.h (test_function): Likewise.
* tests/test-snprintf-posix.c: Include <wchar.h>, for wint_t.
* tests/test-sprintf-posix.c: Likewise.
Bruno Haible [Sat, 28 Jan 2023 17:17:17 +0000 (18:17 +0100)]
vasnprintf-posix: Fix negative width handling for %ls directive.
Reported by clang via Po Lu <luangruo@yahoo.com>.
* lib/vasnprintf.c (VASNPRINTF): In the code for %ls in vasnprintf and
for %s in vasnwprintf, test for the FLAG_LEFT bit in the flags variable.
* tests/test-vasnprintf-posix.c (test_function): Add tests for width
given as argument for the directives %s, %ls.
* tests/test-vasprintf-posix.c (test_function): Likewise.
* tests/test-snprintf-posix.h (test_function): Likewise.
* tests/test-sprintf-posix.h (test_function): Likewise.
Bruno Haible [Sat, 28 Jan 2023 10:52:40 +0000 (11:52 +0100)]
Avoid clang warnings regarding [[__nodiscard__]].
* m4/gnulib-common.m4 (gl_COMMON_BODY): For clang, in C++ mode, ignore
the __has_c_attribute value and define _GL_ATTRIBUTE_NODISCARD to
__attribute__ ((__warn_unused_result__)), not [[__nodiscard__]].
* m4/gnulib-common.m4 (gl_COMMON_BODY): For clang versions ≥ 6, < 10,
in C++ mode, ignore the __has_c_attribute value and define
_GL_ATTRIBUTE_MAYBE_UNUSED to __attribute__ ((__unused__)), not
[[__maybe_unused__]].
Bruno Haible [Tue, 24 Jan 2023 12:44:07 +0000 (13:44 +0100)]
alignasof, stdalign: Fix a compilation error on FreeBSD 12.0.
* m4/stdalign.m4 (gl_ALIGNASOF): In C mode, prefer __builtin_offsetof
over offsetof when possible, since __builtin_offsetof works also when
<stddef.h> has not been fully included yet.
Bruno Haible [Sun, 22 Jan 2023 15:34:24 +0000 (16:34 +0100)]
doc: Update list of target platforms.
* doc/gnulib-intro.texi (Supported Platforms): Mark musl libc, Android,
and MSVC as "occasionally tested". Update the version numbers of some
OSes. Combine paragraphs regarding mingw and MSVC.
(Formerly Supported Platforms): Mark AIX 5, 6 as "formerly supported".
Bruno Haible [Sun, 22 Jan 2023 13:21:48 +0000 (14:21 +0100)]
Resolve conflicts for functions introduced in Android API level 26.
* m4/getdomainname.m4 (gl_FUNC_GETDOMAINNAME): Test for getdomainname
using gl_CHECK_FUNCS_ANDROID instead of AC_CHECK_FUNCS. Conditionally
set REPLACE_GETSUBOPT.
Bruno Haible [Sun, 22 Jan 2023 11:41:14 +0000 (12:41 +0100)]
Resolve conflicts for functions introduced in Android API level 21.
* m4/fts.m4 (gl_FUNC_FTS_CORE): Use rpl_* symbols also when the system
will have fts_open in a future version.
* m4/iswblank.m4 (gl_FUNC_ISWBLANK): Conditionally set REPLACE_ISWBLANK.
* m4/mbtowc.m4 (gl_FUNC_MBTOWC): Conditionally set REPLACE_MBTOWC.
* m4/vdprintf.m4 (gl_REPLACE_VDPRINTF): Conditionally set
REPLACE_VDPRINTF.
* m4/wcsnrtombs.m4 (gl_FUNC_WCSNRTOMBS): Conditionally set
REPLACE_WCSNRTOMBS.
Bruno Haible [Sun, 22 Jan 2023 00:19:13 +0000 (01:19 +0100)]
Prepare for resolving conflicts regarding future Android API levels.
* m4/gnulib-common.m4 (gl_CHECK_FUNCS_ANDROID): Don't check for the
function declaration on platforms other than Android. Set a variable
gl_cv_onwards_func_<func>.
Paul Eggert [Sun, 22 Jan 2023 06:49:04 +0000 (00:49 -0600)]
sigsegv, vma-iter: port to Solaris 10
On this platform, <sys/types.h> does not define off_t if neither
_LP64 nor _FILE_OFFSET_BITS is defined, which can happen if we
#undef _FILE_OFFSET_BITS. This became a problem with the new way
of doing stdbool, since config.h now includes <stdbool.h>, and
Solaris 10 <stdbool.h> includes <sys/feature_tests.h> which
arranges for _FILE_OFFSET_BITS to always be defined (if only to 32),
which <sys/types.h> assumes.
* lib/stackvma.c, lib/vma-iter.c (_FILE_OFFSET_BITS) [__sun && !_LP64]:
Define to 32 instead of leaving undefined.
Bruno Haible [Sat, 21 Jan 2023 20:13:20 +0000 (21:13 +0100)]
login_tty: Ensure declaration in <utmp.h>.
* tests/test-utmp-c++.cc: New file.
* modules/utmp-c++-tests: New file.
* tests/test-utmp.c: New file.
* modules/utmp-tests: New file.
* lib/login_tty.c: Include <utmp.h>.
* m4/login_tty.m4: New file.
(gl_FUNC_LOGIN_TTY): Moved here from m4/pty.m4. Set HAVE_LOGIN_TTY.
* m4/pty.m4 (gl_FUNC_LOGIN_TTY): Moved to m4/login_tty.m4.
* modules/login_tty (Files): Add m4/login_tty.m4.
(Depends-on): Add utmp. Remove pty. Update condition.
(configure.ac): Update condition. Invoke gl_UTMP_MODULE_INDICATOR
instead of gl_PTY_MODULE_INDICATOR.
(Include): List <utmp.h>.
* doc/glibc-functions/login_tty.texi: Mark the include file diversity as
fixed.
* tests/test-login_tty.c: Include <utmp.h>. Don't declare login_tty
here.
* lib/utmp.in.h: New file.
* m4/utmp_h.m4: New file.
* modules/utmp: New file.
* doc/glibc-headers/utmp.texi: New file.
* doc/gnulib.texi (Glibc Header File Substitutes): Include it.
Bruno Haible [Sat, 21 Jan 2023 08:43:50 +0000 (09:43 +0100)]
getprogname: Move declaration from "getprogname.h" to <stdlib.h>.
* lib/stdlib.in.h (getprogname): New declaration.
* lib/getprogname.h: Add deprecation warning.
(getprogname): Remove declaration.
* lib/getprogname.c: Include <stdlib.h> instead of getprogname.h.
* m4/stdlib_h.m4 (gl_STDLIB_H): Test whether getprogname is declared.
(gl_STDLIB_H_REQUIRE_DEFAULTS): Initialize GNULIB_GETPROGNAME.
(gl_STDLIB_H_DEFAULTS): Initialize HAVE_GETPROGNAME.
* m4/getprogname.m4 (gl_PREREQ_GETPROGNAME): New macro, extracted from
gl_FUNC_GETPROGNAME. Set HAVE_GETPROGNAME.
(gl_FUNC_GETPROGNAME): Remove code that was moved to
gl_PREREQ_GETPROGNAME.
* modules/stdlib (Makefile.am): Substitute GNULIB_GETPROGNAME and
HAVE_GETPROGNAME.
* modules/getprogname (Depends-on): Add stdlib.
(configure.ac): Define a module indicator. Invoke gl_PREREQ_GETPROGNAME.
(Makefile.am): Don't compile getprogname.c if not needed.
(Include): List <stdlib.h> instead of getprogname.h.
* tests/test-getprogname.c: Include <stdlib.h> instead of getprogname.h.
* NEWS: Mention the change.
* lib/argmatch.c: Don't include getprogname.h.
* lib/c-stack.c: Likewise.
* lib/error.c: Likewise.
* lib/git-merge-changelog.c: Likewise.
Paul Eggert [Fri, 20 Jan 2023 03:39:03 +0000 (19:39 -0800)]
snippet/_Noreturn: work around Clang _Noreturn bug
This is a bigger-hammer workaround for the clang _Noreturn issue
fix for dfa.c on 2023-01-01. Unfortunately, it causes 270
-Wreturn-type and -Wsometimes-uninitialized warnings when building
bleeding-edge GNU Emacs from Git on Fedora 37 with plain
‘./configure && make’. So the workaround is enabled only if you
compile with -D_GL_WORK_AROUND_LLVM_BUG_59792.
* lib/_Noreturn.h (_Noreturn):
* m4/gnulib-common.m4 (gl_COMMON_BODY):
#define _Noreturn to be empty if it is Clang 15 or earlier,
and if _GL_WORK_AROUND_LLVM_BUG_59792 is defined.