]> git.ipfire.org Git - thirdparty/gnulib.git/log
thirdparty/gnulib.git
3 months agoFix [[unsequenced]] and [[reproducible]] confusion
Paul Eggert [Sat, 20 Dec 2025 18:37:30 +0000 (10:37 -0800)] 
Fix [[unsequenced]] and [[reproducible]] confusion

* m4/gnulib-common.m4 (_GL_ATTRIBUTE_CONST, _GL_ATTRIBUTE_PURE):
Default to empty, not to _GL_ATTRIBUTE_UNSEQUENCED and
_GL_ATTRIBUTE_REPRODUCIBLE respectively, because unfortunately
__attribute__ ((const)) does not imply [[unsequenced]] and
__attribute__ ((pure)) does not imply [[reproducible]].

3 months agotimespec: tweak timespec_sign
Paul Eggert [Sat, 20 Dec 2025 18:33:47 +0000 (10:33 -0800)] 
timespec: tweak timespec_sign

* lib/timespec.h (timespec_cmp, timespec_sign):
These functions are const, not merely pure.
(timespec_sign): Tweak for efficiency.

3 months agodoc: Use UTF-8 in Texinfo sources.
Collin Funk [Fri, 19 Dec 2025 03:29:49 +0000 (19:29 -0800)] 
doc: Use UTF-8 in Texinfo sources.

* doc/gnulib-intro.texi (Portability and Application Code): Use ï
instead of @"{@dotless{i}}.

3 months agosignbit-no-c++: New module.
Bruno Haible [Fri, 19 Dec 2025 23:02:55 +0000 (00:02 +0100)] 
signbit-no-c++: New module.

* modules/signbit-no-c++: New file, based on modules/signbit.
* modules/signbit: Essentially an alias of signbit-no-c++ now.
* modules/signbit-no-c++-tests: Renamed from modules/signbit-tests.
* lib/math.in.h (signbit): Test also GNULIB_SIGNBIT_NO_CXX.
* m4/math_h.m4 (gl_MATH_H_REQUIRE_DEFAULTS): Initialize
GNULIB_SIGNBIT_NO_CXX.
* modules/math-h (Makefile.am): Substitute GNULIB_SIGNBIT_NO_CXX.
* modules/copysign (Depends-on): Add signbit-no-c++. Remove signbit.
* modules/copysignf (Depends-on): Likewise.
* modules/copysignl (Depends-on): Likewise.
* modules/fabsl (Depends-on): Likewise.
* modules/fmod (Depends-on): Likewise.
* modules/fmodl (Depends-on): Likewise.
* modules/mixin/printf-posix (Depends-on): Likewise.
* modules/remainder (Depends-on): Likewise.
* modules/remainderf (Depends-on): Likewise.
* modules/remainderl (Depends-on): Likewise.
* modules/signed-nan (Depends-on): Likewise.
* modules/totalorder (Depends-on): Likewise.
* modules/totalorderf (Depends-on): Likewise.
* modules/totalorderl (Depends-on): Likewise.
* modules/totalordermag (Depends-on): Likewise.
* modules/totalordermagf (Depends-on): Likewise.
* modules/totalordermagl (Depends-on): Likewise.
* modules/c-strtod-tests (Depends-on): Likewise.
* modules/c-strtof-tests (Depends-on): Likewise.
* modules/c-strtold-tests (Depends-on): Likewise.
* modules/cbrt-ieee-tests (Depends-on): Likewise.
* modules/cbrtf-ieee-tests (Depends-on): Likewise.
* modules/cbrtl-ieee-tests (Depends-on): Likewise.
* modules/ceil-ieee-tests (Depends-on): Likewise.
* modules/ceilf-ieee-tests (Depends-on): Likewise.
* modules/ceill-ieee-tests (Depends-on): Likewise.
* modules/exp-ieee-tests (Depends-on): Likewise.
* modules/exp2-ieee-tests (Depends-on): Likewise.
* modules/exp2f-ieee-tests (Depends-on): Likewise.
* modules/exp2l-ieee-tests (Depends-on): Likewise.
* modules/expf-ieee-tests (Depends-on): Likewise.
* modules/expl-ieee-tests (Depends-on): Likewise.
* modules/expm1-ieee-tests (Depends-on): Likewise.
* modules/expm1f-ieee-tests (Depends-on): Likewise.
* modules/expm1l-ieee-tests (Depends-on): Likewise.
* modules/fabs-ieee-tests (Depends-on): Likewise.
* modules/fabs-tests (Depends-on): Likewise.
* modules/fabsf-ieee-tests (Depends-on): Likewise.
* modules/fabsf-tests (Depends-on): Likewise.
* modules/fabsl-ieee-tests (Depends-on): Likewise.
* modules/fabsl-tests (Depends-on): Likewise.
* modules/floor-ieee-tests (Depends-on): Likewise.
* modules/floorf-ieee-tests (Depends-on): Likewise.
* modules/floorl-ieee-tests (Depends-on): Likewise.
* modules/fmod-ieee-tests (Depends-on): Likewise.
* modules/fmodf-ieee-tests (Depends-on): Likewise.
* modules/fmodl-ieee-tests (Depends-on): Likewise.
* modules/frexp-ieee-tests (Depends-on): Likewise.
* modules/frexp-nolibm-tests (Depends-on): Likewise.
* modules/frexp-tests (Depends-on): Likewise.
* modules/frexpf-ieee-tests (Depends-on): Likewise.
* modules/frexpf-tests (Depends-on): Likewise.
* modules/frexpl-ieee-tests (Depends-on): Likewise.
* modules/frexpl-nolibm-tests (Depends-on): Likewise.
* modules/frexpl-tests (Depends-on): Likewise.
* modules/hypot-ieee-tests (Depends-on): Likewise.
* modules/hypotf-ieee-tests (Depends-on): Likewise.
* modules/hypotl-ieee-tests (Depends-on): Likewise.
* modules/ldexp-ieee-tests (Depends-on): Likewise.
* modules/ldexp-tests (Depends-on): Likewise.
* modules/ldexpf-ieee-tests (Depends-on): Likewise.
* modules/ldexpf-tests (Depends-on): Likewise.
* modules/ldexpl-ieee-tests (Depends-on): Likewise.
* modules/ldexpl-tests (Depends-on): Likewise.
* modules/log-ieee-tests (Depends-on): Likewise.
* modules/log10-ieee-tests (Depends-on): Likewise.
* modules/log10f-ieee-tests (Depends-on): Likewise.
* modules/log10l-ieee-tests (Depends-on): Likewise.
* modules/log1p-ieee-tests (Depends-on): Likewise.
* modules/log1pf-ieee-tests (Depends-on): Likewise.
* modules/log1pl-ieee-tests (Depends-on): Likewise.
* modules/log2-ieee-tests (Depends-on): Likewise.
* modules/log2f-ieee-tests (Depends-on): Likewise.
* modules/log2l-ieee-tests (Depends-on): Likewise.
* modules/logb-ieee-tests (Depends-on): Likewise.
* modules/logbf-ieee-tests (Depends-on): Likewise.
* modules/logbl-ieee-tests (Depends-on): Likewise.
* modules/logf-ieee-tests (Depends-on): Likewise.
* modules/logl-ieee-tests (Depends-on): Likewise.
* modules/modf-ieee-tests (Depends-on): Likewise.
* modules/modff-ieee-tests (Depends-on): Likewise.
* modules/modfl-ieee-tests (Depends-on): Likewise.
* modules/remainder-ieee-tests (Depends-on): Likewise.
* modules/remainderf-ieee-tests (Depends-on): Likewise.
* modules/remainderl-ieee-tests (Depends-on): Likewise.
* modules/rint-ieee-tests (Depends-on): Likewise.
* modules/rintf-ieee-tests (Depends-on): Likewise.
* modules/rintl-ieee-tests (Depends-on): Likewise.
* modules/round-ieee-tests (Depends-on): Likewise.
* modules/roundf-ieee-tests (Depends-on): Likewise.
* modules/roundl-ieee-tests (Depends-on): Likewise.
* modules/sqrt-ieee-tests (Depends-on): Likewise.
* modules/sqrtf-ieee-tests (Depends-on): Likewise.
* modules/sqrtl-ieee-tests (Depends-on): Likewise.
* modules/strtod-tests (Depends-on): Likewise.
* modules/strtof-tests (Depends-on): Likewise.
* modules/strtold-tests (Depends-on): Likewise.
* modules/trunc-ieee-tests (Depends-on): Likewise.
* modules/truncf-ieee-tests (Depends-on): Likewise.
* modules/truncl-ieee-tests (Depends-on): Likewise.
* modules/xstrtod-tests (Depends-on): Likewise.
* modules/xstrtold-tests (Depends-on): Likewise.

3 months agoisnan-no-c++: New module.
Bruno Haible [Fri, 19 Dec 2025 22:43:17 +0000 (23:43 +0100)] 
isnan-no-c++: New module.

* modules/isnan-no-c++: New file, based on modules/isnan.
* modules/isnan: Essentially an alias of isnan-no-c++ now.
* modules/isnan-no-c++-tests: Renamed from modules/isnan-tests.
* lib/math.in.h (isnan): Test also GNULIB_ISNAN_NO_CXX.
* m4/math_h.m4 (gl_MATH_H_REQUIRE_DEFAULTS): Initialize
GNULIB_ISNAN_NO_CXX.
* modules/math-h (Makefile.am): Substitute GNULIB_ISNAN_NO_CXX.

3 months agoisinf-no-c++: New module.
Bruno Haible [Fri, 19 Dec 2025 22:35:28 +0000 (23:35 +0100)] 
isinf-no-c++: New module.

Reported by G. Branden Robinson <g.branden.robinson@gmail.com> in
<https://lists.gnu.org/archive/html/bug-gnulib/2025-12/msg00150.html>.

* modules/isinf-no-c++: New file, based on modules/isinf.
* modules/isinf: Essentially an alias of isinf-no-c++ now.
* modules/isinf-no-c++-tests: Renamed from modules/isinf-tests.
* lib/math.in.h (isinf): Test also GNULIB_ISINF_NO_CXX.
* m4/math_h.m4 (gl_MATH_H_REQUIRE_DEFAULTS): Initialize
GNULIB_ISINF_NO_CXX.
* modules/math-h (Makefile.am): Substitute GNULIB_ISINF_NO_CXX.
* modules/fmod (Depends-on): Add isinf-no-c++. Remove isinf.
* modules/fmodl (Depends-on): Likewise.
* modules/hypot (Depends-on): Likewise.
* modules/hypotl (Depends-on): Likewise.
* modules/modf (Depends-on): Likewise.
* modules/modfl (Depends-on): Likewise.
* modules/remainder (Depends-on): Likewise.
* modules/remainderf (Depends-on): Likewise.
* modules/remainderl (Depends-on): Likewise.
* modules/strtod (Depends-on): Likewise.
* modules/strtof (Depends-on): Likewise.
* modules/strtold (Depends-on): Likewise.

3 months agoisfinite-no-c++: New module.
Bruno Haible [Fri, 19 Dec 2025 22:23:30 +0000 (23:23 +0100)] 
isfinite-no-c++: New module.

Reported by G. Branden Robinson <g.branden.robinson@gmail.com> in
<https://lists.gnu.org/archive/html/bug-gnulib/2025-12/msg00150.html>.

* modules/isfinite-no-c++: New file, based on modules/isfinite.
* modules/isfinite: Essentially an alias of isfinite-no-c++ now.
* modules/isfinite-no-c++-tests: Renamed from modules/isfinite-tests.
* lib/math.in.h (isfinite): Test also GNULIB_ISFINITE_NO_CXX.
* m4/math_h.m4 (gl_MATH_H_REQUIRE_DEFAULTS): Initialize
GNULIB_ISFINITE_NO_CXX.
* modules/math-h (Makefile.am): Substitute GNULIB_ISFINITE_NO_CXX.
* modules/cbrt (Depends-on): Add isfinite-no-c++. Remove isfinite.
* modules/cbrtf (Depends-on): Likewise.
* modules/cbrtl (Depends-on): Likewise.
* modules/fma (Depends-on): Likewise.
* modules/fmaf (Depends-on): Likewise.
* modules/fmal (Depends-on): Likewise.
* modules/fmod (Depends-on): Likewise.
* modules/fmodl (Depends-on): Likewise.
* modules/hypot (Depends-on): Likewise.
* modules/hypotl (Depends-on): Likewise.
* modules/ilogb (Depends-on): Likewise.
* modules/ilogbf (Depends-on): Likewise.
* modules/ilogbl (Depends-on): Likewise.
* modules/logb (Depends-on): Likewise.
* modules/logbf (Depends-on): Likewise.
* modules/logbl (Depends-on): Likewise.
* modules/modf (Depends-on): Likewise.
* modules/modfl (Depends-on): Likewise.
* modules/remainder (Depends-on): Likewise.
* modules/remainderf (Depends-on): Likewise.
* modules/remainderl (Depends-on): Likewise.

3 months agoautoupdate
Karl Berry [Fri, 19 Dec 2025 17:26:33 +0000 (09:26 -0800)] 
autoupdate

3 months agoautoupdate
Karl Berry [Fri, 19 Dec 2025 17:25:38 +0000 (09:25 -0800)] 
autoupdate

3 months agoautoupdate
Karl Berry [Thu, 18 Dec 2025 16:01:06 +0000 (08:01 -0800)] 
autoupdate

3 months ago.gitattributes: Mark some files as binary.
Bruno Haible [Thu, 18 Dec 2025 22:23:52 +0000 (23:23 +0100)] 
.gitattributes: Mark some files as binary.

* .gitattributes: Mark doc/Copyright/* as binary files.

3 months agonanosleep: Avoid a redefinition on mingw.
Collin Funk [Sun, 14 Dec 2025 22:01:53 +0000 (14:01 -0800)] 
nanosleep: Avoid a redefinition on mingw.

Reported by Tim Ruehsen in
<https://savannah.gnu.org/bugs/?67704>.

* m4/nanosleep.m4 (gl_FUNC_NANOSLEEP): Check for a static inline
nanosleep on mingw.

3 months agoutimecmp: Fix undefined behaviour (regression 2025-12-09).
Bruno Haible [Mon, 15 Dec 2025 12:52:46 +0000 (13:52 +0100)] 
utimecmp: Fix undefined behaviour (regression 2025-12-09).

Reported by Coverity.

* lib/utimecmp.c (utimecmpat): Make sure 'tmp_dst_res' has a sufficient
lifetime.

3 months agodoc: Refer to a WG14 document.
Bruno Haible [Mon, 15 Dec 2025 12:40:52 +0000 (13:40 +0100)] 
doc: Refer to a WG14 document.

* doc/glibc-functions/pthread_getname_np.texi: Reference a portability
survey from WG14.
* doc/glibc-functions/pthread_setname_np.texi: Likewise.

3 months agodoc: Add a link to a FreeBSD bug report.
Collin Funk [Mon, 15 Dec 2025 02:12:02 +0000 (18:12 -0800)] 
doc: Add a link to a FreeBSD bug report.

* doc/posix-functions/realloc.texi: Add a link to the bug report for
FreeBSD 15 not setting errno for large size values.

3 months agoextern-inline: #define AAA_INLINE pre-<config.h>
Paul Eggert [Fri, 12 Dec 2025 23:21:47 +0000 (15:21 -0800)] 
extern-inline: #define AAA_INLINE pre-<config.h>

In *.c files using the "#define AAA_INLINE _GL_EXTERN_INLINE" idiom,
put the idiom before including <config.h>.  This is suggested in
the Gnulib documentation, and avoids problems when an application
like Emacs rashly defines a config.h file that includes a *.h file
that uses the documented "#ifndef AAA_INLINE / # define AAA_INLINE
_GL_INLINE / #endif" idiom.

3 months agorelocatable-prog{,-wrapper}: Fix autoconf error (regr. 2025-12-09).
Bruno Haible [Thu, 11 Dec 2025 09:13:15 +0000 (10:13 +0100)] 
relocatable-prog{,-wrapper}: Fix autoconf error (regr. 2025-12-09).

* modules/relocatable-prog (Files): Add m4/libdl.m4.
* modules/relocatable-prog-wrapper (Files): Likewise.

3 months agolocalename-unsafe: Improve Windows LCID lookup cache.
Bruno Haible [Wed, 10 Dec 2025 23:55:13 +0000 (00:55 +0100)] 
localename-unsafe: Improve Windows LCID lookup cache.

* lib/localename-unsafe.c (get_lcid): Use an LRU cache with 6 elements
instead of a cache with only one element.

3 months agolocalename-unsafe: Improve Windows LCID lookup cache.
Bruno Haible [Wed, 10 Dec 2025 21:23:45 +0000 (22:23 +0100)] 
localename-unsafe: Improve Windows LCID lookup cache.

Reported by Bryan Green <dbryan.green@gmail.com> in
<https://savannah.gnu.org/bugs/?67781>.

* lib/localename-unsafe.c (get_lcid): Cache also the failed LCID
lookups.

3 months agolocalename-unsafe: Improve Windows LCID lookup cache.
Bruno Haible [Wed, 10 Dec 2025 21:22:39 +0000 (22:22 +0100)] 
localename-unsafe: Improve Windows LCID lookup cache.

* lib/localename-unsafe.c (get_lcid): Don't overrun the last_locale array.

3 months agocanonicalize-lgpl: Fix UMR introduced in recent change.
Bruno Haible [Wed, 10 Dec 2025 18:06:32 +0000 (19:06 +0100)] 
canonicalize-lgpl: Fix UMR introduced in recent change.

* lib/canonicalize-lgpl.c (realpath_stk): Move declaration of 'failed'
before first 'goto'.

3 months agocanonicalize: Reduce scope of local variables.
Bruno Haible [Wed, 10 Dec 2025 18:06:14 +0000 (19:06 +0100)] 
canonicalize: Reduce scope of local variables.

* lib/canonicalize.c (canonicalize_filename_mode_stk): Reduce scope of
'logical', 'num_links', 'end_in_extra_buffer'.

3 months agocanonicalize: fix UMR introduced in recent change
Pádraig Brady [Wed, 10 Dec 2025 17:20:19 +0000 (17:20 +0000)] 
canonicalize: fix UMR introduced in recent change

This caused coreutils tests/readlink/can-e.sh to fail
as that tests reading the current dir after it's removed.

* lib/canonicalize.c (canonicalize_filename_mode_stk): Move variable
initialization before goto which may skip them.

3 months agohuman: fix UMR introduced in recent change
Pádraig Brady [Wed, 10 Dec 2025 16:52:53 +0000 (16:52 +0000)] 
human: fix UMR introduced in recent change

GCC 15 identifies this with:

lib/human.c: In function 'human_readable':
lib/human.c:295:32: warning: 'exponent_max' may be used uninitialized
  295 |             while (base <= amt && exponent < exponent_max);
      |                    ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~

This issue also caused coreutils tests/dd/dd-stats.sh to fail

* lib/human.c (human_readable): Move initialization before
the gotos which might skip it.

3 months agosigsegv: Reduce scope of local variables.
Bruno Haible [Wed, 10 Dec 2025 09:21:50 +0000 (10:21 +0100)] 
sigsegv: Reduce scope of local variables.

* lib/stackvma.c (vma_iterate): M.

4 months agolib: Reduce scope of local variables.
Bruno Haible [Tue, 9 Dec 2025 23:23:48 +0000 (00:23 +0100)] 
lib: Reduce scope of local variables.

M = Move variable declaration to its initialization.
R = Reduce scope.
S = Split scope, create separate variables from one variable.
B = Insert braces, creating a block scope.
O = Change order of initializations.

* lib/accept4.c (accept4): M.
* lib/acl-internal.c (acl_ace_nontrivial): R.
* lib/acosl.c (acosl): MS.
* lib/af_alg.c (afalg_stream): B.
* lib/alignalloc.h (alignalloc): R.
* lib/alloca.c (find_stack_direction): M.
(alloca): M.
* lib/amemxfrm.c (amemxfrm): MR.
* lib/arcfour.c (arcfour_stream): MB.
(arcfour_setkey): MB.
* lib/arctwo.c (arctwo_encrypt): M.
(arctwo_decrypt): M.
(arctwo_setkey_ekb): M.
* lib/areadlink-with-size.c (areadlink_with_size): MR.
* lib/areadlinkat-with-size.c (areadlinkat_with_size): MR.
* lib/argmatch.c (argmatch): MO.
(main): RBO.
* lib/argp-fmtstream.c (__argp_make_fmtstream): M.
(__argp_fmtstream_update): M.
(__argp_fmtstream_ensure): R.
(__argp_fmtstream_printf): R.
* lib/argp-fmtstream.h (__argp_fmtstream_set_lmargin): M.
(__argp_fmtstream_set_rmargin): M.
(__argp_fmtstream_set_wmargin): M.
* lib/argp-help.c (validate_uparams): M.
(fill_in_uparams): MR.
(make_hol): MRSO.
(hol_entry_short_iterate): R.
(hol_entry_long_iterate): R.
(hol_entry_first_long): Rename 'num' to 'nopts'.
(canon_doc_option): M.
(hol_append): MR.
(argp_hol): O.
(hol_entry_help): RSBO.
(hol_help): RB.
(usage_argful_short_opt): R.
(usage_long_opt): R.
(hol_usage): SB.
(argp_args_levels): R.
(argp_args_usage): MRB.
(argp_doc): RBO.
(_help): MR.
(__argp_error): R.
* lib/argp-parse.c (group_parse): M.
(parser_init): MRB.
(parser_finalize): MS.
(parser_parse_next): R.
(__argp_parse): MR.
(__argp_input): M.
* lib/argz.c (argz_add_sep): M.
(argz_create_sep): M.
(argz_create): R.
(argz_replace): RB.
* lib/asinl.c (asinl): MRS.
* lib/asnprintf.c (asnprintf): M.
* lib/asnwprintf.c (asnwprintf): M.
* lib/asprintf.c (asprintf): M.
* lib/astrxfrm.c (astrxfrm): MR.
* lib/aszprintf.c (aszprintf): M.
* lib/at-func.c (AT_FUNC_NAME): MR.
* lib/at-func2.c (at_func2): MRS.
* lib/atanl.c (atanl): MRS.
* lib/backupfile.c (numbered_backup): R.
* lib/base32.c (decode_8): R.
(base32_decode_ctx): R.
* lib/base64.c (decode_4): R.
(base64_decode_ctx): R.
* lib/basename-lgpl.c (last_component): R.
(base_len): RO.
* lib/bitset.c (bitset_copy_): R.
* lib/bitset/list.c (lbitset_prune): MR.
(lbitset_weed): MR.
(lbitset_list): SB.
* lib/bitset/table.c (tbitset_list): SB.
* lib/boot-time-aux.h (get_windows_boot_time_fallback): R.
* lib/btoc32.c (btoc32): R.
* lib/c-asprintf.c (c_asprintf): M.
* lib/c-aszprintf.c (c_aszprintf): M.
* lib/c-snprintf.c (c_snprintf): M.
* lib/c-snzprintf.c (c_snzprintf): M.
* lib/c-strcasecmp.c (c_strcasecmp): R.
* lib/c-strcasestr.c (c_strcasestr): MRSB.
* lib/c-strncasecmp.c (c_strncasecmp): R.
* lib/c-strtod.c (C_STRTOD): R.
* lib/c-vsnzprintf.c (c_vsnzprintf): M.
* lib/c-xasprintf.c (c_xasprintf): M.
* lib/c32tob.c (c32tob): R.
* lib/canon-host.c (canon_host_r): MR.
* lib/canonicalize.c (canonicalize_filename_mode_stk): R.
* lib/canonicalize-lgpl.c (realpath_stk): R.
* lib/cbrt.c (cbrt): M.
* lib/cbrtf.c (cbrtf): M.
* lib/cbrtl.c (cbrtl): MR.
* lib/chdir-long.c (chdir_long): M.
(main): MR.
* lib/classpath.c (new_classpath): MB.
* lib/clean-temp.c (create_temp_dir): M.
(unregister_temp_file): M.
(unregister_temp_subdir): M.
(cleanup_temp_file): M.
(cleanup_temp_subdir): M.
(cleanup_temp_dir_contents): MSB.
(open_temp): R.
(fopen_temp): R.
(close_temp): RB.
(fclose_variant_temp): RB.
* lib/clean-temp-simple.c (cleanup_action): MSB.
(cleanup_temporary_file): M.
* lib/copy-file.c (copy_file_internal): MRB.
* lib/cosl.c (cosl): MR.
* lib/crc-generate-table.c (make_crc_table): M.
* lib/crc-x86_64-pclmul.c (crc32_update_no_xor_pclmul): MRSB.
* lib/crc.c (crc32_update_no_xor_slice_by_8): S.
(crc32_update_no_xor_slice_by_n): M.
(crc32_update_no_xor): MR.
* lib/csharpcomp.c (compile_csharp_using_mono): MRB.
(compile_csharp_using_dotnet): MRSB.
(compile_csharp_using_sscli): MRB.
* lib/csharpexec.c (execute_csharp_using_mono): MO.
(execute_csharp_using_dotnet): MO.
(execute_csharp_using_sscli): MO.
(execute_csharp_program): R.
* lib/cygpath.c (execute_and_read_line): M.
* lib/des.c (gl_des_is_weak_key): M.
(gl_3des_ecb_crypt): MO.
* lib/dfa.c (closure): B.
(dfamust): MRB.
* lib/di-set.c (map_device): M.
(di_set_insert): M.
(di_set_lookup): M.
* lib/dirname-lgpl.c (dir_len): R.
* lib/dprintf.c (dprintf): M.
* lib/dup.c (dup_nothrow): R.
* lib/dup2.c (ms_windows_dup2): M.
(klibc_dup2dirfd): M.
(klibc_dup2): MR.
(rpl_dup2): M.
* lib/dup3.c (dup3): M.
* lib/duplocale.c (duplocale): MRSB.
* lib/dzprintf.c (dzprintf): M.
* lib/euidaccess.c (euidaccess): MR.
(main): M.
* lib/exclude.c (add_exclude): R.
* lib/execl.c (execl): SB.
* lib/execle.c (execle): SB.
* lib/execlp.c (execlp): SB.
* lib/execute.c (execute): R.
* lib/fchdir.c (ensure_dirs_slot): M.
(get_name): M.
(_gl_register_fd): R.
* lib/fclose.c (rpl_fclose): MR.
* lib/fcntl.c (dupfd): RO.
(fcntl): R.
(klibc_dupdirfd): M.
(klibc_fcntl): MRSB.
* lib/fdopen.c (rpl_fdopen): M.
* lib/file-has-acl.c (get_aclinfo): R.
(fdfile_has_aclinfo): MR.
* lib/file-remote.c (main): M.
* lib/file-set.c (record_file): M.
(seen_file): R.
* lib/findprog.c (find_in_path): MR.
* lib/findprog-in.c (find_in_given_path): MR.
* lib/flock.c (do_lock): MR.
(do_unlock): M.
(flock): MR.
* lib/fma.c (decode): M.
* lib/fopen.c (rpl_fopen): MR.
* lib/forkpty.c (forkpty): M.
* lib/fprintf.c (fprintf): M.
* lib/freadseek.c (freadseek): MR.
* lib/freopen.c (rpl_freopen): M.
* lib/freopen-safer.c (freopen_safer): M.
* lib/frexp.c (FUNC): MR.
* lib/fseterr.c (fseterr): M.
* lib/fstatat.c (rpl_fstatat): M.
* lib/fstrcmp.c (fstrcmp_free_resources): M.
(fstrcmp_bounded): MR.
* lib/fsusage.c (statvfs_works): R.
* lib/fsync.c (fsync): M.
* lib/ftello.c (ftello): M.
* lib/ftruncate.c (SetFileSize): M.
* lib/fts.c (fts_open): MR.
(fts_load): M.
(fts_close): MR.
(filesystem_type): MRO.
(fts_read): MB.
(fts_children): M.
(fts_build): MR.
(fts_cross_check): RO.
(fd_ring_print): RO.
(fts_stat): RO.
(fts_sort): R.
(fts_alloc): M.
(fts_lfree): R.
(fts_palloc): M.
(fts_padjust): MS.
(fts_maxarglen): M.
(fts_safe_changedir): MR.
* lib/fts-cycle.c (enter_dir): MRO.
(leave_dir): M.
* lib/fzprintf.c (fzprintf): M.
* lib/gc-gnulib.c (gc_cipher_open): MR.
(gc_cipher_setkey): MSB.
(gc_cipher_setiv): M.
(gc_cipher_encrypt_inline): M.
(gc_cipher_decrypt_inline): M.
(gc_hash_open): MR.
(gc_hash_clone): M.
* lib/gc-libgcrypt.c (gc_init): Remove local variable 'err'.
(gc_cipher_open): MR.
(gc_cipher_setkey): M.
(gc_cipher_setiv): M.
(gc_hash_open): MR.
(gc_hash_clone): M.
(gc_md4): MR.
(gc_md5): MR.
(gc_sha1): MR.
(gc_sha256): MR.
(gc_sha512): MR.
(gc_sm3): MR.
(gc_hmac_md5): MR. Remove local variable 'err'.
(gc_hmac_sha1): MR. Remove local variable 'err'.
(gc_hmac_sha256): MR. Remove local variable 'err'.
(gc_hmac_sha512): MR. Remove local variable 'err'.
* lib/gc-pbkdf2.c (gc_pbkdf2_prf): MR.
* lib/gen-uni-tables.c (fill_attributes): M.
(debug_output_predicate): M.
(output_predicate_test): M.
(output_predicate): MR.
(output_category): MR.
(output_combclass): MR.
(output_bidi_category): MR.
(output_decimal_digit_test): M.
(output_decimal_digit): MR.
(output_digit_test): M.
(output_digit): MR.
(output_numeric_test): M.
(output_numeric): MR.
(fill_mirror): MR.
(get_mirror_value): M.
(output_mirror): MR.
(fill_properties): MR.
(fill_property30): MR.
(output_indic_conjunct_break_test): M.
(output_indic_conjunct_break): MR.
(fill_arabicshaping): MR.
(output_joining_type_test): M.
(output_joining_type): MR.
(output_joining_group_test): M.
(output_joining_group): MR.
(fill_scripts): MR.
(output_scripts): MR.
(output_scripts_byname): M.
(fill_blocks): MR.
(output_blocks): M.
(output_ident_category): MR.
(output_charclass): MR.
(output_charmap): MR.
(output_tables): M.
(fill_width): MR.
(output_nonspacing_property): MR.
(output_width_property_test): M.
(debug_output_lbrk_tables): M.
(fill_org_lbp): MR.
(debug_output_org_lbrk_tables): M.
(output_lbpea): M.
(output_lbrk_tables): R.
(output_lbrk_rules_as_tables): M.
(debug_output_wbrk_tables): M.
(fill_org_wbp): MR.
(debug_output_org_wbrk_tables): M.
(output_wbp): M.
(output_wbrk_tables): M.
(output_gbp_test): MR.
(output_gbp_table): MR.
(fill_org_gbp): MR.
(get_decomposition): MR.
(output_decomposition): M.
(output_decomposition_tables): R.
(fill_composition_exclusions): MR.
(debug_output_composition_tables): M.
(output_composition_tables): MSB.
(output_simple_mapping_test): M.
(output_simple_mapping): MR.
(fill_casing_rules): MR.
(fill_casefolding_rules): MR.
(output_casing_rules): M.
(output_version): MR.
* lib/get-rusage-as.c (get_rusage_as_via_setrlimit): R.
(get_rusage_as): M.
* lib/get-rusage-data.c (get_rusage_data_via_setrlimit): R.
(get_rusage_data): M.
* lib/get_ppid_of.c (get_ppid_of): M.
* lib/get_progname_of.c (get_progname_of): MR.
* lib/getaddrinfo.c (use_win32_p): M.
(getaddrinfo): MR.
(freeaddrinfo): M.
* lib/getcwd.c (__getcwd_generic): MRSBO.
* lib/getcwd-lgpl.c (rpl_getcwd): MS.
* lib/getdelim.c (getdelim): MR.
* lib/getdomainname.c (getdomainname): M.
* lib/getentropy.c (getentropy): R.
* lib/getgroups.c (rpl_getgroups): MR.
* lib/gethostname.c (rpl_gethostname): M.
* lib/getloadavg.c (getloadavg): MRB.
* lib/getlocalename_l-unsafe.c (newlocale): MR.
(duplocale): MR.
(freelocale): M.
* lib/getlogin_r.c (getlogin_r): M.
* lib/getndelim2.c (getndelim2): MR.
* lib/getopt.c (exchange): MS.
(process_long_option): MRB.
(_getopt_internal_r): MR.
(_getopt_internal): M.
(main): M.
* lib/getopt1.c (main): M.
* lib/getpass.c (getpass): MRB.
* lib/getprogname.c (getprogname): M.
* lib/getrusage.c (getrusage): M.
* lib/getsockopt.c (rpl_getsockopt): M.
* lib/getsubopt.c (getsubopt): M.
* lib/gettext.h (dcpgettext_expr): M.
(dcnpgettext_expr): M.
* lib/gettimeofday.c (gettimeofday): R.
* lib/getugroups.c (getugroups): MR.
* lib/getumask.c (getumask): R.
* lib/gl_anyavltree_list2.h (rebalance): MR.
(gl_tree_remove_node_from_tree): MR.
(gl_tree_nx_add_before): R.
(gl_tree_nx_add_after): R.
* lib/gl_anyhash2.h (hash_resize): M.
* lib/gl_anylinked_list2.h (gl_linked_get_at): R.
(gl_linked_nx_set_at): R.
(gl_linked_search_from_to): R.
(gl_linked_indexof_from_to): MR.
(gl_linked_nx_add_at): M.
(gl_linked_remove_node): M.
(gl_linked_remove_at): MR.
(gl_linked_iterator_from_to): M.
(gl_linked_sortedlist_search_from_to): R.
(gl_linked_sortedlist_indexof_from_to): R.
* lib/gl_anyrbtree_list2.h (rebalance_after_add): MR.
(gl_tree_remove_node_from_tree): M.
* lib/gl_anytree_list2.h (gl_tree_iterator): MB.
(gl_tree_sortedlist_indexof_from_to): R.
* lib/gl_anytree_omap.h (gl_tree_nx_getput): M.
(gl_tree_iterator): MB.
* lib/gl_anytree_oset.h (gl_tree_nx_add): M.
(gl_tree_update): M.
(gl_tree_iterator): MB.
* lib/gl_anytreehash_list1.h (add_to_bucket): M.
* lib/gl_array_list.c (grow): M.
(gl_array_nx_add_first): M.
(gl_array_nx_add_before): M.
(gl_array_nx_add_after): M.
(gl_array_nx_add_at): M.
(gl_array_remove_node): M.
(gl_array_remove_at): M.
* lib/gl_array_map.c (grow): M.
(gl_array_nx_getput): M.
(gl_array_remove_at): M.
* lib/gl_array_omap.c (grow): M.
(gl_array_nx_add_at): M.
(gl_array_remove_at): M.
* lib/gl_array_oset.c (grow): M.
(gl_array_nx_add_at): M.
(gl_array_remove_at): M.
* lib/gl_array_set.c (grow): M.
* lib/gl_avltree_ordered.h (rebalance): M.
(gl_tree_add_node_before): R.
(gl_tree_add_node_after): R.
(gl_tree_remove_node_no_free): M.
* lib/gl_carray_list.c (gl_carray_node_value): M.
(gl_carray_node_nx_set_value): M.
(gl_carray_get_at): M.
(gl_carray_nx_set_at): M.
(gl_carray_indexof_from_to): M.
(grow): M.
(gl_carray_nx_add_last): M.
(gl_carray_nx_add_at): M.
(gl_carray_remove_at): M.
(gl_carray_iterator_from_to): R.
(gl_carray_sortedlist_indexof_from_to): M.
(gl_carray_sortedlist_nx_add): M.
* lib/gl_rbtree_ordered.h (rebalance_after_add): M.
(gl_tree_remove_node_no_free): M.
* lib/gl_sublist.c (gl_sublist_sortedlist_search_from_to): M.
(gl_sublist_sortedlist_indexof_from_to): M.
* lib/glob.c (__glob): MR.
* lib/globfree.c (globfree): M.
* lib/glthread/lock.c (glthread_rwlock_init_for_glibc): M.
(glthread_rwlock_init_multithreaded): M.
(glthread_rwlock_rdlock_multithreaded): M.
(glthread_rwlock_wrlock_multithreaded): M.
(glthread_rwlock_destroy_multithreaded): M.
(glthread_rwlock_init_multithreaded): M.
(glthread_rwlock_rdlock_multithreaded): M.
(glthread_rwlock_wrlock_multithreaded): M.
(glthread_rwlock_unlock_multithreaded): M.
(glthread_rwlock_destroy_multithreaded): M.
(glthread_recursive_lock_init_multithreaded): M.
(glthread_recursive_lock_lock_multithreaded): M.
(glthread_recursive_lock_destroy_multithreaded): M.
(glthread_recursive_lock_init_multithreaded): M.
(glthread_recursive_lock_lock_multithreaded): M.
* lib/glthread/thread.c (gl_thread_create): M.
* lib/group-member.c (group_member): M.
(main): M.
* lib/hash.c (hash_get_next): MB.
(check_tuning): M.
(hash_initialize): M.
(hash_clear): M.
(hash_free): MS.
(transfer_entries): M.
(hash_rehash): MR.
(hash_insert_if_absent): MR.
(hash_remove): MR.
(hash_print): M.
* lib/hasmntopt.c (hasmntopt): M.
* lib/hmac.c (hmac_hash): R.
(GL_HMAC_FN): R.
* lib/human.c (group_number): MRO.
(human_readable): MR.
(humblock): M.
* lib/hypot.c (hypot): M.
* lib/hypotl.c (hypotl): M.
* lib/i-ring.c (i_ring_pop): M.
* lib/iconv_open.c (rpl_iconv_open): R.
* lib/idcache.c (getuidbyname): M.
(getgidbyname): M.
* lib/inet_ntop.c (inet_ntop4): M.
(inet_ntop6): R.
* lib/inet_pton.c (inet_pton4): MRBO.
(inet_pton6): MRBO.
* lib/ino-map.c (ino_map_insert): M.
* lib/integer_length.c (integer_length): M.
* lib/ioctl.c (rpl_ioctl): M.
(ioctl): M.
* lib/is_l-impl.h (FUNC): M.
* lib/isatty.c (IsCygwinConsoleHandle): R.
* lib/isnan.c (FUNC): MR.
* lib/javacomp.c (compile_using_envjavac): MRB.
(compile_using_javac): MB.
(execute_and_read_line): M.
(write_temp_file): M.
(get_classfile_version): MR.
(is_envjavac_usable): MR.
(is_javac_present): M.
(is_javac_usable): MR.
(compile_java_class): MR.
* lib/javaexec.c (execute_java_class): MRBO.
* lib/javaversion.c (execute_and_read_line): M.
(javaexec_version): R.
* lib/kwset.c (treefails): M.
(kwsprep): MRSB.
(bmexec_trans): MRSO.
(acexec_trans): MRS.
* lib/lchown.c (rpl_lchown): R.
* lib/linebuffer.c (readlinebuffer_delim): RO.
* lib/link.c (link): MRBO.
(rpl_link): M.
* lib/linkat.c (link_immediate): R.
(link_follow): M.
(linkat_follow): M.
* lib/localcharset.c (locale_charset): MR.
* lib/localeinfo.c (is_using_utf8): R. Rename 'mbs' to 'state'.
(init_localeinfo): Rename 's' to 'state'.
* lib/localename.c (gl_locale_name): MSB.
* lib/localename-environ.c (gl_locale_name_environ): MSB.
* lib/localename-unsafe.c (gl_locale_name_canonicalize): MSB.
(gl_locale_name_from_win32_LANGID): M.
(gl_locale_name_from_win32_LCID): M.
(enum_locales_fn): R.
(gl_locale_name_unsafe): MSB.
* lib/log2.c (log2): M.
* lib/log2f.c (log2f): M.
* lib/log2l.c (log2l): M.
* lib/login_tty.c (login_tty): M.
* lib/logl.c (logl): MR.
* lib/long-options.c (parse_long_options): MR.
(parse_gnu_standard_options_only): M.
* lib/mbfile.h (mbfile_multi_getc): MR.
* lib/mbmemcasecoll.c (apply_c32tolower): M.
(mbmemcasecoll): MR.
* lib/mbrtoc32.c (mbrtoc32): R.
* lib/mbrtowc.c (rpl_mbrtowc): MRS.
* lib/mbrtowc-impl.h: MRB.
* lib/mbscasestr.c (knuth_morris_pratt_multibyte): MR.
(mbscasestr): R.
* lib/mbscspn.c (mbscspn): MR.
* lib/mbsnrtowcs-impl.h (FUNC): M.
* lib/mbspbrk.c (mbspbrk): MR.
* lib/mbsrtowcs-impl.h (FUNC): M.
* lib/mbsspn.c (mbsspn): MR.
* lib/mbsstr.c (knuth_morris_pratt_multibyte): MR.
(mbsstr): MR.
* lib/mbswidth.c (mbsnwidth): M.
* lib/mbtowc-impl.h (mbtowc): MR.
* lib/mbtowc-lock.h (mbtowc_with_lock): M.
* lib/mcel.h: MR in comments.
* lib/md2.c (md2_finish_ctx): M.
(md2_process_bytes): M.
(md2_update_chksum): M.
(md2_compress): M.
* lib/md2-stream.c (md2_stream): MR.
* lib/md4.c (md4_finish_ctx): M.
(md4_process_block): MR.
* lib/md4-stream.c (md4_stream): MR.
* lib/md5-stream.c (md5_stream): MR.
* lib/mem-hash-map.c (compute_hashval): M.
(lookup): M.
* lib/memchr.c (__memchr): MRB.
* lib/memchr2.c (memchr2): MRB.
* lib/memrchr.c (__memrchr): MRB.
* lib/mgetgroups.c (mgetgroups): MRS.
* lib/mkancesdirs.c (mkancesdirs): M.
* lib/mkdir.c (rpl_mkdir): MR.
* lib/mkdir-p.c (make_dir_parents): R.
* lib/modechange.c (mode_compile): R.
* lib/mountlist.c (fstype_to_string): M.
(dev_from_mount_options): MR.
(read_file_system_list): MR.
* lib/mpsort.c (mpsort_into_tmp): M.
(mpsort_with_tmp): M.
* lib/msvc-inval.h (TRY_MSVC_INVAL): M.
* lib/mtx.c (mtx_init): MSB.
* lib/nanosleep.c (nanosleep): M.
* lib/nl_langinfo.c (ctype_codeset): MR.
(nl_langinfo_with_lock): M.
* lib/nonblocking.c (get_nonblocking_flag): M.
(set_nonblocking_flag): M.
* lib/nproc.c (num_processors_via_affinity_mask): M.
(cgroup2_mount): MR.
(get_cgroup2_cpu_quota): M.
(parse_omp_threads): Remove variable 'ret'.
(num_processors): M.
* lib/obstack.c (_obstack_newchunk): M.
(_obstack_allocated_p): M.
(__obstack_free): M.
* lib/obstack_printf.c (OBSTACK_PRINTF): M.
(OBSTACK_VPRINTF): M.
* lib/omp-init.c (parse_omp_threads): Remove variable 'ret'.
* lib/openat-proc.c (openat_proc_name): R.
* lib/openat2.c (do_openat2): R.
(openat2): MSB.
* lib/opendir.c (opendir): MR.
* lib/openpty.c (openpty): M.
* lib/os2-spawn.c (prepare_spawn): M.
(spawnpvech): R.
* lib/pagealign_alloc.c (pagealign_alloc): MR.
(pagealign_xalloc): M.
(pagealign_free): M.
* lib/parse-duration.c (parse_scaled_value): M.
(parse_year_month_day): M.
(parse_yearmonthday): MR.
(parse_YMWD): SB.
(parse_hour_minute_second): M.
(parse_hourminutesecond): MR.
(parse_HMS): SB.
(parse_time): M.
(parse_period): MR.
(parse_non_iso8601): M.
* lib/passfd.c (sendfd): MRO.
(recvfd): MRO.
* lib/perror.c (perror): M.
* lib/physmem.c (physmem_total): M.
(physmem_claimable): M.
* lib/pipe-filter-gi.c (filter_loop): MRB.
(pipe_filter_gi_create): M.
(pipe_filter_gi_close): M.
* lib/pipe-filter-ii.c (_beginthreadex): M.
(WaitForMultipleObjects): MR.
(pipe_filter_ii_execute): MRB.
* lib/poll.c (IsSocketHandle): R.
(windows_compute_revents): MRB.
(windows_compute_revents_socket): M.
(poll): MRB. Remove variable 'bRet'.
* lib/popen.c (rpl_popen): MB.
* lib/posix_openpt.c (posix_openpt): M.
* lib/posixtm.c (posix_time_parse): R.
(posixtime): R.
* lib/pread.c (pread): M.
* lib/printf.c (printf): M.
* lib/printf-frexp.c (FUNC): R.
* lib/printf-parse.c (PRINTF_PARSE): MR.
* lib/progreloc.c (maybe_executable): R.
(find_executable): MRSB.
(prepare_relocate): M.
* lib/propername.c (mbsstr_trimmed_wordbounded): RSB.
(proper_name_utf8): M.
* lib/pselect.c (pselect): MR.
* lib/pt_chown.c (do_pt_chown): MR.
* lib/pthread-cond.c (pthread_cond_timedwait): R.
* lib/pthread-rwlock.c (pthread_rwlockattr_init): MSB.
(pthread_rwlock_init): MSB.
(pthread_rwlock_rdlock): MSB.
(pthread_rwlock_wrlock): MSB.
(pthread_rwlock_tryrdlock): MB.
(pthread_rwlock_trywrlock): MB.
(pthread_rwlock_timedrdlock): MSB.
(pthread_rwlock_timedwrlock): MSB.
(pthread_rwlock_unlock): MSB.
(pthread_rwlock_destroy): MSB.
(pthread_rwlock_init): MSB.
(pthread_rwlock_timedrdlock): MRB.
(pthread_rwlock_timedwrlock): MRB.
* lib/pthread_mutex_timedlock.c (pthread_mutex_timedlock): MRB.
* lib/pthread_sigmask.c (pthread_sigmask): MR.
* lib/ptsname_r.c (ptsname_r): MR.
* lib/putenv.c (putenv): M.
* lib/pwrite.c (pwrite): M.
* lib/qcopy-acl.c (qcopy_acl): Remove a use of variable 'ret'.
* lib/qset-acl.c (qset_acl): M.
* lib/qsort.c (_quicksort): MR.
* lib/quotearg.c (set_quoting_flags): M.
(quotearg_buffer_restyled): MRSB.
* lib/random.c (__initstate): M.
(__setstate): M.
(__random): R.
* lib/random_r.c (__srandom_r): M.
(__setstate_r): MO.
(__random_r): M.
* lib/rawmemchr.c (rawmemchr): RB.
* lib/read-file.c (fread_file): M.
(read_file): M.
* lib/readdir.c (readdir): MR.
* lib/readline.c (readline): R.
* lib/readtokens.c (readtoken): R.
(readtokens): M.
* lib/regex-quote.c (regex_quote_spec_gnu): MB.
(regex_quote_spec_pcre): MB.
(regex_quote_length): MR.
(regex_quote): MB.
* lib/relocatable.c (set_this_relocation_prefix): M.
(compute_curr_prefix): MR.
(find_shared_library_fullname): MRS.
(relocate): M.
* lib/relocwrapper.c (activate_libdirs): MB.
(main): M.
* lib/rename.c (rpl_rename): MRBO.
* lib/renameatu.c (renameatu): MRB.
* lib/rijndael-alg-fst.c (rijndaelKeySetupEnc): MSB.
(rijndaelKeySetupDec): MRSB.
(rijndaelEncrypt): MSB.
(rijndaelDecrypt): MSB.
* lib/rijndael-api-fst.c (rijndaelMakeKey): MRSB.
(rijndaelCipherInit): MSB.
(rijndaelBlockEncrypt): MRSB.
(rijndaelPadEncrypt): MRSB.
(rijndaelBlockDecrypt): MRSB.
(rijndaelPadDecrypt): MRSB.
* lib/rmdir.c (rpl_rmdir): M.
* lib/rpmatch.c (localized_pattern): MS.
(try): M.
(rpmatch): MSB.
* lib/same.c (same_nameat): R. Remove variable 'flags'.
* lib/savedir.c (streamsavedir): MRB.
* lib/scandir.c (SCANDIR): MR.
* lib/select.c (IsSocketHandle): R.
(windows_poll_handle): MRSB. Remove variable 'bRet'.
(rpl_select): MR. Remove variable 'bRet'.
* lib/set-permissions.c (set_acls_from_mode): R.
(context_acl_from_mode): R.
(context_aclv_from_mode): M.
(set_acls_from_mode): MR.
(context_acl_from_mode): M.
(set_acls): R.
(set_permissions): MS.
* lib/setenv.c (__add_to_environ): M.
(rpl_setenv): M.
* lib/sethostname.c (sethostname): MR.
* lib/setlocale.c (setlocale_unixlike): MR.
(langcmp): R.
(setlocale_improved): MR.
* lib/setlocale_null.c (setlocale_null_r_with_lock): M.
(setlocale_null): M.
* lib/setsockopt.c (rpl_setsockopt): R.
* lib/sh-quote.c (shell_quote_argv): MB.
* lib/sha1.c (sha1_process_block): R.
* lib/sha1-stream.c (sha1_stream): M.
* lib/sha256.c (sha256_process_block): MR.
* lib/sha256-stream.c (shaxxx_stream): M.
* lib/sha3.c (sha3_read_ctx): R.
(sha3_process_block): R.
* lib/sha3-stream.c (sha3_xxx_stream): M.
* lib/sha512-stream.c (shaxxx_stream): M.
* lib/sig2str.c (str2signum): RS.
(sig2str): MR.
* lib/sigaction.c (sigaction_handler): MR.
(sigaction): MRB.
* lib/sigprocmask.c (sigprocmask): M.
* lib/sigsegv.c (sigsegv_handler): MR.
* lib/sincosl.c (kernel_sinl): MRS.
(kernel_cosl): MRS.
* lib/sinl.c (sinl): MR.
* lib/sleep.c (rpl_sleep): M.
* lib/sm3.c (sm3_process_block): MR.
* lib/sm3-stream.c (sm3_stream): MR.
* lib/snprintf.c (snprintf): M.
* lib/snzprintf.c (snzprintf): M.
* lib/socket.c (rpl_socket): M.
* lib/sockets.c (close_fd_maybe_socket): MR.
(ioctl_fd_maybe_socket): MR.
(gl_sockets_startup): M.
(gl_sockets_cleanup): M.
* lib/spawn-pipe.c (create_pipe): MR.
* lib/spawni.c (__spawni): Split variable declaration.
* lib/sprintf.c (sprintf): M.
* lib/sqrtl.c (sqrtl): MR.
* lib/ssfmalloc.h (allocate_block_from_pool): MSB.
* lib/stackvma.c (rof_open): M.
(vma_iterate_proc): RSB.
(vma_iterate_bsd): MB.
(mapped_range_start): M.
(mapped_range_end): M.
(is_unmapped): MR.
(mapped_range_start): M.
(mapped_range_end): M.
(vma_iterate): MR.
* lib/stat-w32.c (_gl_convert_FILETIME_to_timespec): R.
* lib/stdio-consolesafe.c (gl_consolesafe_fprintf): R.
(gl_consolesafe_printf): R.
* lib/stdio-read.c (CALL_WITH_ERRNO_FIX): M.
(scanf): M.
(fscanf): M.
* lib/stdio-write.c (CALL_WITH_SIGPIPE_EMULATION): M.
(printf): M.
(fprintf): M.
* lib/stpncpy.c (__stpncpy): MSB.
* lib/str-kmp.h (knuth_morris_pratt): M.
* lib/str-two-way.h (critical_factorization): MSB.
(two_way_short_needle): MS.
(two_way_long_needle): MRS.
* lib/strcasecmp.c (strcasecmp): R.
* lib/strcasecmp_l.c (strcasecmp_l): MR.
* lib/strcasestr.c (strcasestr): MRSB.
* lib/strchrnul.c (strchrnul): MRB.
* lib/strerror.c (strerror): M.
* lib/strerror_l.c (strerror_l_r): R.
* lib/strerror_r.c (local_snprintf): M.
(strerror_r): M.
* lib/strfmon_l.c (rpl_strfmon_l): MR.
* lib/strftime.c (__strftime_internal): MR.
* lib/striconv.c (mem_cd_iconv): MR.
(str_cd_iconv): MR.
(str_iconv): M.
* lib/striconveh.c (iconveh_open): MR.
(utf8conv_carefully): M.
(mem_cd_iconveh_internal): MR.
(mem_iconveh): M.
(str_iconveh): M.
* lib/striconveha.c (uniconv_register_autodetect): MRSB.
(mem_iconveha_notranslit): MS.
(mem_iconveha): M.
(str_iconveha_notranslit): MS.
(str_iconveha): M.
* lib/string-buffer-printf.c (sb_appendvf): R.
(sb_appendf): R.
* lib/string-buffer-reversed-printf.c (sbr_prependvf): R.
(sbr_prependf): R.
* lib/string-desc.c (sd_new): R.
* lib/stripslash.c (strip_trailing_slashes): M.
* lib/strncasecmp.c (strncasecmp): R.
* lib/strncasecmp_l.c (strncasecmp_l): MR.
* lib/strptime.c (__strptime_internal): RSB.
* lib/strsep.c (strsep): R.
* lib/strsignal.c (strsignal): R.
* lib/strstr.c (strstr): MRSB.
* lib/strtod.c (parse_number): MR.
(STRTOD): MR.
* lib/strtok_r.c (__strtok_r): M.
* lib/strtol.c (strtol): MR.
* lib/struniq.h (struniq): M.
* lib/supersede.c (open_supersede): R.
* lib/system-quote.c (system_quote_argv): MB.
* lib/szprintf.c (szprintf): M.
* lib/tanl.c (kernel_tanl): MRS.
(tanl): MR.
* lib/tempname.c (try_tempname_len): M.
* lib/term-style-control.c (sprintf_integer): MR.
* lib/textstyle.in.h (ostream_printf): MR.
* lib/time.c (time): M.
* lib/times.c (filetime2clock): M.
* lib/timespec-add.c (timespec_add): R.
* lib/timespec-sub.c (timespec_sub): R.
* lib/tmpdir.c (path_search): MR.
* lib/tmpfile.c (tmpfile): M.
* lib/to_l-impl.h (FUNC): M.
* lib/tparm.c (tparm): MRB.
* lib/trigl.c (ieee754_rem_pio2l): MRS.
(kernel_rem_pio2): MRS.
* lib/trim.c (trim2): MR.
* lib/tsearch.c (check_tree): R.
(maybe_split_for_insert): M.
(__tsearch): MR.
(__tfind): M.
(__tdelete): MRB.
* lib/ttyname_r.c (ttyname_r): M.
* lib/uname.c (uname): MR.
* lib/unicase/locale-language.c (uc_locale_language): M.
* lib/unicase/u-casecmp.h (FUNC): MR.
* lib/unicase/u-casecoll.h (FUNC): MR.
* lib/unicase/u-casemap.h (FUNC): MR.
* lib/unicase/u-casexfrm.h (FUNC): MR.
* lib/unicase/u-ct-casefold.h (FUNC): MR.
* lib/unicase/u-ct-totitle.h (FUNC): MR.
* lib/unicase/u-is-cased.h (FUNC): MR.
* lib/unicase/u-is-invariant.h (FUNC): MR.
* lib/unicase/u8-casefold.c (read_file): M.
* lib/unicase/u8-tolower.c (read_file): M.
* lib/unicase/u8-totitle.c (read_file): M.
* lib/unicase/u8-toupper.c (read_file): M.
* lib/unicase/ulc-casecmp.c (ulc_u8_casefold): MR.
* lib/unicase/ulc-casexfrm.c (ulc_casexfrm): MR.
* lib/unicodeio.c (unicode_to_mb): MR.
* lib/uniconv/u-conv-from-enc.h (FUNC): M.
* lib/uniconv/u-conv-to-enc.h (FUNC): MR.
* lib/uniconv/u-strconv-from-enc.h (FUNC): M.
* lib/uniconv/u-strconv-to-enc.h (FUNC): M.
* lib/uniconv/u16-conv-to-enc.c (FUNC): MR.
* lib/uniconv/u8-conv-from-enc.c (u8_conv_from_encoding): R.
* lib/uniconv/u8-conv-to-enc.c (u8_conv_to_encoding): R.
* lib/uniconv/u8-strconv-to-enc.c (u8_strconv_to_encoding): MS.
* lib/unictype/3level.h (CONCAT(TABLE,_add)): M.
(CONCAT(TABLE,_finalize)): MRB.
* lib/unictype/3levelbit.h (CONCAT(TABLE,_add)): M.
(CONCAT(TABLE,_finalize)): MRB.
* lib/unictype/bidi_byname.c (uc_bidi_class_byname): M.
* lib/unictype/categ_and.c (uc_general_category_and): MR.
* lib/unictype/categ_and_not.c (uc_general_category_and_not): MR.
* lib/unictype/categ_byname.c (uc_general_category_byname): M.
* lib/unictype/categ_of.c (uc_general_category): R.
* lib/unictype/categ_or.c (uc_general_category_or): MR.
* lib/unictype/combiningclass_byname.c (uc_combining_class_byname): M.
* lib/unictype/incb_byname.c (uc_indic_conjunct_break_byname): M.
* lib/unictype/joininggroup_byname.c (uc_joining_group_byname): M.
* lib/unictype/joiningtype_byname.c (uc_joining_type_byname): M.
* lib/unictype/pr_byname.c (uc_property_byname): MRB.
* lib/unictype/scripts.c (uc_script_byname): M.
* lib/unigbrk/u-grapheme-prev.h
(ends_with_incb_consonant_extended_linker_extended): M.
(ends_with_emoji_modifier_sequence): M.
(ends_with_ri_count): M.
(FUNC): M.
* lib/unigbrk/uc-is-grapheme-break.c (uc_is_grapheme_break): M.
* lib/unigbrk/ulc-grapheme-breaks.c (ulc_grapheme_breaks): M.
* lib/unilbrk/u16-width-linebreaks.c (u16_width_linebreaks_internal): M.
* lib/unilbrk/u32-width-linebreaks.c (u32_width_linebreaks_internal): M.
* lib/unilbrk/u8-possible-linebreaks.c (read_file): M.
* lib/unilbrk/u8-width-linebreaks.c (u8_width_linebreaks_internal): M.
(read_file): M.
* lib/unilbrk/ulc-possible-linebreaks.c
(ulc_possible_linebreaks_internal): M.
(read_file): M.
* lib/unilbrk/ulc-width-linebreaks.c (ulc_width_linebreaks_internal): M.
(read_file): M.
* lib/uniname/uniname.c (unicode_name_word): MR.
(unicode_character_name): M.
(unicode_name_character): MR.
* lib/uninorm/canonical-decomposition.c (uc_canonical_decomposition): M.
* lib/uninorm/composition.c (uc_composition): M.
* lib/uninorm/decomposition.c (uc_decomposition): M.
* lib/uninorm/u-normalize-internal.h (FUNC): MR.
* lib/uninorm/u-normcmp.h (FUNC): MR.
* lib/uninorm/u-normcoll.h (FUNC): MR.
* lib/uninorm/u-normxfrm.h (FUNC): MR.
* lib/uninorm/uninorm-filter.c (uninorm_filter_write): M.
* lib/unistdio/u-asnprintf.h (ASNPRINTF): M.
* lib/unistdio/u-asprintf.h (ASPRINTF): M.
* lib/unistdio/u-snprintf.h (SNPRINTF): M.
* lib/unistdio/u-sprintf.h (SPRINTF): M.
* lib/unistdio/u-vsnprintf.h (VSNPRINTF): M.
* lib/unistdio/u-vsprintf.h (VSPRINTF): M.
* lib/unistdio/ulc-fprintf.c (ulc_fprintf): M.
* lib/unistdio/ulc-vfprintf.c (ulc_vfprintf): M.
* lib/unistr/u16-chr.c (u16_chr): R.
* lib/unistr/u16-mbsnlen.c (u16_mbsnlen): M.
* lib/unistr/u16-next.c (u16_next): M.
* lib/unistr/u16-strchr.c (u16_strchr): R.
* lib/unistr/u16-strrchr.c (u16_strrchr): R.
* lib/unistr/u16-to-u32.c (FUNC): MR.
* lib/unistr/u16-to-u8.c (FUNC): MR.
* lib/unistr/u32-next.c (u32_next): M.
* lib/unistr/u32-to-u16.c (FUNC): MR.
* lib/unistr/u32-to-u8.c (FUNC): MR.
* lib/unistr/u8-chr.c (u8_chr): M.
* lib/unistr/u8-mbsnlen.c (u8_mbsnlen): M.
* lib/unistr/u8-next.c (u8_next): M.
* lib/unistr/u8-strchr.c (u8_strchr): R.
* lib/unistr/u8-strrchr.c (u8_strrchr): R.
* lib/unistr/u8-to-u16.c (FUNC): MR.
* lib/unistr/u8-to-u32.c (FUNC): MR.
* lib/uniwbrk/u8-wordbreaks.c (read_file): M.
* lib/uniwbrk/ulc-wordbreaks.c (ulc_wordbreaks): M.
(read_file): M.
* lib/uniwidth/u16-width.c (u16_width): M.
* lib/uniwidth/u32-width.c (u32_width): M.
* lib/uniwidth/u8-width.c (u8_width): M.
* lib/unlinkat.c (rpl_unlinkat): MR.
* lib/unsetenv.c (unsetenv): M.
(rpl_unsetenv): R.
* lib/userspec.c (parse_with_separator): MRS.
(main): MR.
* lib/utime.c (_gl_utimens_windows): M.
* lib/utimecmp.c (utimecmpat): R.
* lib/utimens.c (validate_timespec): R.
(fdutimens): MR.
(lutimens): MR.
* lib/utimensat.c (rpl_utimensat): M.
* lib/vasnprintf.c (divide): M.
(decode_long_double): MR.
(decode_double): MR.
(scale10_round_decimal_decoded): MR.
(floorlog10l): MR.
(floorlog10): MR.
(VASNPRINTF): MR.
* lib/vc-mtime.c (is_git_present): MR.
(git_vc_controlled): MR.
(git_unmodified): M.
(git_mtime): MR.
(abs_git_checkout): MR.
(max_vc_mtime): MR.
* lib/vdzprintf.c (vdzprintf): M.
* lib/vfzprintf.c (vfzprintf): M.
* lib/vma-iter.c (rof_open): M.
(vma_iterate_proc): MRSB.
(vma_iterate_bsd): MB.
(vma_iterate): MR.
* lib/vsnzprintf.c (vsnzprintf): M.
* lib/vszprintf.c (vszprintf): M.
* lib/wait-process.c (klibc_waitpid): M.
(wait_subprocess): MR.
* lib/wcs-two-way.h (critical_factorization): MSB.
(two_way_short_needle): MS.
* lib/wcsstr-impl.h (FUNC): MRSB.
* lib/wcswidth-impl.h (FUNC): B.
* lib/wcsxfrm-impl.h (wcsxfrm): MR.
* lib/wctomb-impl.h (wctomb): M.
* lib/wgetcwd-lgpl.c (wgetcwd): MRS.
* lib/windows-cond.c (glwthread_waitqueue_add): M.
(glwthread_waitqueue_notify_first): M.
(glwthread_waitqueue_notify_all): M.
(glwthread_cond_wait): M.
(glwthread_cond_timedwait): MRS.
* lib/windows-cygpath.c (execute_and_read_line): MR.
* lib/windows-rwlock.c (glwthread_waitqueue_add): M.
(glwthread_rwlock_rdlock): M.
(glwthread_rwlock_wrlock): M.
* lib/windows-spawn.c (quoted_arg_length): M.
(quoted_arg_string): M.
(prepare_spawn): MR.
(compose_command): MRB.
(compose_envblock): RSB.
* lib/windows-thread.c (glwthread_thread_self): M.
(glwthread_thread_create): M.
* lib/windows-timedmutex.c (glwthread_timedmutex_timedlock): MR.
* lib/windows-timedrecmutex.c (glwthread_timedrecmutex_timedlock): MR.
* lib/windows-timedrwlock.c (glwthread_waitqueue_add): M.
(glwthread_waitqueue_notify_first): M.
(glwthread_waitqueue_notify_all): M.
(glwthread_timedrwlock_rdlock): M.
(glwthread_timedrwlock_wrlock): M.
(glwthread_timedrwlock_timedrdlock): MR.
(glwthread_timedrwlock_timedwrlock): MR.
* lib/xasprintf.c (xasprintf): M.
* lib/xconcat-filename.c (xconcatenated_filename): M.
* lib/xmalloc.c (xpalloc): R.
* lib/xmalloca.c (xmmalloca): M.
* lib/xprintf.c (xprintf): M.
(xfprintf): M.
* lib/xstring-buffer-printf.c (sb_xappendf): M.
* lib/xstring-buffer-reversed-printf.c (sbr_xprependf): M.
* lib/xstrtod.c (XSTRTOD): MR.
* lib/xstrtol.c (__xstrtol): R.
* lib/xstrtol-error.c (xstrtol_error): R.
* lib/xvasprintf.c (xstrcat): MB.
(xvasprintf): R.
* lib/zprintf.c (zprintf): M.

4 months agoRemove unnecessary variable initializations.
Bruno Haible [Tue, 9 Dec 2025 23:09:28 +0000 (00:09 +0100)] 
Remove unnecessary variable initializations.

* lib/argp-parse.c (parser_parse_next): Don't initialize err.
* lib/argz.c (argz_create_sep): Don't assign *len unnecessarily.
* lib/bitset/table.c (tbitset_op3_cmp): Don't initialize j.
* lib/canonicalize.c (canonicalize_filename_mode_stk): Don't initialize
prefix_len unnecessarily.
* lib/canonicalize-lgpl.c (realpath_stk): Likewise.
* lib/javacomp.c (get_compiler_version): Don't initialize version_start.
* lib/parse-duration.c (parse_time): Don't initialize res.
* lib/read-file.c (fread_file): Don't initialize buf.
* lib/tempname.c (try_tempname_len): Don't initialize fd.

4 months agopipe-filter-ii: Avoid some 'goto' statements.
Bruno Haible [Tue, 9 Dec 2025 22:47:56 +0000 (23:47 +0100)] 
pipe-filter-ii: Avoid some 'goto' statements.

* lib/pipe-filter-ii.c (_beginthreadex, WaitForMultipleObjects)
[__KLIBC__]: Avoid 'goto'.

4 months agossfmalloc: Simplify.
Bruno Haible [Tue, 9 Dec 2025 22:39:04 +0000 (23:39 +0100)] 
ssfmalloc: Simplify.

* lib/ssfmalloc.h (allocate_block_from_pool): Unify common code in
if/else branches.

4 months agostring-desc: Remove unnecessary variable.
Bruno Haible [Tue, 9 Dec 2025 22:33:46 +0000 (23:33 +0100)] 
string-desc: Remove unnecessary variable.

* lib/string-desc.c (_sd_copy): Remove unnecessary variable 'n'.

4 months agoselect: Remove unused variable (regression 2025-11-18).
Bruno Haible [Tue, 9 Dec 2025 22:31:13 +0000 (23:31 +0100)] 
select: Remove unused variable (regression 2025-11-18).

* lib/select.c (rpl_select): Remove unused variable 'i'.

4 months agorelocatable-lib: Fix and simplify previous commit.
Bruno Haible [Tue, 9 Dec 2025 13:58:00 +0000 (14:58 +0100)] 
relocatable-lib: Fix and simplify previous commit.

* m4/relocatable-lib.m4 (gl_RELOCATABLE_LIBRARY_BODY): Invoke gl_LIBDL.
Define HAVE_DLADDR_IN_LIBC.
* modules/relocatable-lib (configure.ac): Revert last change.
* modules/relocatable-lib-lgpl (Files): Add m4/libdl.m4.
(configure.ac): Revert last change.
* lib/relocatable.c (_GL_USE_PROCFS, _GL_USE_WIN32, _GL_USE_DLADDR):
Remove macros.
(ENABLE_COSTLY_RELOCATABLE): Update comments.
(find_shared_library_fullname): Use dladdr as first alternative. Test
HAVE_DLADDR_IN_LIBC instead of _GL_USE_PROCFS. Define as macro.
(get_shared_library_fullname): Update comments. Test
find_shared_library_fullname instead of _GL_USE_WIN32.

4 months agorelocatable-lib: Find shared library filename via dladdr.
Reuben Thomas [Mon, 8 Dec 2025 18:59:01 +0000 (18:59 +0000)] 
relocatable-lib: Find shared library filename via dladdr.

* lib/relocatable.c (_GL_USE_PROCFS, _GL_USE_WIN32, _GL_USE_DLADDR):
New macros.
(find_shared_library_fullname): Use dladdr if _GL_USE_DLADDR is defined.
(get_shared_library_fullname): Use _GL_USE_WIN32.
* m4/libdl.m4 (gl_LIBDL): Update comment.
* modules/relocatable-lib (Files): Add m4/libdl.m4.
(configure.ac): Invoke gl_LIBDL. Define _GL_DLADDR_IN_LIBC.
* modules/relocatable-lib-lgpl (configure.ac): Likewise.

4 months agodoc: update gnulib-common comments
Paul Eggert [Mon, 8 Dec 2025 07:08:54 +0000 (23:08 -0800)] 
doc: update gnulib-common comments

* m4/gnulib-common.m4: Attempt to explain pure/const
and reproducible/unsequenced more clearly and precisely.

4 months agoargp: Replace some 'continue;' statements with if/else.
Bruno Haible [Sun, 7 Dec 2025 21:19:35 +0000 (22:19 +0100)] 
argp: Replace some 'continue;' statements with if/else.

* lib/argp-help.c (validate_uparams): Use if/else instead of
'continue;'.

4 months agodoc: Fix a typo.
G. Branden Robinson [Sun, 7 Dec 2025 09:33:10 +0000 (03:33 -0600)] 
doc: Fix a typo.

* doc/posix-functions/sinl.texi: Fix typo in last commit.

Copyright-paperwork-exempt: Yes

4 months agoautoupdate
Karl Berry [Sun, 7 Dec 2025 16:24:59 +0000 (08:24 -0800)] 
autoupdate

4 months agosinl: Work around NetBSD 10.0 bug.
Bruno Haible [Thu, 4 Dec 2025 21:51:59 +0000 (22:51 +0100)] 
sinl: Work around NetBSD 10.0 bug.

* lib/math.in.h (sinl): Consider REPLACE_SINL.
* m4/sinl.m4 (gl_FUNC_SINL): Test whether sinl works. Set REPLACE_SINL
to 1 if not.
* m4/math_h.m4 (gl_MATH_H_DEFAULTS): Initialize REPLACE_SINL.
* modules/math-h (Makefile.am): Substitute REPLACE_SINL.
* modules/sinl (configure.ac): Consider REPLACE_SINL.
* doc/posix-functions/sinl.texi: Mention the NetBSD bug.

4 months agoexpf, sinf, cosf, ...: Fix possible error on MSVC.
Bruno Haible [Thu, 4 Dec 2025 21:04:04 +0000 (22:04 +0100)] 
expf, sinf, cosf, ...: Fix possible error on MSVC.

* modules/sqrtf (configure.ac): Consider REPLACE_SQRTF.
* modules/expf (configure.ac): Consider REPLACE_EXPF.
* modules/sinf (configure.ac): Consider REPLACE_SINF.
* modules/cosf (configure.ac): Consider REPLACE_COSF.
* modules/tanf (configure.ac): Consider REPLACE_TANF.
* modules/sinhf (configure.ac): Consider REPLACE_SINHF.
* modules/coshf (configure.ac): Consider REPLACE_COSHF.
* modules/tanhf (configure.ac): Consider REPLACE_TANHF.
* modules/asinf (configure.ac): Consider REPLACE_ASINF.
* modules/acosf (configure.ac): Consider REPLACE_ACOSF.
* modules/atanf (configure.ac): Consider REPLACE_ATANF.
* modules/atan2f (configure.ac): Consider REPLACE_ATAN2F.

4 months agofile-remote: Fix compilation error on FreeBSD 5.2.1.
Bruno Haible [Thu, 4 Dec 2025 19:56:19 +0000 (20:56 +0100)] 
file-remote: Fix compilation error on FreeBSD 5.2.1.

* lib/file-remote.c [FreeBSD]: Before <sys/mount.h>, include
<sys/types.h> and <sys/param.h>.

4 months agoissymlinkat: Remove accidental dependency from issymlink on $(LIBINTL).
Bruno Haible [Thu, 4 Dec 2025 19:53:25 +0000 (20:53 +0100)] 
issymlinkat: Remove accidental dependency from issymlink on $(LIBINTL).

* lib/issymlinkat.h: New file, based on lib/issymlink.h.
* lib/issymlink.h (_GL_ISSYMLINKAT_INLINE, issymlinkat): Remove
definitions.
* lib/issymlinkat.c: Include issymlinkat.h instead of issymlink.h.
* lib/fchmodat.c: Likewise.
* lib/renameatu.c: Likewise.
* lib/unlinkat.c: Likewise.
* lib/lchmod.c: Include issymlinkat.h.
* modules/issymlinkat (Files): Add lib/issymlinkat.h. Remove
lib/issymlink.h.
(Include): Specify issymlinkat.h instead of issymlink.h.
* NEWS: Mention the change.

4 months agomaint: fit bootstrap into 80 columns
Paul Eggert [Thu, 4 Dec 2025 19:37:48 +0000 (11:37 -0800)] 
maint: fit bootstrap into 80 columns

This is for GNU grep’s sc_long_lines test.

4 months agomalloc-posix: improve commentary
Paul Eggert [Thu, 4 Dec 2025 17:38:39 +0000 (09:38 -0800)] 
malloc-posix: improve commentary

* m4/malloc.m4: Improve commentary in response to:
https://lists.gnu.org/r/bug-gnulib/2025-12/msg00038.html

4 months agoDocument modern C coding style.
Bruno Haible [Thu, 4 Dec 2025 17:09:43 +0000 (18:09 +0100)] 
Document modern C coding style.

* HACKING (Coding Style): New section.

4 months agodoc: Tweak verify.h example.
Basil L. Contovounesios [Thu, 20 Nov 2025 20:58:19 +0000 (21:58 +0100)] 
doc: Tweak verify.h example.

* doc/verify.texi (Compile-time Assertions): Fix typo and prevent page
breaks in example.

4 months agoRename some local variables.
Bruno Haible [Thu, 4 Dec 2025 09:19:39 +0000 (10:19 +0100)] 
Rename some local variables.

* lib/backupfile.c (backupfile_internal): Rename e to saved_errno.
* lib/dirchownmod.c (dirchownmod): Likewise.
* lib/exclude.c (add_exclude_file): Likewise.
* lib/fd-safer.c (fd_safer): Likewise.
* lib/fd-safer-flag.c (fd_safer_flag): Likewise.
* lib/fopen-safer.c (fopen_safer): Likewise.
* lib/pipe2-safer.c (pipe2_safer): Likewise.
* lib/quotearg.c (clone_quoting_options, quotearg_buffer,
quotearg_alloc_mem, quotearg_n_options): Likewise.
* lib/savewd.c (savewd_chdir): Likewise.
* lib/tmpfile-safer.c (tmpfile_safer): Likewise.
* lib/file-has-acl.c (acl_get_link_np): Rename err to saved_errno.
* lib/free.c (rpl_free): Likewise.
* lib/fts.c (fts_build, fts_lfree): Likewise.
* lib/getloadavg.c (getloadavg): Likewise.
* lib/hash.c (hash_free, hash_rehash): Likewise.
* lib/time_rz.c (tzfree): Likewise.
* lib/scandir.c (SCANDIR): Rename save to saved_errno.

4 months agomemmem, strstr: Replace some 'continue;' statements with if/else.
Bruno Haible [Thu, 4 Dec 2025 07:12:05 +0000 (08:12 +0100)] 
memmem, strstr: Replace some 'continue;' statements with if/else.

* lib/str-two-way.h (two_way_long_needle): Use if/else instead of
'continue;'.

4 months agotanl: Fix result for negative values.
Bruno Haible [Wed, 3 Dec 2025 22:48:39 +0000 (23:48 +0100)] 
tanl: Fix result for negative values.

* lib/tanl.c (kernel_tanl): In all code branches, multiply the result
with the sign of x.
* tests/test-tanl.c (main): Test two small negative values.

4 months agodoc: Fix typo.
Bruno Haible [Wed, 3 Dec 2025 19:38:27 +0000 (20:38 +0100)] 
doc: Fix typo.

Reported by Pádraig Brady <P@draigBrady.com>.

* doc/posix-functions/stpncpy.texi: Fix typo.
* doc/posix-functions/strncpy.texi: Likewise.

4 months agosinl: Fix result for small negative values.
Bruno Haible [Wed, 3 Dec 2025 17:49:34 +0000 (18:49 +0100)] 
sinl: Fix result for small negative values.

* lib/sincosl.c (kernel_sinl): For small |x|, multiply the result with
the sign of x.
* tests/test-sinl.c (main): Test two small negative values.

4 months agodoc: Update regarding FreeBSD 15.0/x86_64.
Bruno Haible [Wed, 3 Dec 2025 17:27:54 +0000 (18:27 +0100)] 
doc: Update regarding FreeBSD 15.0/x86_64.

* doc/posix-functions/stpncpy.texi: Reference the FreeBSD bug.
* doc/posix-functions/strncpy.texi: Likewise.

4 months agoautoupdate
Karl Berry [Wed, 3 Dec 2025 16:01:58 +0000 (08:01 -0800)] 
autoupdate

4 months agotests: Update an old manual test.
Bruno Haible [Tue, 2 Dec 2025 23:07:21 +0000 (00:07 +0100)] 
tests: Update an old manual test.

* tests/test-stpncpy.c (main): Fix printf call on 64-bit platforms.

4 months agostpncpy: Add workaround for FreeBSD 15.0/x86_64.
Bruno Haible [Tue, 2 Dec 2025 23:06:14 +0000 (00:06 +0100)] 
stpncpy: Add workaround for FreeBSD 15.0/x86_64.

* m4/stpncpy.m4 (gl_FUNC_STPNCPY): Check against FreeBSD bug, using code
taken from m4/strncpy.m4.
* modules/stpncpy (Files): Add m4/mmap-anon.m4.
* doc/posix-functions/stpncpy.texi: Mention the FreeBSD bug.

4 months agoMake use of the strncpy module.
Bruno Haible [Tue, 2 Dec 2025 21:18:52 +0000 (22:18 +0100)] 
Make use of the strncpy module.

* modules/unistr/u8-strncpy (Depends-on): Add strncpy.
* modules/crypto/rijndael (Depends-on): Likewise.
* modules/gethostname (Depends-on): Likewise.
* modules/localename-unsafe (Depends-on): Likewise.
* modules/localename-unsafe-limited (Depends-on): Likewise.
* modules/regex (Depends-on): Likewise.
* modules/setlocale-fixes (Depends-on): Likewise.

4 months agostrncpy: Add workaround for FreeBSD 15.0/x86_64.
Bruno Haible [Tue, 2 Dec 2025 21:14:13 +0000 (22:14 +0100)] 
strncpy: Add workaround for FreeBSD 15.0/x86_64.

* lib/string.in.h (strncpy): New declaration.
* lib/strncpy.c: New file, based on lib/wcsncpy-impl.h.
* m4/strncpy.m4: New file, based on m4/strncat.m4.
* m4/string_h.m4 (gl_STRING_H): Test whether strncpy is declared.
(gl_STRING_H_REQUIRE_DEFAULTS): Initialize GNULIB_STRNCPY.
(gl_STRING_H_DEFAULTS): Initialize REPLACE_STRNCPY.
* modules/string-h (Makefile.am): Substitute GNULIB_STRNCPY,
REPLACE_STRNCPY.
* modules/strncpy (Status, Notice): Remove.
(Files): Add lib/strncpy.c, m4/strncpy.m4, m4/mmap-anon.m4.
(configure.ac): Invoke gl_FUNC_STRNCPY. Arrange to define
GNULIB_STRNCPY. Add GL_COND_OBJ_STRNCPY conditional.
(Makefile.am): Arrange to conditionally compile strncpy.c.
* tests/test-string-h-c++.cc: Check signature of strncpy.
* doc/posix-functions/strncpy.texi: Mention the FreeBSD bug.

4 months agostrncpy tests: Enhance test.
Bruno Haible [Tue, 2 Dec 2025 20:44:08 +0000 (21:44 +0100)] 
strncpy tests: Enhance test.

* tests/test-strncpy.c: Include zerosize-ptr.h.
(MAGIC): New macro.
(check-single, check): New functions, based on
tests/unistr/test-strncpy.h.
(main): Invoke check().
* modules/strncpy-tests (Files): Add tests/zerosize-ptr.h,
m4/mmap-anon.m4.
(Depends-on): Add extensions.
(configure.ac): Invoke gl_FUNC_MMAP_ANON. Check for <sys/mman.h> and
mprotect.

4 months agorealloc-posix: Add workaround for FreeBSD 15.0.
Bruno Haible [Tue, 2 Dec 2025 20:08:31 +0000 (21:08 +0100)] 
realloc-posix: Add workaround for FreeBSD 15.0.

* m4/realloc.m4 (gl_FUNC_REALLOC_POSIX): Test whether realloc sets
errno on failure. Define HAVE_REALLOC_POSIX if yes. Use the
gl_FUNC_MALLOC_POSIX result only on non-BSD platforms.
* m4/malloc.m4 (gl_FUNC_MALLOC_POSIX, gl_CHECK_MALLOC_POSIX): Don't
mention realloc here. Update comments.
* lib/realloc.c (rpl_realloc): Test HAVE_REALLOC_POSIX instead of
HAVE_MALLOC_POSIX.
* doc/posix-functions/realloc.texi: Mention FreeBSD 15 bug.

4 months agodup2: help the compiler a bit
Paul Eggert [Tue, 2 Dec 2025 18:42:52 +0000 (10:42 -0800)] 
dup2: help the compiler a bit

* lib/dup2.c (klibc_dup2dirfd, klibc_dup2, rpl_dup2): Help the
compiler leave a register alone, and/or test just the sign bit.

4 months agodup2, fcntl: Fix the race condition on OS/2 kLIBC
KO Myung-Hun [Tue, 2 Dec 2025 11:43:28 +0000 (20:43 +0900)] 
dup2, fcntl: Fix the race condition on OS/2 kLIBC

dup2() may return an fd other than the desired fd if other threads are
involved.  fcntl() may close the fd used by other threads accidentally.
* lib/dup2.c (klibc_dup2dirfd): Ensure duplication to the desired fd.
(klibd_dup2): Do not close the desired fd.
* lib/fcntl.c (klibc_dupdirfd): New.
(klibc_fcntl): Use klibc_dupdirfd() instead of dup2().

4 months agoFix compilation error in C++ mode on FreeBSD 15.
Bruno Haible [Tue, 2 Dec 2025 15:30:44 +0000 (16:30 +0100)] 
Fix compilation error in C++ mode on FreeBSD 15.

* lib/math.in.h (isfinite): In C++ mode with clang >= 19, use the
approach with C preprocessor macro.

4 months agodoc: Mention a portability problem of sig2str.
Bruno Haible [Tue, 2 Dec 2025 08:39:05 +0000 (09:39 +0100)] 
doc: Mention a portability problem of sig2str.

Reported by Collin Funk in
<https://lists.gnu.org/archive/html/bug-gnulib/2025-12/msg00007.html>.

* doc/posix-functions/sig2str.texi: Mention the argument 0 problem.

4 months agoopenat2: port to O_RESOLVE_BENEATH && !ENOTCAPABLE
Paul Eggert [Mon, 1 Dec 2025 22:30:03 +0000 (14:30 -0800)] 
openat2: port to O_RESOLVE_BENEATH && !ENOTCAPABLE

Problem reported by Bruno Haible in:
https://lists.gnu.org/r/bug-gnulib/2025-12/msg00000.html
Also, fix related bugs involving ENOTCAPABLE.
* lib/openat2.c (do_openat2): Do not map ENOTCAPABLE to EXDEV.
On platforms with ENOTCAPABLE, an ENOTCAPABLE failure here
has nothing to do with O_RESOLVE_BENEATH.
(openat2): Port to macOS 15, which lacks ENOTCAPABLE,
and where O_RESOLVE_BENEATH violations set errno = EACCES.
Don’t assume that an openat2 ENOTCAPABLE (or on macOS 15, EACCES)
failure means an O_RESOLVE_BENEATH failure;
it could merely mean that the process is in capability mode.

4 months agoUpdate some C23 citations
Paul Eggert [Sun, 30 Nov 2025 18:08:27 +0000 (10:08 -0800)] 
Update some C23 citations

4 months agoHACKING: Add remark about ChangeLog entry dates.
Bruno Haible [Sun, 30 Nov 2025 20:08:52 +0000 (21:08 +0100)] 
HACKING: Add remark about ChangeLog entry dates.

* HACKING (Using git): Add reference to GNU Coding Standards.

4 months agofcntl: Fix out of sync of flags on OS/2.
KO Myung-Hun [Sun, 30 Nov 2025 11:38:52 +0000 (20:38 +0900)] 
fcntl: Fix out of sync of flags on OS/2.

* lib/fcntl.c (klibc_fcntl): Use libc functions for F_GETFD/F_SETFD
action, instead of native OS/2 functions.

4 months agomcel: Fix typo in description.
Reuben Thomas [Sun, 30 Nov 2025 15:45:25 +0000 (16:45 +0100)] 
mcel: Fix typo in description.

* modules/mcel (Description): Fix typo.

4 months agomcel: update mcel_eq comments
Paul Eggert [Fri, 28 Nov 2025 06:46:26 +0000 (22:46 -0800)] 
mcel: update mcel_eq comments

* lib/mcel.h (mcel_eq): Prefer the more-precise “Are C1 and C2
equal?” to the longer “Return true if C1 and C2 are equal”.
Logically speaking, the longer form does not specify what value is
returned when C1 and C2 are not equal.

4 months agomcel: prefer mcel_eq to mcel_cmp if either works
Paul Eggert [Fri, 28 Nov 2025 06:43:31 +0000 (22:43 -0800)] 
mcel: prefer mcel_eq to mcel_cmp if either works

* lib/mbscasestr.c (mb_equal, knuth_morris_pratt_multibyte, mbscasestr):
* lib/mbscspn.c (mbscspn):
* lib/mbspbrk.c (mbspbrk):
* lib/mbsspn.c (mbsspn):
* lib/mbsstr.c (mb_equal, knuth_morris_pratt_multibyte, mbsstr):
Prefer mcel_eq to mcel_cmp where either will do.

4 months agomcel: add mcel_eq.
Collin Funk [Thu, 27 Nov 2025 06:32:41 +0000 (22:32 -0800)] 
mcel: add mcel_eq.

* lib/mcel.h (mcel_eq): New function.
* tests/test-mcel.c (main): Add tests.

4 months agoannounce-gen: Accommodate alternative NEWS formats.
Basil L. Contovounesios [Thu, 27 Nov 2025 06:47:57 +0000 (07:47 +0100)] 
announce-gen: Accommodate alternative NEWS formats.

Update ChangeLog.

4 months agoannounce-gen: Accommodate alternative NEWS formats.
Basil L. Contovounesios [Wed, 26 Nov 2025 21:28:04 +0000 (22:28 +0100)] 
announce-gen: Accommodate alternative NEWS formats.

Suggested by Simon Josefsson <simon@josefsson.org> in:
<https://lists.gnu.org/r/bug-gnulib/2025-11/msg00154.html>.

* build-aux/announce-gen (print_news_deltas): Accept Markdown
ATX-style '#' headings in addition to outline-mode '*' headings.
Allow multiple repetitions of the heading marker.

Signed-off-by: Simon Josefsson <simon@josefsson.org>
4 months agomaintainer-makefile: Auto-detect NEWS.md.
Basil L. Contovounesios [Fri, 14 Nov 2025 22:42:10 +0000 (23:42 +0100)] 
maintainer-makefile: Auto-detect NEWS.md.

Suggested by Simon Josefsson <simon@josefsson.org> in:
<https://lists.gnu.org/r/bug-gnulib/2025-11/msg00127.html>.

* top/maint.mk (NEWS_file): Default to NEWS.md when present.
(news-check-regexp, news-check-regexp-prev): Accept headings marked
with either '#' or '*'.
(gl_noteworthy_news_): Default to a #-heading in place of
a *-heading when NEWS_file name implies Markdown.
(release-prep): Consistently prefer test over [.

Signed-off-by: Simon Josefsson <simon@josefsson.org>
4 months agoopenat2: don’t fail with ENOTCAPABLE on FreeBSD
Paul Eggert [Wed, 26 Nov 2025 21:08:34 +0000 (13:08 -0800)] 
openat2: don’t fail with ENOTCAPABLE on FreeBSD

Problem reported by Pavel Cahyna in:
https://lists.gnu.org/r/bug-gnulib/2025-11/msg00257.html
* lib/openat2.c (ENOTCAPABLE): Default to 0.
(do_openat2, openat2): Map FreeBSD’s ENOTCAPABLE to GNU/Linux’s EXDEV.
* tests/test-openat2.c (do_prepare_symlinks, do_test_resolve)
(do-test-basic): Add related tests.

4 months agoautoupdate
Karl Berry [Wed, 26 Nov 2025 15:19:42 +0000 (07:19 -0800)] 
autoupdate

4 months agothreads-h: have mtx_lock join the throng
Paul Eggert [Wed, 26 Nov 2025 05:20:37 +0000 (21:20 -0800)] 
threads-h: have mtx_lock join the throng

* lib/threads.in.h (mtx_lock) [GNULIB_POSIXCHECK]:
Don’t #undef this either; see
<https://lists.gnu.org/r/bug-gnulib/2025-11/msg00254.html>.

4 months agosnippet/warn-on-use: don’t #undef before _GL_WARN_ON_USE
Paul Eggert [Tue, 25 Nov 2025 07:49:27 +0000 (23:49 -0800)] 
snippet/warn-on-use: don’t #undef before _GL_WARN_ON_USE

Don’t #undef X before invoking _GL_WARN_ON_USE or
_GL_WARN_ON_USE_CXX on X.  However, dprintf and mtx_lock are
exceptions, and keep their #undefs at least for now; see
<https://lists.gnu.org/r/bug-gnulib/2025-11/msg00251.html>.

4 months agoannounce-gen: replace SHA1 checksums with SHA3-256.
Collin Funk [Tue, 25 Nov 2025 01:53:15 +0000 (17:53 -0800)] 
announce-gen: replace SHA1 checksums with SHA3-256.

* build-aux/announce-gen (usage): Mention that SHA256 and SHA3-256
checksums are used.
(digest_file_base64_wrap): Add padding lengths for SHA3. Emit the tagged
format expected by cksum.
(print_checksums): Use SHA3-256 instead of SHA1. Update instructions for
checking SHA3-256 checksums. Add instructions for when --cksum-checksums
is not used.

4 months agosnippet/c++defs: Fix typo in comment.
Bruno Haible [Sun, 23 Nov 2025 23:50:05 +0000 (00:50 +0100)] 
snippet/c++defs: Fix typo in comment.

* lib/c++defs.h (_GL_FUNCDECL_SYS_NAME): Fix typo in comment.

4 months agomath-h, string-h: Fix C++ compilation errors with GNULIB_POSIXCHECK.
Bruno Haible [Sun, 23 Nov 2025 23:42:38 +0000 (00:42 +0100)] 
math-h, string-h: Fix C++ compilation errors with GNULIB_POSIXCHECK.

* lib/math.in.h (frexp, ldexp): Use _GL_WARN_ON_USE_CXX instead of
_GL_WARN_ON_USE.
* lib/string.in.h (memchr, strstr): Likewise.

4 months agocrypto/gc: Improve the API of git_hash_clone.
Bruno Haible [Sun, 23 Nov 2025 21:43:54 +0000 (22:43 +0100)] 
crypto/gc: Improve the API of git_hash_clone.

* lib/gc-gnulib.c (gc_hash_clone): Don't set *outhandle when failing.
* lib/gc-libgcrypt.c (gc_hash_clone): Likewise.

4 months agounistr: Replace some 'continue;' statements with if/else.
Bruno Haible [Sun, 23 Nov 2025 21:34:06 +0000 (22:34 +0100)] 
unistr: Replace some 'continue;' statements with if/else.

* lib/unistr/u16-cmp.c (u16_cmp): Use if/else instead of 'continue;'.
* lib/unistr/u16-strcmp.c (u16_strcmp): Likewise.
* lib/unistr/u16-strncmp.c (u16_strncmp): Likewise.
* lib/unistr/u32-cmp.c (u32_cmp): Likewise.
* lib/unistr/u32-strcmp.c (u32_strcmp): Likewise.
* lib/unistr/u32-strncmp.c (u32_strncmp): Likewise.

4 months agocount-leading-zeros: fix 2025-11-18 regression
Paul Eggert [Sun, 23 Nov 2025 11:01:08 +0000 (03:01 -0800)] 
count-leading-zeros: fix 2025-11-18 regression

* lib/count-leading-zeros.h (COUNT_LEADING_ZEROS):
* lib/count-trailing-zeros.h (COUNT_TRAILING_ZEROS):
Go back to putting the decls outside the for-loop,
as the identifiers are used after the loop is over.

4 months agoPort to C23 qualifier-generic fns like strchr
Paul Eggert [Sun, 23 Nov 2025 08:50:40 +0000 (00:50 -0800)] 
Port to C23 qualifier-generic fns like strchr

This ports Gnulib to strict C23 platforms that reject code
like ‘char *q = strchr (P, 'x');’ when P is a pointer to const,
because in C23 strchr is a qualifier-generic function so
strchr (P, 'x') returns char const *.
This patch does not attempt to do the following two things,
which might be useful in the future:
1. When compiling on non-C23 platforms, check user code for
portability to platforms that define qualifier-generic functions.
2. Port Gnulib to platforms that have qualifier-generic functions
not listed in the C23 standard, e.g., strchrnul.  I don’t know
of any such platforms.
* lib/argp-help.c (argp_doc):
* lib/c-strstr.c (c_strstr):
* lib/dfa.c (comsubs):
* lib/mbschr.c (mbschr):
* lib/mbspbrk.c (mbspbrk):
* lib/mbsrchr.c (mbsrchr):
* lib/memchr2.c (memchr2):
* lib/string-desc.c (_sd_index):
* tests/test-bsearch.c (lib_bsearch):
* tests/test-memchr.c (lib_memchr):
* tests/test-wmemchr.c (lib_wmemchr):
Port to C23, where functions like strchr are qualifier-generic.
* lib/c++defs.h (_GL_FUNCDECL_SYS_NAME): New macro.
* lib/c++defs.h (_GL_FUNCDECL_SYS):
* lib/stdlib.in.h (bsearch):
Use it, to prevent C23 names like strchr from acting like macros.
* lib/string.in.h (memchr, strchr, strpbrk, strrchr):
Do not #undef when GNULIB_POSIXCHECK is defined, as this could
cause conforming C23 code to fail to conform.  It’s not clear why
_GL_WARN_ON_USE_CXX; perhaps it was needed but isn’t any more?
But for now, limit the removal of #undef to these four functions
where #undeffing is clearly undesirable in C23.
* lib/wchar.in.h (wmemchr): Parenthesize function name in decl,
to prevent it from acting like a macro.

4 months agostrnlen: Fix compilation error (regression 2025-11-18).
Bruno Haible [Fri, 21 Nov 2025 02:02:22 +0000 (03:02 +0100)] 
strnlen: Fix compilation error (regression 2025-11-18).

Reported by Po Lu <luangruo@yahoo.com> in
<https://lists.gnu.org/archive/html/bug-gnulib/2025-11/msg00217.html>.

* lib/strnlen.c (strnlen): Revert last change.

4 months agonstrftime, fprintftime: Reduce link requirements on macOS.
Bruno Haible [Thu, 20 Nov 2025 02:04:39 +0000 (03:04 +0100)] 
nstrftime, fprintftime: Reduce link requirements on macOS.

Reported by Paul Eggert for GNU tar.

* lib/strftime.c: On macOS, don't include localename.h.
(my_strftime): On macOS, use strftime() instead of gl_locale_name_unsafe
to test for the three particular locales.
* modules/nstrftime (Depends-on): Add condition to localename-unsafe.
(Link): Remove @INTL_MACOSX_LIBS@.
* modules/nstrftime-limited (Depends-on): Add condition to
localename-unsafe-limited.
(Link): Remove @INTL_MACOSX_LIBS@.
* modules/nstrftime-tests (Makefile.am): Link test-nstrftime* without
@INTL_MACOSX_LIBS@.
* modules/fprintftime (Link): Remove @INTL_MACOSX_LIBS@.

4 months agowcsdup: Make POSIX compliant.
Bruno Haible [Wed, 19 Nov 2025 11:05:00 +0000 (12:05 +0100)] 
wcsdup: Make POSIX compliant.

* lib/wcsdup.c: Include <errno.h>.
* lib/wcsdup-impl.h (wcsdup): Set errno before returning NULL.

4 months agointprops: port better to Clang < 21
Paul Eggert [Wed, 19 Nov 2025 00:13:39 +0000 (16:13 -0800)] 
intprops: port better to Clang < 21

Clang bug 16778 (formerly 16404) apparently survived on some
platforms even in Clang 14 and later.  The bug appears to be fixed
in Clang 21.  Work around the bug on older platforms.
Also, update some URLs as Clang renumbered its bugs.
* lib/intprops-internal.h (_GL_HAS_BUILTIN_MUL_OVERFLOW):
Define to 0 (not 1) for Clang 14 through 20.

4 months agolib: Replace some 'continue;' statements with if/else.
Bruno Haible [Tue, 18 Nov 2025 22:59:58 +0000 (23:59 +0100)] 
lib: Replace some 'continue;' statements with if/else.

* lib/base32.c (base32_decode_ctx): Use if/else instead of 'continue;'.
* lib/base64.c (base64_decode_ctx): Likewise.
* lib/bitset/array.c (abitset_list): Likewise.
* lib/bitset/list.c (lbitset_disjoint_p): Likewise.
* lib/bitset/table.c (tbitset_equal_p, tbitset_list, tbitset_subset_p,
tbitset_disjoint_p, tbitset_op3_cmp): Likewise.
* lib/bitset/vector.c (vbitset_list): Likewise.
* lib/diffseq.h (diag): Likewise.
* lib/file-has-acl.c (fdfile_has_aclinfo): Likewise.
* lib/fwriteerror.c (main): Likewise.
* lib/getugroups.c (getugroups): Likewise.
* lib/hash.c (transfer_entries): Likewise.
* lib/inet_pton.c (inet_pton6): Likewise.
* lib/mountlist.c (read_file_system_list): Likewise.
* lib/poll.c (poll): Likewise.
* lib/select.c (rpl_select): Likewise.
* lib/set-permissions.c (set_acls_from_mode): Likewise.
* lib/timevar.c (timevar_print): Likewise.
* lib/wcscasecmp-impl.h (wcscasecmp): Likewise.
* lib/wcscmp-impl.h (wcscmp): Likewise.
* lib/wcsncasecmp-impl.h (wcsncasecmp): Likewise.
* lib/wcsncmp-impl.h (wcsncmp): Likewise.
* lib/wmemcmp-impl.h (wmemcmp): Likewise.

4 months agolib: Use C99 initialization syntax for single-variable 'for' loops.
Bruno Haible [Tue, 18 Nov 2025 20:52:13 +0000 (21:52 +0100)] 
lib: Use C99 initialization syntax for single-variable 'for' loops.

* lib/acl-internal.c (acl_nontrivial, acl_ace_nontrivial,
aclv_nontrivial, acl_nfs4_nontrivial): Declare variable of
single-variable 'for' loops in the 'for' clause.
* lib/arcfour.c (arcfour_setkey): Likewise.
* lib/arctwo.c (arctwo_encrypt, arctwo_decrypt, arctwo_setkey_ekb):
Likewise.
* lib/argmatch.c (argmatch, argmatch_exact, argmatch_valid,
argmatch_to_argument): Likewise.
* lib/argz.c (argz_create): Likewise.
* lib/argz.in.h (error_t): Likewise.
* lib/basename-lgpl.c (last_component): Likewise.
* lib/bcp47.c (xpg_to_bcp47, bcp47_to_xpg): Likewise.
* lib/bitset/list.c (lbitset_empty_p): Likewise.
* lib/bitset/vector.c (vbitset_or_and_cmp): Likewise.
* lib/classpath.c (new_classpath): Likewise.
* lib/clean-temp-simple.c (cleanup_action): Likewise.
* lib/clean-temp.c (create_temp_dir, cleanup_temp_dir): Likewise.
* lib/count-leading-zeros.h (COUNT_LEADING_ZEROS): Likewise.
* lib/count-one-bits.h (COUNT_ONE_BITS_GENERIC): Likewise.
* lib/count-trailing-zeros.h (COUNT_TRAILING_ZEROS): Likewise.
* lib/crc-generate-table.c (make_crc_table): Likewise.
* lib/crc.c (crc32_update_no_xor_slice_by_n, crc32_update_no_xor):
Likewise.
* lib/csharpcomp.c (compile_csharp_using_mono,
compile_csharp_using_dotnet, compile_csharp_using_sscli): Likewise.
* lib/csharpexec.c (execute_csharp_using_mono,
execute_csharp_using_dotnet, execute_csharp_using_sscli): Likewise.
* lib/cygpath.c (cygpath_w): Likewise.
* lib/des.c (gl_des_is_weak_key, des_key_schedule, gl_des_setkey,
gl_3des_set2keys, gl_3des_set3keys): Likewise.
* lib/dfa.c (state_index, transit_state, free_mbdata): Likewise.
* lib/di-set.c (di_ent_hash): Likewise.
* lib/diffseq.h (diag): Likewise.
* lib/duplocale.c (duplocale): Likewise.
* lib/execve.c (execve): Likewise.
* lib/fatal-signal.c (init_fatal_signals, uninstall_handlers,
install_handlers, gl_lock_define_initialized, do_init_fatal_signal_set,
get_fatal_signals): Likewise.
* lib/fcntl.c (dupfd): Likewise.
* lib/ffs.c (ffs): Likewise.
* lib/ffsl.h (unsigned): Likewise.
* lib/file-remote.c (file_is_remote): Likewise.
* lib/findprog-in.c (find_in_given_path): Likewise.
* lib/findprog.c (find_in_path): Likewise.
* lib/fma.c (decode, multiply, FUNC): Likewise.
* lib/freelocale.c (freelocale): Likewise.
* lib/fstrcmp.c (fstrcmp_bounded): Likewise.
* lib/ftoastr.c (FTOASTR): Likewise.
* lib/fts.c (find_matching_ancestor, fts_cross_check): Likewise.
* lib/fwriteerror.c (main): Likewise.
* lib/gai_strerror.c (gai_strerror): Likewise.
* lib/gc-gnulib.c (gc_cipher_setkey, gc_cipher_setiv,
gc_cipher_encrypt_inline, gc_cipher_decrypt_inline): Likewise.
* lib/gc-pbkdf2.c (gc_pbkdf2_prf): Likewise.
* lib/gen-uni-tables.c (fill_attributes, debug_output_predicate,
output_predicate_test, output_predicate, output_category,
output_combclass, output_bidi_category, output_decimal_digit_test,
output_decimal_digit, output_digit_test, output_digit,
output_numeric_test, output_numeric, fill_mirror, get_mirror_value,
output_mirror, clear_properties, fill_properties, fill_property30,
output_indic_conjunct_break_test, output_indic_conjunct_break,
fill_arabicshaping, output_joining_type_test, output_joining_type,
output_joining_group_test, output_joining_group, fill_scripts,
output_scripts, output_scripts_byname, output_blocks,
output_ident_category, output_charclass, output_charmap, output_tables,
fill_width, output_nonspacing_property, output_width_property_test,
debug_output_lbp, fill_org_lbp, debug_output_org_lbp, output_lbpea,
output_lbrk_tables, debug_output_wbp, fill_org_wbp,
debug_output_org_wbp, output_wbp, output_gbp_test, output_gbp_table,
fill_org_gbp, output_decomposition, output_decomposition_tables,
fill_composition_exclusions, debug_output_composition_tables,
output_composition_tables, output_simple_mapping_test,
output_simple_mapping, fill_casing_rules, fill_casefolding_rules,
redistribute_casefolding_rules, output_casing_rules): Likewise.
* lib/get_ppid_of.c (get_ppid_of): Likewise.
* lib/getdtablesize.c (getdtablesize): Likewise.
* lib/getloadavg.c (getloadavg): Likewise.
* lib/getlocalename_l-unsafe.c (get_locale_t_name_unsafe, newlocale,
duplocale, freelocale): Likewise.
* lib/getlogin.c (getlogin): Likewise.
* lib/getprogname.c (getprogname): Likewise.
* lib/getugroups.c (getugroups): Likewise.
* lib/gl_anyavltree_list2.h (gl_tree_remove_node_from_tree,
gl_tree_nx_add_first, gl_tree_nx_add_last, gl_tree_nx_add_before,
gl_tree_nx_add_after): Likewise.
* lib/gl_anyhash2.h (hash_resize): Likewise.
* lib/gl_anyhash_primes.h (next_prime): Likewise.
* lib/gl_anylinked_list2.h (gl_linked_nx_create,
gl_linked_search_from_to, gl_linked_list_free,
gl_linked_iterator_from_to, gl_linked_sortedlist_search,
gl_linked_sortedlist_nx_add, gl_linked_sortedlist_remove): Likewise.
* lib/gl_anyrbtree_list2.h (gl_tree_remove_node_from_tree,
gl_tree_nx_add_first, gl_tree_nx_add_last, gl_tree_nx_add_before,
gl_tree_nx_add_after): Likewise.
* lib/gl_anytree_list2.h (gl_tree_sortedlist_search,
gl_tree_sortedlist_search_from_to): Likewise.
* lib/gl_anytree_omap.h (gl_tree_search, gl_tree_search_atleast,
gl_tree_getremove): Likewise.
* lib/gl_anytree_oset.h (gl_tree_search, gl_tree_search_atleast,
gl_tree_search_node, gl_tree_iterator_atleast): Likewise.
* lib/gl_anytreehash_list1.h (add_to_bucket, remove_from_bucket):
Likewise.
* lib/gl_anytreehash_list2.h (gl_tree_search_from_to,
gl_tree_list_free): Likewise.
* lib/gl_array_list.c (gl_array_indexof_from_to, gl_array_nx_add_first,
gl_array_nx_add_before, gl_array_nx_add_after, gl_array_nx_add_at,
gl_array_remove_node, gl_array_remove_at): Likewise.
* lib/gl_array_map.c (gl_array_indexof, gl_array_remove_at): Likewise.
* lib/gl_array_omap.c (gl_array_nx_add_at, gl_array_remove_at):
Likewise.
* lib/gl_array_oset.c (gl_array_nx_add_at, gl_array_remove_at,
gl_array_update): Likewise.
* lib/gl_array_set.c (gl_array_search, gl_array_remove_at,
gl_array_remove): Likewise.
* lib/gl_carray_list.c (gl_carray_nx_add_at, gl_carray_remove_at,
gl_carray_list_free): Likewise.
* lib/gl_hash_map.c (gl_hash_search, gl_hash_nx_getput,
gl_hash_getremove, gl_hash_free): Likewise.
* lib/gl_hash_set.c (gl_hash_search, gl_hash_nx_add, gl_hash_remove,
gl_hash_free): Likewise.
* lib/gl_linkedhash_list.c (remove_from_bucket): Likewise.
* lib/gl_linkedhash_map.c (gl_linkedhash_search,
gl_linkedhash_nx_getput, gl_linkedhash_getremove, gl_linkedhash_free):
Likewise.
* lib/gl_linkedhash_set.c (gl_linkedhash_search, gl_linkedhash_nx_add,
gl_linkedhash_remove, gl_linkedhash_free): Likewise.
* lib/group-member.c (group_member, main): Likewise.
* lib/hash.c (hash_get_max_bucket_length, hash_table_ok, hash_lookup,
hash_get_first, hash_get_entries, hash_do_for_each, hash_clear,
hash_free, find_entry, transfer_entries, hash_print): Likewise.
* lib/hashcode-mem.c (hash_pjw_bare): Likewise.
* lib/hashcode-string2.c (hash_pjw): Likewise.
* lib/human.c (human_readable): Likewise.
* lib/i-ring.c (i_ring_init): Likewise.
* lib/idcache.c (getuser, getuidbyname, getgroup, getgidbyname):
Likewise.
* lib/inet_ntop.c (inet_ntop6): Likewise.
* lib/inet_pton.c (inet_pton6): Likewise.
* lib/ino-map.c (ino_hash): Likewise.
* lib/integer_length.c (integer_length): Likewise.
* lib/integer_length_l.c (FUNC): Likewise.
* lib/javacomp.c (compile_using_envjavac, compile_using_javac):
Likewise.
* lib/javaexec.c (execute_java_class): Likewise.
* lib/kwset.c (kwsprep): Likewise.
* lib/ldexpl.c (main): Likewise.
* lib/localeinfo.c (case_folded_counterparts): Likewise.
* lib/localename-unsafe.c (script_entry, gl_locale_name_canonicalize):
Likewise.
* lib/login_tty.c (login_tty): Likewise.
* lib/mbscasestr.c (knuth_morris_pratt_multibyte): Likewise.
* lib/mbsstr.c (knuth_morris_pratt_multibyte): Likewise.
* lib/md2.c (md2_finish_ctx, md2_update_chksum, md2_compress): Likewise.
* lib/md4.c (md4_process_block): Likewise.
* lib/mem-hash-map.c (resize): Likewise.
* lib/memcasecmp.c (memcasecmp): Likewise.
* lib/memchr.c (__memchr): Likewise.
* lib/memchr2.c (memchr2): Likewise.
* lib/memrchr.c (__memrchr): Likewise.
* lib/mgetgroups.c (mgetgroups): Likewise.
* lib/mktime.c (__mktime_internal): Likewise.
* lib/modechange.c (mode_compile): Likewise.
* lib/mountlist.c (unescape_tab, read_file_system_list): Likewise.
* lib/mpsort.c (mpsort_with_tmp): Likewise.
* lib/nproc.c (num_processors_via_affinity_mask): Likewise.
* lib/obstack.c (strong_alias): Likewise.
* lib/os2-spawn.c (prepare_spawn): Likewise.
* lib/pipe-filter-ii.c (WaitForMultipleObjects): Likewise.
* lib/pipe-safer.c (pipe_safer): Likewise.
* lib/pipe2-safer.c (pipe2_safer): Likewise.
* lib/poll.c (windows_compute_revents, poll): Likewise.
* lib/progreloc.c (find_executable): Likewise.
* lib/pselect.c (rpl_pselect): Likewise.
* lib/putenv.c (SetEnvironmentVariable): Likewise.
* lib/qsort.c (_quicksort): Likewise.
* lib/quotearg.c (quotearg_buffer_restyled, quotearg_free): Likewise.
* lib/random_r.c (__srandom_r): Likewise.
* lib/readtokens.c (readtoken): Likewise.
* lib/readutmp.c (read_utmp_from_systemd): Likewise.
* lib/regex-quote.c (regex_quote_length, regex_quote_copy): Likewise.
* lib/relocwrapper.c (relocate_libdirs, activate_libdirs): Likewise.
* lib/scandir.c (cancel_handler): Likewise.
* lib/select.c (windows_poll_handle, rpl_select): Likewise.
* lib/set-permissions.c (set_acls_from_mode): Likewise.
* lib/setlocale-fixes.c (fill_lc_all_name, setlocale_fixed): Likewise.
* lib/setlocale.c (search, setlocale_unixlike): Likewise.
* lib/setlocale_null-unlocked.c (setlocale_null_r_unlocked): Likewise.
* lib/sh-quote.c (shell_quote_argv): Likewise.
* lib/sha1.c (sha1_process_block): Likewise.
* lib/sha256.c (sha256_read_ctx, sha224_read_ctx, sha256_process_block):
Likewise.
* lib/sha512.c (sha512_read_ctx, sha384_read_ctx, sha512_process_block):
Likewise.
* lib/sig2str.c (str2signum, sig2str): Likewise.
* lib/sigprocmask.c (sigpending, sigprocmask): Likewise.
* lib/sm3.c (sm3_read_ctx, sm3_process_block): Likewise.
* lib/spawn_faction_destroy.c (posix_spawn_file_actions_destroy):
Likewise.
* lib/spawni.c (do_remaining_delayed_dup2, shrink_inheritable_handles,
close_inheritable_handles, __spawni): Likewise.
* lib/ssfmalloc-bitmap.h (init_bitmap_all_bits_clear,
init_bitmap_all_bits_set): Likewise.
* lib/ssfmalloc.h (add_update, drop_update,
allocate_medium_block_in_page, free_medium_block_in_page): Likewise.
* lib/stack-trace-impl.h (print_stack_trace_to): Likewise.
* lib/stat-time.h (stat_time_normalize): Likewise.
* lib/stat-w32.c (_gl_fstat_by_handle): Likewise.
* lib/stat.c (rpl_stat): Likewise.
* lib/stdopen.c (stdopen): Likewise.
* lib/str-kmp.h (knuth_morris_pratt): Likewise.
* lib/str-two-way.h (two_way_long_needle): Likewise.
* lib/strchrnul.c (strchrnul): Likewise.
* lib/strfmon_l.c (rpl_strfmon_l): Likewise.
* lib/strftime.c (underlying_strftime, __strftime_internal): Likewise.
* lib/striconveh.c (iconv_carefully, iconv_carefully_1, tmpbuf):
Likewise.
* lib/striconveha.c (mem_iconveha_notranslit, str_iconveha_notranslit):
Likewise.
* lib/string-desc.c (_sd_c_casecmp, sd_concat): Likewise.
* lib/strnlen.c (strnlen): Likewise.
* lib/strtod.c (parse_number): Likewise.
* lib/strtol.c (INTERNAL(strtol)): Likewise.
* lib/struniq.h (gl_lock_define_initialized): Likewise.
* lib/sys_select.in.h (rpl_fd_isset): Likewise.
* lib/sys_socket.in.h (rpl_fd_isset): Likewise.
* lib/system-quote.c (windows_createprocess_quote, windows_cmd_quote,
system_quote_argv): Likewise.
* lib/tempname.c (try_tempname_len): Likewise.
* lib/term-style-control.c (init_relevant_signal_set,
fatal_or_stopping_signal_handler, continuing_signal_handler,
ensure_other_signal_handlers): Likewise.
* lib/tsearch.c (check_tree): Likewise.
* lib/unicase/u-casemap.h (FUNC): Likewise.
* lib/unicase/u-ct-totitle.h (FUNC): Likewise.
* lib/uniconv/u-conv-from-enc.h (FUNC): Likewise.
* lib/uniconv/u-conv-to-enc.h (FUNC): Likewise.
* lib/uniconv/u8-conv-from-enc.c (u8_conv_from_encoding): Likewise.
* lib/unictype/3level.h (CONCAT(TABLE,_add), CONCAT(TABLE,_iterate),
CONCAT(TABLE,_finalize)): Likewise.
* lib/unictype/3levelbit.h (CONCAT(TABLE,_add), CONCAT(TABLE,_iterate),
CONCAT(TABLE,_finalize)): Likewise.
* lib/unigbrk/ulc-grapheme-breaks.c (ascii_grapheme_breaks,
ulc_grapheme_breaks): Likewise.
* lib/unilbrk/u8-possible-linebreaks.c (main): Likewise.
* lib/unilbrk/u8-width-linebreaks.c (main): Likewise.
* lib/unilbrk/ulc-possible-linebreaks.c
(ulc_possible_linebreaks_internal, main): Likewise.
* lib/unilbrk/ulc-width-linebreaks.c (ulc_width_linebreaks_internal,
main): Likewise.
* lib/uniname/uniname.c (unicode_character_name,
unicode_name_character): Likewise.
* lib/uninorm/u-normalize-internal.h (FUNC): Likewise.
* lib/uninorm/uninorm-filter.c (uninorm_filter_write,
uninorm_filter_flush): Likewise.
* lib/uniwbrk/u8-wordbreaks.c (main): Likewise.
* lib/uniwbrk/ulc-wordbreaks.c (ulc_wordbreaks, main): Likewise.
* lib/userspec.c (main): Likewise.
* lib/vasnprintf.c (multiply, divide, convert_to_decimal,
decode_long_double, decode_double, scale10_round_decimal_decoded,
VASNPRINTF): Likewise.
* lib/vma-iter.c (vma_iterate): Likewise.
* lib/windows-cond.c (glwthread_waitqueue_notify_all): Likewise.
* lib/windows-path.c (extended_PATH, extended_environ): Likewise.
* lib/windows-rwlock.c (glwthread_waitqueue_add,
glwthread_waitqueue_notify_all): Likewise.
* lib/windows-spawn.c (quoted_arg_length, quoted_arg_string,
prepare_spawn, compose_command, compose_envblock,
init_inheritable_handles, compose_handles_block): Likewise.
* lib/windows-timedrwlock.c (glwthread_waitqueue_notify_all): Likewise.
* lib/windows-tls.c (glwthread_tls_process_destructors,
glwthread_tls_key_delete): Likewise.
* lib/xstring-desc.c (xsd_concat): Likewise.
* lib/xvasprintf.c (xstrcat, xvasprintf): Likewise.
* lib/newlocale.c (newlocale): Likewise. Move the fail_with_err label
into the loop.

4 months agonstrftime, fprintftime: Fix a -Wshadow=local warning (regr. 2024-02-08).
Bruno Haible [Tue, 18 Nov 2025 10:43:55 +0000 (11:43 +0100)] 
nstrftime, fprintftime: Fix a -Wshadow=local warning (regr. 2024-02-08).

* lib/strftime.c (__strftime_internal): Rename a local variable.

4 months agohash: Add a comment.
Bruno Haible [Tue, 18 Nov 2025 01:18:54 +0000 (02:18 +0100)] 
hash: Add a comment.

* lib/hash.c (struct hash_entry): Add comment about an invariant.

4 months agoopenat2: follow OS re EFTYPE/EMLINK/ELOOP
Paul Eggert [Tue, 18 Nov 2025 00:28:24 +0000 (16:28 -0800)] 
openat2: follow OS re EFTYPE/EMLINK/ELOOP

On FreeBSD and NetBSD, have openat2 behave like openat
with respect to whether O_NOFOLLOW fails with EMLINK and EFTYPE
when opening a symlink.  Although these openat implementations
do not conform to POSIX, their behavior is arguably more useful
than the POSIX behavior so let’s have openat2 be consistent with
openat rather than matching the GNU/Linux behavior.
This should fix a test failure reported by Bruno Haible in:
https://lists.gnu.org/r/bug-gnulib/2025-11/msg00183.html
* lib/fcntl.in.h (_GL_OPENAT_ESYMLINK): New macro.
* lib/openat2.c (do_openat2): Use it instead of ELOOP.
* tests/test-openat2.c (is_nofollow_error):
Use it; this makes the tests pickier on FreeBSD and NetBSD,
as they now require local behavior.

4 months agoreadutmp, boot-time tests: Fix test failure in CentOS 7 CI environments.
Bruno Haible [Mon, 17 Nov 2025 21:29:16 +0000 (22:29 +0100)] 
readutmp, boot-time tests: Fix test failure in CentOS 7 CI environments.

* tests/test-boot-time.c: Include <stdlib.h>.
(main): Skip the 5-years test in environments where $USER is not set.
* tests/test-readutmp.c (main): Likewise.

4 months agomaintainer-makefile: Optimize repeated executions of the same command.
Basil L. Contovounesios [Fri, 14 Nov 2025 22:38:38 +0000 (23:38 +0100)] 
maintainer-makefile: Optimize repeated executions of the same command.

* top/maint.mk (gnulib_dir): Define as a simply (rather than
recursively) expanded variable, to avoid repeated $(shell)
invocations.

4 months agoannounce-gen: Pacify POD errors.
Basil L. Contovounesios [Fri, 14 Nov 2025 18:10:11 +0000 (19:10 +0100)] 
announce-gen: Pacify POD errors.

* build-aux/announce-gen: Wrap all =items within =over..=back.
Terminate all C< formatting codes with >, not EOL.
(sizes): Format assignment operator like surrounding code.
(print_locations): Add missing C formatting code.

4 months agotests: Use C99 initialization syntax for single-variable 'for' loops.
Bruno Haible [Sun, 16 Nov 2025 14:05:22 +0000 (15:05 +0100)] 
tests: Use C99 initialization syntax for single-variable 'for' loops.

* tests/altstack-util.h (check_alternate_stack_no_overflow): Declare
variable of single-variable 'for' loops in the 'for' clause.
* tests/atomic-int-gnulib.h (init_atomic_int): Likewise.
* tests/atomic-int-isoc.h (init_atomic_int): Likewise.
* tests/atomic-int-posix.h (init_atomic_int): Likewise.
* tests/bench-crc.c (main): Likewise.
* tests/bench-digest.h (main): Likewise.
* tests/bench-mbiter.c (do_test, main): Likewise.
* tests/bench-mbiterf.c (do_test, main): Likewise.
* tests/bench-mbswidth.c (do_test, main): Likewise.
* tests/bench-mbuiter.c (do_test, main): Likewise.
* tests/bench-mbuiterf.c (do_test, main): Likewise.
* tests/bench-mcel.c (noop_test, main): Likewise.
* tests/bench-pagealign_alloc.c (allocate_some_pages, main): Likewise.
* tests/bench-totalorder.c (do_float_test, do_double_test,
do_long_double_test, main): Likewise.
* tests/test-access.h (is_administrator): Likewise.
* tests/test-aligned-malloc.c (main): Likewise.
* tests/test-aligned_alloc.c (main): Likewise.
* tests/test-alloca-opt.c (main): Likewise.
* tests/test-arcfour.c (main): Likewise.
* tests/test-arctwo.c (main): Likewise.
* tests/test-argp.c (parse_opt, main): Likewise.
* tests/test-argv-iter.c (main): Likewise.
* tests/test-array-mergesort.c (main): Likewise.
* tests/test-array_list.c (check_equals, main): Likewise.
* tests/test-array_map.c (check_equals, main): Likewise.
* tests/test-array_omap.c (check_equals, main): Likewise.
* tests/test-array_oset.c (check_equals, gl_sortedlist_indexof_atleast,
main): Likewise.
* tests/test-array_set.c (check_equals, main): Likewise.
* tests/test-asyncsafe-linked_list-strong.c (sigint_handler,
signal_sending_thread, main): Likewise.
* tests/test-asyncsafe-linked_list-weak.c (init_bag_empty, bag_is_empty,
bag_is_subset, bag_equals, bag_or, bag_xor, bag_and_not, sigint_handler,
signal_sending_thread, main): Likewise.
* tests/test-asyncsafe-spin1.c (main): Likewise.
* tests/test-asyncsafe-spin2.c (check_accounts, lock_mutator_thread,
test_asyncsafe_spin): Likewise.
* tests/test-at-init-2.c (init_squares): Likewise.
* tests/test-at-init-3.c (init_cubes): Likewise.
* tests/test-avltree_list.c (check_equals, main): Likewise.
* tests/test-avltree_omap.c (check_equals, main): Likewise.
* tests/test-avltree_oset.c (check_equals, main): Likewise.
* tests/test-avltreehash_list.c (check_equals, main): Likewise.
* tests/test-btoc32.c (main): Likewise.
* tests/test-btowc.c (main): Likewise.
* tests/test-c-ctype.c (test_agree_with_C_locale, test_all): Likewise.
* tests/test-c-strcasestr.c (main): Likewise.
* tests/test-c-strstr.c (main): Likewise.
* tests/test-c32isalnum.c (main): Likewise.
* tests/test-c32isalpha.c (main): Likewise.
* tests/test-c32isblank.c (main): Likewise.
* tests/test-c32iscntrl.c (main): Likewise.
* tests/test-c32isdigit.c (main): Likewise.
* tests/test-c32isgraph.c (main): Likewise.
* tests/test-c32islower.c (main): Likewise.
* tests/test-c32isprint.c (main): Likewise.
* tests/test-c32ispunct.c (main): Likewise.
* tests/test-c32isspace.c (main): Likewise.
* tests/test-c32isupper.c (main): Likewise.
* tests/test-c32isxdigit.c (main): Likewise.
* tests/test-c32rtomb.c (main): Likewise.
* tests/test-c32rtomb-w32.c (test_one_locale, main): Likewise.
* tests/test-c32snrtombs.c (main): Likewise.
* tests/test-c32srtombs.c (main): Likewise.
* tests/test-c32stombs.c (main): Likewise.
* tests/test-c32tolower.c (main): Likewise.
* tests/test-c32toupper.c (main): Likewise.
* tests/test-c32width.c (main): Likewise.
* tests/test-call_once2.c (once_contender_thread, test_once): Likewise.
* tests/test-carray_list.c (check_equals, main): Likewise.
* tests/test-cbrt.h (test_function): Likewise.
* tests/test-ceil2.c (main): Likewise.
* tests/test-ceilf2.c (main): Likewise.
* tests/test-count-leading-zeros.c (TEST_COUNT_LEADING_ZEROS): Likewise.
* tests/test-count-one-bits.c (TEST_COUNT_ONE_BITS): Likewise.
* tests/test-count-trailing-zeros.c (TEST_COUNT_TRAILING_ZEROS):
Likewise.
* tests/test-crc.c (main): Likewise.
* tests/test-des.c (main, cipher): Likewise.
* tests/test-di-set.c (main): Likewise.
* tests/test-digest.h (test_digest_on_files): Likewise.
* tests/test-dirent-safer.c (main): Likewise.
* tests/test-dirname.c (main): Likewise.
* tests/test-dprintf-posix2.c (main): Likewise.
* tests/test-dup-safer.c (main): Likewise.
* tests/test-dup3.c (main): Likewise.
* tests/test-dynarray.c (main): Likewise.
* tests/test-exec-child.c (main): Likewise.
* tests/test-execle-main.c (get_environ_assignment): Likewise.
* tests/test-execute-child.c (main): Likewise.
* tests/test-execute-main.c (main): Likewise.
* tests/test-execute-script.c (main): Likewise.
* tests/test-execve-main.c (get_environ_assignment): Likewise.
* tests/test-execvpe-main.c (get_environ_assignment): Likewise.
* tests/test-exp.h (test_function): Likewise.
* tests/test-exp2.h (test_function): Likewise.
* tests/test-explicit_bzero.c (test_stack): Likewise.
* tests/test-expm1.h (test_function): Likewise.
* tests/test-fabs.h (test_function): Likewise.
* tests/test-fchdir.c (main): Likewise.
* tests/test-fdatasync.c (main): Likewise.
* tests/test-fdopen.c (COUNT): Likewise.
* tests/test-fenv-except-trapping-1.c (main): Likewise.
* tests/test-ffs.c (naive, main): Likewise.
* tests/test-ffsl.c (naive, main): Likewise.
* tests/test-ffsll.c (naive, main): Likewise.
* tests/test-filemode.c (main): Likewise.
* tests/test-filenamecat.c (main): Likewise.
* tests/test-filevercmp.c (main): Likewise.
* tests/test-float-h.c (test_float, test_double, test_long_double):
Likewise.
* tests/test-floor2.c (main): Likewise.
* tests/test-floorf2.c (main): Likewise.
* tests/test-fma2.h (test_function): Likewise.
* tests/test-fmod.h (test_function): Likewise.
* tests/test-fnmatch-w32.c (main): Likewise.
* tests/test-fprintf-posix3.c (main): Likewise.
* tests/test-fpurge.c (main): Likewise.
* tests/test-free.c (N, __has_feature): Likewise.
* tests/test-frexp.h (test_function): Likewise.
* tests/test-fsync.c (main): Likewise.
* tests/test-fts.c (needles, main): Likewise.
* tests/test-gc-arcfour.c (main): Likewise.
* tests/test-gc-arctwo.c (main): Likewise.
* tests/test-gc-des.c (main): Likewise.
* tests/test-gc-hmac-md5.c (main): Likewise.
* tests/test-gc-hmac-sha1.c (main): Likewise.
* tests/test-gc-hmac-sha256.c (main): Likewise.
* tests/test-gc-hmac-sha512.c (main): Likewise.
* tests/test-gc-md2.c (main): Likewise.
* tests/test-gc-md4.c (main): Likewise.
* tests/test-gc-md5.c (main): Likewise.
* tests/test-gc-pbkdf2.c (main): Likewise.
* tests/test-gc-pbkdf2-sha1.c (main): Likewise.
* tests/test-gc-rijndael.c (main): Likewise.
* tests/test-gc-sha1.c (main): Likewise.
* tests/test-gc-sha256.c (main): Likewise.
* tests/test-gc-sha512.c (main): Likewise.
* tests/test-gc-sm3.c (main): Likewise.
* tests/test-getaddrinfo.c (simple): Likewise.
* tests/test-getcwd.c (test_long_name): Likewise.
* tests/test-getgroups.c (main): Likewise.
* tests/test-getlogin_r.c (main): Likewise.
* tests/test-getndelim2.c (main): Likewise.
* tests/test-getopt.h (test_getopt): Likewise.
* tests/test-getopt_long.h (test_getopt_long, test_getopt_long_posix):
Likewise.
* tests/test-getrusage.c (main): Likewise.
* tests/test-getusershell.c (second_pass): Likewise.
* tests/test-hash.c (main): Likewise.
* tests/test-hash_map.c (check_equals, main): Likewise.
* tests/test-hash_set.c (check_equals, string_hashcode, main): Likewise.
* tests/test-hmac-md5.c (hmac_check): Likewise.
* tests/test-hmac-sha1.c (hmac_check): Likewise.
* tests/test-hmac-sha256.c (hmac_check): Likewise.
* tests/test-hmac-sha512.c (hmac_check): Likewise.
* tests/test-hypot.h (test_function): Likewise.
* tests/test-idpriv-drop.c (main): Likewise.
* tests/test-idpriv-droptemp.c (main): Likewise.
* tests/test-ieee754-h.c (main): Likewise.
* tests/test-ilogb.h (test_function): Likewise.
* tests/test-ino-map.c (INO_MAP_INIT): Likewise.
* tests/test-integer_length.c (naive, main): Likewise.
* tests/test-integer_length_l.c (naive, main): Likewise.
* tests/test-integer_length_ll.c (naive, main): Likewise.
* tests/test-isalnum_l.c (test_single_locale_common): Likewise.
* tests/test-isalpha_l.c (test_single_locale_common): Likewise.
* tests/test-isblank.c (main): Likewise.
* tests/test-isblank_l.c (test_single_locale_common): Likewise.
* tests/test-iscntrl_l.c (test_single_locale_common): Likewise.
* tests/test-isdigit_l.c (test_single_locale_common): Likewise.
* tests/test-isgraph_l.c (test_single_locale_common): Likewise.
* tests/test-islower_l.c (test_single_locale_common): Likewise.
* tests/test-isprint_l.c (test_single_locale_common): Likewise.
* tests/test-ispunct_l.c (test_single_locale_common): Likewise.
* tests/test-isspace_l.c (test_single_locale_common): Likewise.
* tests/test-isupper_l.c (test_single_locale_common): Likewise.
* tests/test-iswdigit.c (main): Likewise.
* tests/test-iswpunct.c (main): Likewise.
* tests/test-iswxdigit.c (main): Likewise.
* tests/test-isxdigit_l.c (test_single_locale_common): Likewise.
* tests/test-ldexp.h (test_function): Likewise.
* tests/test-ldexp-ieee.h (test_function): Likewise.
* tests/test-libtextstyle.c (main): Likewise.
* tests/test-linkat.c (main): Likewise.
* tests/test-linked_list.c (check_equals, main): Likewise.
* tests/test-linkedhash_list.c (check_equals, main): Likewise.
* tests/test-linkedhash_map.c (check_equals, main): Likewise.
* tests/test-linkedhash_set.c (check_equals, string_hashcode, main):
Likewise.
* tests/test-localename.c (test_locale_name, test_locale_name_thread):
Likewise.
* tests/test-lock.c (check_accounts, gl_lock_define_initialized,
test_lock, gl_rwlock_define_initialized, test_rwlock,
reclock_mutator_thread, test_recursive_lock, once_contender_thread,
test_once): Likewise.
* tests/test-log.h (test_function): Likewise.
* tests/test-log10.h (test_function): Likewise.
* tests/test-log1p.h (test_function): Likewise.
* tests/test-log2.h (test_function): Likewise.
* tests/test-logb.h (test_function): Likewise.
* tests/test-login_tty.c (main): Likewise.
* tests/test-malloca.c (main): Likewise.
* tests/test-mbrlen.c (main): Likewise.
* tests/test-mbrlen-w32.c (test_one_locale, main): Likewise.
* tests/test-mbrtoc16.c (main): Likewise.
* tests/test-mbrtoc16-w32.c (test_one_locale, main): Likewise.
* tests/test-mbrtoc32.c (main): Likewise.
* tests/test-mbrtoc32-w32.c (test_one_locale, main): Likewise.
* tests/test-mbrtowc.c (main): Likewise.
* tests/test-mbrtowc-w32.c (test_one_locale, main): Likewise.
* tests/test-mbsnrtoc32s.c (main): Likewise.
* tests/test-mbsnrtowcs.c (main): Likewise.
* tests/test-mbsrtoc32s.c (main): Likewise.
* tests/test-mbsrtowcs.c (main): Likewise.
* tests/test-mbstoc32s.c (main): Likewise.
* tests/test-mbstowcs.c (main): Likewise.
* tests/test-md2-buffer.c (main): Likewise.
* tests/test-md4-buffer.c (main): Likewise.
* tests/test-md5-buffer.c (main): Likewise.
* tests/test-memalign.c (main): Likewise.
* tests/test-memcasecmp.c (main): Likewise.
* tests/test-memchr.c (main): Likewise.
* tests/test-memchr2.c (main): Likewise.
* tests/test-memcmp.c (main): Likewise.
* tests/test-memmem.c (main): Likewise.
* tests/test-memrchr.c (main): Likewise.
* tests/test-memset_explicit.c (test_stack): Likewise.
* tests/test-mkfifoat.c (main): Likewise.
* tests/test-modf.h (test_function): Likewise.
* tests/test-mountlist.c (main): Likewise.
* tests/test-mtx.c (check_accounts, lock_mutator_thread, test_mtx_plain,
reclock_mutator_thread, test_mtx_recursive): Likewise.
* tests/test-nl_langinfo2.c (main): Likewise.
* tests/test-nonblocking-misc.h (init_data): Likewise.
* tests/test-nstrftime.h (posixtm_test, tzalloc_test, quarter_test):
Likewise.
* tests/test-obstack-printf.h (test_function): Likewise.
* tests/test-obstack-zprintf-big.c (main): Likewise.
* tests/test-obstack-zprintf-posix.c (RESULT_EQ): Likewise.
* tests/test-open.h (test_open): Likewise.
* tests/test-openat-safer.c (main): Likewise.
* tests/test-options.c (test_getopt_long, test_getopt_long_posix):
Likewise.
* tests/test-pagealign_alloc.c (main): Likewise.
* tests/test-parse-datetime.c (main): Likewise.
* tests/test-perror2.c (main): Likewise.
* tests/test-pipe-filter-gi1.c (done_read): Likewise.
* tests/test-pipe-filter-ii1.c (done_read): Likewise.
* tests/test-pipe2.c (main): Likewise.
* tests/test-popen.h (main): Likewise.
* tests/test-posix_memalign.c (main): Likewise.
* tests/test-posix_spawn-script.c (main): Likewise.
* tests/test-posix_spawnp-script.c (main): Likewise.
* tests/test-posixtm.c (main): Likewise.
* tests/test-pread.c (main): Likewise.
* tests/test-pthread-mutex.c (check_accounts, lock_mutator_thread,
test_pthread_mutex_normal, reclock_mutator_thread,
test_pthread_mutex_recursive): Likewise.
* tests/test-pthread-once2.c (once_contender_thread, test_once):
Likewise.
* tests/test-pthread-rwlock.c (check_accounts, rwlock_mutator_thread,
test_rwlock): Likewise.
* tests/test-pthread-spin.c (check_accounts, lock_mutator_thread,
test_pthread_spin): Likewise.
* tests/test-pthread-tss.c (worker_thread, test_tss, dtorcheck1_thread,
test_tss_dtorcheck1, dtorcheck2_thread, test_tss_dtorcheck2,
racecheck_thread, test_tss_racecheck): Likewise.
* tests/test-ptsname.c (main): Likewise.
* tests/test-ptsname_r.c (test_errors, main): Likewise.
* tests/test-pwrite.c (main): Likewise.
* tests/test-quotearg-simple.c (main): Likewise.
* tests/test-random.c (main): Likewise.
* tests/test-random-mt.c (random_invocator_thread, main): Likewise.
* tests/test-random_r.c (test_failed, main): Likewise.
* tests/test-rawmemchr.c (main): Likewise.
* tests/test-rbtree_list.c (check_equals, main): Likewise.
* tests/test-rbtree_omap.c (check_equals, main): Likewise.
* tests/test-rbtree_oset.c (check_equals, main): Likewise.
* tests/test-rbtreehash_list.c (check_equals, main): Likewise.
* tests/test-readlink.h (test_readlink): Likewise.
* tests/test-readutmp.c (main): Likewise.
* tests/test-remainder.h (test_function): Likewise.
* tests/test-renameat.c (main): Likewise.
* tests/test-renameatu.c (main): Likewise.
* tests/test-rijndael.c (main): Likewise.
* tests/test-rint.h (test_function): Likewise.
* tests/test-round2.c (main): Likewise.
* tests/test-sameacls.c (main, room): Likewise.
* tests/test-scratch-buffer.c (main): Likewise.
* tests/test-sethostname2.c (main): Likewise.
* tests/test-sh-quote.c (main): Likewise.
* tests/test-sha1-buffer.c (main): Likewise.
* tests/test-sha224-buffer.c (main): Likewise.
* tests/test-sha256-buffer.c (main): Likewise.
* tests/test-sha3-224-buffer.c (check): Likewise.
* tests/test-sha3-256-buffer.c (check): Likewise.
* tests/test-sha3-384-buffer.c (check): Likewise.
* tests/test-sha3-512-buffer.c (check): Likewise.
* tests/test-sha384-buffer.c (main): Likewise.
* tests/test-sha512-buffer.c (main): Likewise.
* tests/test-simple-atomic.c (int_mutator_thread, ptr_mutator_thread,
main): Likewise.
* tests/test-sm3-buffer.c (test, main): Likewise.
* tests/test-snprintf.c (main): Likewise.
* tests/test-snprintf-posix.h (test_function, value, word): Likewise.
* tests/test-snzprintf-posix.h (test_function): Likewise.
* tests/test-spawn-pipe-child.c (main): Likewise.
* tests/test-spawn-pipe-main.c (main): Likewise.
* tests/test-spawn-pipe-script.c (main): Likewise.
* tests/test-spin1.c (gl_spinlock_define_initialized): Likewise.
* tests/test-spin2.c (check_accounts, gl_spinlock_define,
test_asyncsafe_spin): Likewise.
* tests/test-sprintf-posix.h (value, word): Likewise.
* tests/test-sqrt.h (test_function): Likewise.
* tests/test-ssfmalloc.c (main): Likewise.
* tests/test-stat-time.c (prepare_test, test_mtime, test_birthtime):
Likewise.
* tests/test-stpncpy.c (main): Likewise.
* tests/test-strcasestr.c (main): Likewise.
* tests/test-strchrnul.c (main): Likewise.
* tests/test-strerror_r.c (main): Likewise.
* tests/test-striconveh.c (main): Likewise.
* tests/test-striconveha.c (main): Likewise.
* tests/test-strnlen.c (main): Likewise.
* tests/test-strstr.c (main): Likewise.
* tests/test-system-quote-main.c (check_all, main): Likewise.
* tests/test-szprintf-posix.h (test_function): Likewise.
* tests/test-thread_local.c (worker_thread, test_thread_local):
Likewise.
* tests/test-times.c (main): Likewise.
* tests/test-timespec.c (main): Likewise.
* tests/test-tls.c (worker_thread, test_tls, dtorcheck1_thread,
test_tls_dtorcheck1, dtorcheck2_thread, test_tls_dtorcheck2,
racecheck_thread, test_tls_racecheck): Likewise.
* tests/test-tolower_l.c (test_single_locale_common): Likewise.
* tests/test-toupper_l.c (test_single_locale_common): Likewise.
* tests/test-trunc2.c (main): Likewise.
* tests/test-truncf2.c (main): Likewise.
* tests/test-tsearch.c (memfry, walk_tree, mangle_tree, main): Likewise.
* tests/test-tss.c (worker_thread, test_tss, dtorcheck1_thread,
test_tss_dtorcheck1, dtorcheck2_thread, test_tss_dtorcheck2,
racecheck_thread, test_tss_racecheck): Likewise.
* tests/test-userspec.c (main): Likewise.
* tests/test-vasnprintf.c (test_function): Likewise.
* tests/test-vasnprintf-big.c (main): Likewise.
* tests/test-vasnprintf-posix.c (test_function, value, word): Likewise.
* tests/test-vasnwprintf.c (test_function): Likewise.
* tests/test-vasnwprintf-big.c (main): Likewise.
* tests/test-vasnwprintf-posix.c (test_function, value, word): Likewise.
* tests/test-vasprintf.c (test_vasprintf, test_asprintf): Likewise.
* tests/test-vasprintf-posix.c (test_function, value, word): Likewise.
* tests/test-vaszprintf-posix.c (test_function): Likewise.
* tests/test-vsnprintf.c (main): Likewise.
* tests/test-wcrtomb.c (main): Likewise.
* tests/test-wcrtomb-w32.c (test_one_locale, main): Likewise.
* tests/test-wcsnrtombs.c (main): Likewise.
* tests/test-wcsrtombs.c (main): Likewise.
* tests/test-wcwidth.c (main): Likewise.
* tests/test-xstrtol.c (main): Likewise.
* tests/test-xvasprintf.c (test_xvasprintf, test_xasprintf): Likewise.
* tests/unicase/test-mapping-part2.h (main): Likewise.
* tests/unicase/test-predicate-part2.h (main): Likewise.
* tests/uniconv/test-u8-conv-from-enc.c (main): Likewise.
* tests/uniconv/test-u8-conv-to-enc.c (main): Likewise.
* tests/uniconv/test-u8-strconv-from-enc.c (main): Likewise.
* tests/uniconv/test-u8-strconv-to-enc.c (main): Likewise.
* tests/uniconv/test-u16-conv-from-enc.c (main): Likewise.
* tests/uniconv/test-u16-conv-to-enc.c (main): Likewise.
* tests/uniconv/test-u16-strconv-from-enc.c (main): Likewise.
* tests/uniconv/test-u16-strconv-to-enc.c (main): Likewise.
* tests/uniconv/test-u32-conv-from-enc.c (main): Likewise.
* tests/uniconv/test-u32-conv-to-enc.c (main): Likewise.
* tests/uniconv/test-u32-strconv-from-enc.c (main): Likewise.
* tests/uniconv/test-u32-strconv-to-enc.c (main): Likewise.
* tests/unictype/test-bidi_test.c (main): Likewise.
* tests/unictype/test-block_list.c (main): Likewise.
* tests/unictype/test-block_of.c (main): Likewise.
* tests/unictype/test-categ_byname.c (main): Likewise.
* tests/unictype/test-categ_none.c (main): Likewise.
* tests/unictype/test-categ_of.c (main): Likewise.
* tests/unictype/test-decdigit.c (main): Likewise.
* tests/unictype/test-digit.c (main): Likewise.
* tests/unictype/test-incb_of.c (main): Likewise.
* tests/unictype/test-joininggroup_of.c (main): Likewise.
* tests/unictype/test-joiningtype_of.c (main): Likewise.
* tests/unictype/test-numeric.c (main): Likewise.
* tests/unictype/test-pr_byname.c (main): Likewise.
* tests/unictype/test-pr_test.c (main): Likewise.
* tests/unictype/test-predicate-part2.h (main): Likewise.
* tests/unictype/test-scripts.c (main): Likewise.
* tests/unigbrk/test-u8-grapheme-breaks.c (test_u8_grapheme_breaks):
Likewise.
* tests/unigbrk/test-u8-grapheme-next.c (test_u8_grapheme_next):
Likewise.
* tests/unigbrk/test-u8-grapheme-prev.c (test_u8_grapheme_prev):
Likewise.
* tests/unigbrk/test-u16-grapheme-breaks.c (test_u16_grapheme_breaks):
Likewise.
* tests/unigbrk/test-u16-grapheme-next.c (test_u16_grapheme_next):
Likewise.
* tests/unigbrk/test-u16-grapheme-prev.c (test_u16_grapheme_prev):
Likewise.
* tests/unigbrk/test-u32-grapheme-breaks.c (test_u32_grapheme_breaks):
Likewise.
* tests/unigbrk/test-u32-grapheme-next.c (test_u32_grapheme_next):
Likewise.
* tests/unigbrk/test-u32-grapheme-prev.c (test_u32_grapheme_prev):
Likewise.
* tests/unigbrk/test-uc-gbrk-prop.c (main): Likewise.
* tests/unigbrk/test-uc-grapheme-breaks.c (test_uc_grapheme_breaks):
Likewise.
* tests/unigbrk/test-ulc-grapheme-breaks.c (sizeof): Likewise.
* tests/unilbrk/test-u8-possible-linebreaks.c (test_function): Likewise.
* tests/unilbrk/test-u8-width-linebreaks.c (test_function): Likewise.
* tests/unilbrk/test-u16-possible-linebreaks.c (test_function):
Likewise.
* tests/unilbrk/test-u16-width-linebreaks.c (test_function): Likewise.
* tests/unilbrk/test-u32-possible-linebreaks.c (test_function):
Likewise.
* tests/unilbrk/test-u32-width-linebreaks.c (test_function): Likewise.
* tests/unilbrk/test-uc-possible-linebreaks.c (main): Likewise.
* tests/unilbrk/test-ulc-possible-linebreaks.c (test_function):
Likewise.
* tests/unilbrk/test-ulc-width-linebreaks.c (test_function): Likewise.
* tests/uniname/test-uninames.c (name_has_alias, test_name_lookup,
test_inverse_lookup, test_alias_lookup, main): Likewise.
* tests/uninorm/test-u8-nfc.c (test_u8_nfc): Likewise.
* tests/uninorm/test-u8-nfd.c (test_u8_nfd): Likewise.
* tests/uninorm/test-u8-nfkc.c (test_u8_nfkc): Likewise.
* tests/uninorm/test-u8-nfkd.c (test_u8_nfkd): Likewise.
* tests/uninorm/test-u16-nfc.c (test_u16_nfc): Likewise.
* tests/uninorm/test-u16-nfd.c (test_u16_nfd): Likewise.
* tests/uninorm/test-u16-nfkc.c (test_u16_nfkc): Likewise.
* tests/uninorm/test-u16-nfkd.c (test_u16_nfkd): Likewise.
* tests/uninorm/test-u32-nfc.c (test_u32_nfc): Likewise.
* tests/uninorm/test-u32-nfd.c (test_u32_nfd): Likewise.
* tests/uninorm/test-u32-nfkc.c (test_u32_nfkc): Likewise.
* tests/uninorm/test-u32-nfkd.c (test_u32_nfkd): Likewise.
* tests/uninorm/test-u32-normalize-big.c (read_normalization_test_file,
test_specific, test_other, free_normalization_test_file): Likewise.
* tests/uninorm/test-uninorm-filter-nfc.c (check): Likewise.
* tests/unistdio/test-u8-asnprintf-big.c (main): Likewise.
* tests/unistdio/test-u8-asnprintf1.h (test_function): Likewise.
* tests/unistdio/test-u16-asnprintf1.h (test_function): Likewise.
* tests/unistdio/test-u32-asnprintf1.h (test_function): Likewise.
* tests/unistdio/test-ulc-asnprintf-big.c (main): Likewise.
* tests/unistdio/test-ulc-asnprintf1.h (test_function): Likewise.
* tests/unistr/test-chr.h (main): Likewise.
* tests/unistr/test-cmp.h (test_cmp): Likewise.
* tests/unistr/test-cpy-alloc.h (main): Likewise.
* tests/unistr/test-cpy.h (main): Likewise.
* tests/unistr/test-move.h (main): Likewise.
* tests/unistr/test-pcpy.h (main): Likewise.
* tests/unistr/test-set.h (NMAX, main): Likewise.
* tests/unistr/test-stpcpy.h (main): Likewise.
* tests/unistr/test-stpncpy.h (check_single, check): Likewise.
* tests/unistr/test-strcat.h (main): Likewise.
* tests/unistr/test-strchr.h (test_strchr): Likewise.
* tests/unistr/test-strcpy.h (main): Likewise.
* tests/unistr/test-strdup.h (main): Likewise.
* tests/unistr/test-strncat.h (check_single, check): Likewise.
* tests/unistr/test-strncpy.h (check_single, check): Likewise.
* tests/unistr/test-strnlen.h (check): Likewise.
* tests/unistr/test-u-strstr.h (test_u_strstr): Likewise.
* tests/unistr/test-u16-mblen.c (main): Likewise.
* tests/unistr/test-u16-mbsnlen.c (main): Likewise.
* tests/unistr/test-u16-mbtouc.h (test_function): Likewise.
* tests/unistr/test-u16-mbtoucr.c (main): Likewise.
* tests/unistr/test-u16-next.c (main): Likewise.
* tests/unistr/test-u16-prev.c (check, check_invalid, main): Likewise.
* tests/unistr/test-u16-strmblen.c (main): Likewise.
* tests/unistr/test-u16-strmbtouc.c (main): Likewise.
* tests/unistr/test-u16-uctomb.c (main): Likewise.
* tests/unistr/test-u32-mblen.c (main): Likewise.
* tests/unistr/test-u32-mbsnlen.c (main): Likewise.
* tests/unistr/test-u32-mbtouc.h (test_function): Likewise.
* tests/unistr/test-u32-mbtoucr.c (main): Likewise.
* tests/unistr/test-u32-next.c (main): Likewise.
* tests/unistr/test-u32-prev.c (check, check_invalid, main): Likewise.
* tests/unistr/test-u32-strmblen.c (main): Likewise.
* tests/unistr/test-u32-strmbtouc.c (main): Likewise.
* tests/unistr/test-u32-uctomb.c (main): Likewise.
* tests/unistr/test-u8-mblen.c (main): Likewise.
* tests/unistr/test-u8-mbsnlen.c (main): Likewise.
* tests/unistr/test-u8-mbtouc.c (test_safe_function): Likewise.
* tests/unistr/test-u8-mbtouc.h (test_function): Likewise.
* tests/unistr/test-u8-mbtoucr.c (main): Likewise.
* tests/unistr/test-u8-next.c (main): Likewise.
* tests/unistr/test-u8-prev.c (check, check_invalid, main): Likewise.
* tests/unistr/test-u8-strmblen.c (main): Likewise.
* tests/unistr/test-u8-strmbtouc.c (main): Likewise.
* tests/unistr/test-u8-uctomb.c (main): Likewise.
* tests/uniwbrk/test-u8-wordbreaks.c (main): Likewise.
* tests/uniwbrk/test-u16-wordbreaks.c (main): Likewise.
* tests/uniwbrk/test-u32-wordbreaks.c (main): Likewise.
* tests/uniwbrk/test-uc-wordbreaks.c (main): Likewise.
* tests/uniwbrk/test-ulc-wordbreaks.c (main): Likewise.
* tests/uniwidth/test-uc_width.c (main): Likewise.
* tests/uniwidth/test-uc_width2.c (main): Likewise.
* tests/virtualbox.h (is_running_under_virtualbox_kvm, num_cpus):
Likewise.
* tests/test-regex.c (bug_regex11, main): Likewise. Rename local
variables.

4 months ago-Wunused-const-variable started in GCC 6.1 not 4.4
Paul Eggert [Sat, 15 Nov 2025 22:37:29 +0000 (14:37 -0800)] 
-Wunused-const-variable started in GCC 6.1 not 4.4

I ran into this glitch when building with GCC 4.8.5 20150623 (Red
Hat 4.8.5-44) on CentOS 7.9 (cfarm112.cfarm.net), which lacked
-Wno-unused-const-variable.  The online manuals suggested that
-Wunused-const-variable was introduced in GCC 6.1.
* m4/gnulib-common.m4 (gl_CC_GNULIB_WARNINGS):
Use -Wno-unused-const-variable with GCC 6.1 and later,
not with GCC 4.4 and later.

4 months agoopenat2: fix symlink splicing bug
Paul Eggert [Sat, 15 Nov 2025 03:42:50 +0000 (19:42 -0800)] 
openat2: fix symlink splicing bug

This bug was found when using openat2 in an experimental version
of GNU tar atop an older Linux kernel.
* lib/openat2.c (do_openat2): When splicing symlink contents not at
name end, restore the slash that previously followed the symlink name.
* tests/test-openat2.c (do_test_resolve): Add tests for the bug.

4 months agoopenat2: port to O_DIRECTORY before O_NOFOLLOW
Paul Eggert [Fri, 14 Nov 2025 23:29:09 +0000 (15:29 -0800)] 
openat2: port to O_DIRECTORY before O_NOFOLLOW

* lib/openat2.c (do_openat2): Don’t assume that openat (...,
"symlink", O_DIRECTORY | O_NOFOLLOW | ...) will fail with ELOOP.
The O_DIRECTORY check might be done first, so it might fail with
ENOTDIR.  Problem discovered on Solaris 10.
* tests/test-openat2.c (do_prepare_symlinks, do_test_resolve)
(do_test_basic): Test for the portability bug.