| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* m4/realloc.m4 (gl_FUNC_REALLOC_GNU): Set
REPLACE_REALLOC_FOR_REALLOC_GNU instead of REPLACE_REALLOC.
(gl_FUNC_REALLOC_POSIX): Set REPLACE_REALLOC_FOR_REALLOC_POSIX instead
of REPLACE_REALLOC.
* m4/stdlib_h.m4 (gl_STDLIB_H_REQUIRE_DEFAULTS): Initialize the
realloc-gnu module indicator.
(gl_STDLIB_H_DEFAULTS): Initialize REPLACE_REALLOC_FOR_REALLOC_GNU,
REPLACE_REALLOC_FOR_REALLOC_POSIX, not REPLACE_REALLOC.
* modules/stdlib (Makefile.am): Substitute GNULIB_REALLOC_GNU,
REPLACE_REALLOC_FOR_REALLOC_GNU, REPLACE_REALLOC_FOR_REALLOC_POSIX, not
REPLACE_REALLOC.
* modules/realloc-posix (Depends-on, configure.ac): Test
REPLACE_REALLOC_FOR_REALLOC_POSIX instead of REPLACE_REALLOC.
* modules/realloc-gnu (Comment): Remove section.
(Depends-on): Add free-posix, malloc-gnu, xalloc-oversized.
(configure.ac): Test REPLACE_REALLOC_FOR_REALLOC_GNU instead of
REPLACE_REALLOC. Set a module indicator.
* lib/stdlib.in.h (realloc): Test REPLACE_REALLOC_FOR_REALLOC_POSIX,
REPLACE_REALLOC_FOR_REALLOC_GNU, and the respective module indicators
instead of just REPLACE_REALLOC.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* m4/malloc.m4 (gl_FUNC_MALLOC_GNU): Set REPLACE_MALLOC_FOR_MALLOC_GNU
instead of REPLACE_MALLOC.
(gl_FUNC_MALLOC_PTRDIFF, gl_FUNC_MALLOC_POSIX): Set
REPLACE_MALLOC_FOR_MALLOC_POSIX instead of REPLACE_MALLOC.
* m4/calloc.m4 (gl_FUNC_CALLOC_POSIX): Test
REPLACE_MALLOC_FOR_MALLOC_POSIX instead of REPLACE_MALLOC.
* m4/realloc.m4 (gl_FUNC_REALLOC_POSIX): Likewise.
* m4/stdlib_h.m4 (gl_STDLIB_H_REQUIRE_DEFAULTS): Initialize the
malloc-gnu module indicator.
(gl_STDLIB_H_DEFAULTS): Initialize REPLACE_MALLOC_FOR_MALLOC_GNU,
REPLACE_MALLOC_FOR_MALLOC_POSIX, not REPLACE_MALLOC.
* modules/stdlib (Makefile.am): Substitute GNULIB_MALLOC_GNU,
REPLACE_MALLOC_FOR_MALLOC_GNU, REPLACE_MALLOC_FOR_MALLOC_POSIX, not
REPLACE_MALLOC.
* modules/malloc-posix (Depends-on, configure.ac): Test
REPLACE_MALLOC_FOR_MALLOC_POSIX instead of REPLACE_MALLOC.
* modules/malloc-gnu (Comment): Remove section.
(Depends-on): Add xalloc-oversized.
(configure.ac): Test REPLACE_MALLOC_FOR_MALLOC_GNU instead of
REPLACE_MALLOC. Set a module indicator.
* lib/stdlib.in.h (malloc): Test REPLACE_MALLOC_FOR_MALLOC_POSIX,
REPLACE_MALLOC_FOR_MALLOC_GNU, and the respective module indicators
instead of just REPLACE_MALLOC.
|
| |
|
|
|
|
|
|
|
| |
* m4/realloc.m4 (gl_FUNC_REALLOC_POSIX): Don't reset REPLACE_REALLOC
to 0 if it is already 1 after gl_FUNC_REALLOC_GNU was executed.
* m4/calloc.m4 (gl_FUNC_CALLOC_POSIX): Don't reset REPLACE_CALLOC
to 0 if it is already 1 after gl_FUNC_CALLOC_GNU was executed.
|
|
|
|
|
|
|
|
|
| |
* m4/malloc.m4 (gl_FUNC_MALLOC_GNU): Don't assume that
_AC_FUNC_MALLOC_IF expands to a single shell statement.
* m4/realloc.m4 (gl_FUNC_REALLOC_GNU): Don't assume that
_AC_FUNC_REALLOC_IF expands to a single shell statement.
* m4/calloc.m4 (gl_FUNC_CALLOC_GNU): Don't assume that
_AC_FUNC_CALLOC_IF expands to a single shell statement.
|
|
|
|
|
|
| |
* m4/calloc.m4 (_AC_FUNC_CALLOC_IF):
* m4/malloc.m4 (_AC_FUNC_MALLOC_IF):
* m4/realloc.m4 (_AC_FUNC_REALLOC_IF): Use AS_CASE.
|
|
|
|
|
|
|
|
|
|
|
|
| |
* m4/calloc.m4 (_AC_FUNC_CALLOC_IF):
* m4/malloc.m4 (_AC_FUNC_MALLOC_IF):
* m4/realloc.m4 (_AC_FUNC_REALLOC_IF):
Avoid some unnecessary differences from Autoconf’s versions.
Separate our platforms into a different line so that it’s easier
to diff. Use AS_IF in case the args use AC_REQUIRE.
However, don’t bother with omitting the first newline, as
omitting the newline is not Gnulib style and the difference
doesn’t seem to matter here.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In glibc 2.30 and later, malloc, realloc and calloc reject
attempts to create objects larger than PTRDIFF_MAX bytes.
This patch changes malloc-gnu etc. to support this behavior
on non-GNU hosts. It also makes this change for malloc-posix etc.
since it’s a safety measure that ought to be in POSIX (perhaps
we can talk them into that...).
In writing this patch I found a complicated set of code that had
accumulated over the years, some written by yours truly. I got
rid of the code I couldn’t see the need for nowadays. Among other
things, the GNU realloc behavior is no longer incompatible with
the C standard, because in C17 the latter was relaxed to allow the
former. If I went too far in cleaning up, the old stuff can be
resurrected.
This change is mostly for 32-bit platforms, since practical 64-bit
platforms cannot create objects larger than PTRDIFF_MAX bytes anyway.
* doc/posix-functions/calloc.texi:
* doc/posix-functions/malloc.texi:
* doc/posix-functions/realloc.texi:
Mention ptrdiff_t issues, and go into more detail about what
the gnu extension module does.
* doc/posix-functions/realloc.texi: Fix now-obsolete commentary
about C99 vs glibc, as C17 allows the glibc behavior and POSIX
will follow suit when it gets around to it.
* lib/calloc.c, lib/malloc.c, lib/realloc.c:
Simplify by always supplying a GNU-compatible version,
as that suffices for correctness and is good enough for performance.
Include xalloc-oversized.h, and use xalloc_oversized to
check for ptrdiff_t overflow.
(NEED_CALLOC_GNU, NEED_MALLOC_GNU, NEED_REALLOC_GNU): Remove.
* m4/calloc.m4 (_AC_FUNC_CALLOC_IF):
* m4/malloc.m4 (_AC_FUNC_MALLOC_IF):
* m4/realloc.m4 (_AC_FUNC_REALLOC_IF):
Don’t start with a newline. Fix message to match behavior.
* m4/calloc.m4 (_AC_FUNC_CALLOC_IF): Don’t test for size_t overflow,
as the ptrdiff_t test is good enough.
* m4/calloc.m4 (gl_FUNC_CALLOC_GNU):
* m4/malloc.m4 (gl_FUNC_MALLOC_GNU):
* m4/realloc.m4 (gl_FUNC_REALLOC_GNU):
Do not define HAVE_CALLOC_GNU, HAVE_MALLOC_GNU, HAVE_REALLOC_GNU.
It’s not worth the aggravation of maintaining these, as they
are confusing (they don’t really mean GNU-compatible anyway).
Don’t bother testing for GNU behavior if we have already decided
to replace the function, since the replacement is always GNUish.
* m4/calloc.m4 (gl_FUNC_CALLOC_POSIX):
* m4/realloc.m4 (gl_FUNC_REALLOC_POSIX):
Defer to gl_FUNC_MALLOC_POSIX.
* m4/malloc.m4 (gl_FUNC_MALLOC_PTRDIFF, gl_CHECK_MALLOC_PTRDIFF):
New macros.
(gl_FUNC_MALLOC_POSIX): Use them to check for ptrdiff_t overflow.
* modules/calloc-gnu, modules/malloc-gnu, modules/realloc-gnu:
Remove no-longer-needed module indicators.
* modules/calloc-posix, modules/malloc-posix, modules/realloc-posix:
Depend on xalloc-oversized.
* modules/malloc-posix: Require gl_FUNC_MALLOC_POSIX instead of
calling it directly, so that other code can require it.
* modules/realloc-posix: Depend on free-posix and malloc-posix.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* m4/malloc.m4 (_AC_FUNC_MALLOC_IF): When cross-compiling, use the
result from native compilation.
* m4/realloc.m4 (_AC_FUNC_REALLOC_IF): Likewise.
* m4/mbrtoc32.m4 (gl_MBRTOC32_SANITYCHECK): Likewise.
* m4/mprotect.m4 (gl_FUNC_MPROTECT_WORKS): Likewise.
* m4/posix_spawn.m4 (gl_POSIX_SPAWN_SECURE): Likewise.
* m4/printf.m4 (gl_PRINTF_SIZES_C99, gl_PRINTF_INFINITE,
gl_PRINTF_INFINITE_LONG_DOUBLE, gl_PRINTF_DIRECTIVE_F,
gl_SNPRINTF_TRUNCATION_C99, gl_SNPRINTF_RETVAL_C99,
gl_SNPRINTF_DIRECTIVE_N, gl_VSNPRINTF_ZEROSIZE_C99): Likewise.
* m4/strfmon_l.m4 (gl_FUNC_STRFMON_L): Likewise.
* m4/setlocale_null.m4 (gl_FUNC_SETLOCALE_NULL): Use predetermined
result on MidnightBSD.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Reported by Gavin Smith <gavinsmith0123@gmail.com> in
<https://lists.gnu.org/archive/html/bug-gnulib/2020-09/msg00154.html>.
Based on a patch by Paul Eggert.
* m4/malloc.m4 (_AC_FUNC_MALLOC_IF): Don't require AC_HEADER_STDC. Don't
test STDC_HEADERS. Assume <stdlib.h> exists.
* m4/realloc.m4 (_AC_FUNC_REALLOC_IF): Likewise.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Suggested by Jonas Termansen <sortie@maxsi.org>.
* m4/gnulib-common.m4 (gl_COMMON_BODY): Add --enable-cross-guesses=...
option. Set gl_cross_guess_normal and gl_cross_guess_inverted.
* m4/argz.m4 (gl_FUNC_ARGZ): Obey --enable-cross-guesses for
lt_cv_sys_argz_works.
* m4/calloc.m4 (_AC_FUNC_CALLOC_IF): Obey --enable-cross-guesses for
ac_cv_func_calloc_0_nonnull.
* m4/canonicalize.m4 (gl_FUNC_REALPATH_WORKS): Obey
--enable-cross-guesses for gl_cv_func_realpath_works.
* m4/cbrtl.m4 (gl_FUNC_CBRTL): Obey --enable-cross-guesses for
gl_cv_func_cbrtl_ieee.
* m4/ceil.m4 (gl_FUNC_CEIL): Obey --enable-cross-guesses for
gl_cv_func_ceil_ieee.
* m4/ceilf.m4 (gl_FUNC_CEILF): Obey --enable-cross-guesses for
gl_cv_func_ceilf_ieee.
* m4/ceill.m4 (gl_FUNC_CEILL): Obey --enable-cross-guesses for
gl_cv_func_ceill_ieee.
* m4/chown.m4 (AC_FUNC_CHOWN): Obey --enable-cross-guesses for
ac_cv_func_chown_works.
(gl_FUNC_CHOWN): Obey --enable-cross-guesses for
gl_cv_func_chown_slash_works, gl_cv_func_chown_ctime_works.
* m4/d-ino.m4 (gl_CHECK_TYPE_STRUCT_DIRENT_D_INO): Obey
--enable-cross-guesses for gl_cv_struct_dirent_d_ino.
* m4/exp2l.m4 (gl_FUNC_EXP2L): Obey --enable-cross-guesses for
gl_cv_func_exp2l_works, gl_cv_func_exp2l_ieee.
* m4/expl.m4 (gl_FUNC_EXPL): Obey --enable-cross-guesses for
gl_cv_func_expl_works.
* m4/expm1.m4 (gl_FUNC_EXPM1): Obey --enable-cross-guesses for
gl_cv_func_expm1_ieee.
* m4/expm1l.m4 (gl_FUNC_EXPM1L): Obey --enable-cross-guesses for
gl_cv_func_expm1l_works.
* m4/fchdir.m4 (gl_FUNC_FCHDIR): Obey --enable-cross-guesses for
gl_cv_func_open_directory_works.
* m4/fchownat.m4 (gl_FUNC_FCHOWNAT_DEREF_BUG): Obey
--enable-cross-guesses for gl_cv_func_fchownat_nofollow_works.
(gl_FUNC_FCHOWNAT_EMPTY_FILENAME_BUG): Obey --enable-cross-guesses for
gl_cv_func_fchownat_empty_filename_works.
* m4/fdopendir.m4 (gl_FUNC_FDOPENDIR): Obey --enable-cross-guesses for
gl_cv_func_fdopendir_works.
* m4/floor.m4 (gl_FUNC_FLOOR): Obey --enable-cross-guesses for
gl_cv_func_floor_ieee.
* m4/floorf.m4 (gl_FUNC_FLOORF): Obey --enable-cross-guesses for
gl_cv_func_floorf_ieee.
* m4/fma.m4 (gl_FUNC_FMA_WORKS): Obey --enable-cross-guesses for
gl_cv_func_fma_works.
* m4/fmaf.m4 (gl_FUNC_FMAF_WORKS): Obey --enable-cross-guesses for
gl_cv_func_fmaf_works.
* m4/fmal.m4 (gl_FUNC_FMAL_WORKS): Obey --enable-cross-guesses for
gl_cv_func_fmal_works.
* m4/fmod.m4 (gl_FUNC_FMOD): Obey --enable-cross-guesses for
gl_cv_func_fmod_ieee.
* m4/fmodf.m4 (gl_FUNC_FMODF): Obey --enable-cross-guesses for
gl_cv_func_fmodf_ieee.
* m4/fmodl.m4 (gl_FUNC_FMODL): Obey --enable-cross-guesses for
gl_cv_func_fmodl_ieee.
* m4/fpurge.m4 (gl_FUNC_FPURGE): Obey --enable-cross-guesses for
gl_cv_func_fpurge_works.
* m4/getcwd-path-max.m4 (gl_FUNC_GETCWD_PATH_MAX): Obey
--enable-cross-guesses for gl_cv_func_getcwd_path_max.
* m4/getcwd.m4 (gl_FUNC_GETCWD_NULL): Obey --enable-cross-guesses for
gl_cv_func_getcwd_null.
(gl_FUNC_GETCWD): Update for getcwd-path-max.m4 change.
* m4/getdelim.m4 (gl_FUNC_GETDELIM): Obey --enable-cross-guesses for
gl_cv_func_working_getdelim.
* m4/getgroups.m4 (AC_FUNC_GETGROUPS): Obey --enable-cross-guesses for
ac_cv_func_getgroups_works. Keep this macro also in Autoconf >= 2.70.
(gl_FUNC_GETGROUPS): Obey --enable-cross-guesses for
gl_cv_func_getgroups_works.
* m4/getline.m4 (gl_FUNC_GETLINE): Obey --enable-cross-guesses for
am_cv_func_working_getline.
* m4/getopt.m4 (gl_GETOPT_CHECK_HEADERS): Obey --enable-cross-guesses
for gl_cv_func_getopt_gnu.
* m4/gettimeofday.m4 (gl_FUNC_GETTIMEOFDAY_CLOBBER): Obey
--enable-cross-guesses for gl_cv_func_gettimeofday_clobber.
* m4/hypot.m4 (gl_FUNC_HYPOT): Obey --enable-cross-guesses for
gl_cv_func_hypot_ieee.
* m4/hypotf.m4 (gl_FUNC_HYPOTF): Obey --enable-cross-guesses for
gl_cv_func_hypotf_ieee.
* m4/hypotl.m4 (gl_FUNC_HYPOTL): Obey --enable-cross-guesses for
gl_cv_func_hypotl_ieee.
* m4/iconv_open-utf.m4 (gl_FUNC_ICONV_OPEN_UTF_SUPPORT): Obey
--enable-cross-guesses for gl_cv_func_iconv_supports_utf.
* m4/link.m4 (gl_FUNC_LINK): Obey --enable-cross-guesses for
gl_cv_func_link_works.
* m4/linkat.m4 (gl_FUNC_LINKAT): Obey --enable-cross-guesses for
gl_cv_func_linkat_slash.
* m4/log.m4 (gl_FUNC_LOG): Obey --enable-cross-guesses for
gl_cv_func_log_ieee.
* m4/logf.m4 (gl_FUNC_LOGF): Obey --enable-cross-guesses for
gl_cv_func_logf_ieee.
* m4/logl.m4 (gl_FUNC_LOGL_WORKS): Obey --enable-cross-guesses for
gl_cv_func_logl_works.
* m4/log10.m4 (gl_FUNC_LOG10): Obey --enable-cross-guesses for
gl_cv_func_log10_ieee.
* m4/log10f.m4 (gl_FUNC_LOG10F): Obey --enable-cross-guesses for
gl_cv_func_log10f_ieee.
* m4/log10l.m4 (gl_FUNC_LOG10L_WORKS): Obey --enable-cross-guesses for
gl_cv_func_log10l_works.
* m4/log1p.m4 (gl_FUNC_LOG1P): Obey --enable-cross-guesses for
gl_cv_func_log1p_ieee.
* m4/log1pf.m4 (gl_FUNC_LOG1PF): Obey --enable-cross-guesses for
gl_cv_func_log1pf_ieee.
* m4/log1pl.m4 (gl_FUNC_LOG1PL): Obey --enable-cross-guesses for
gl_cv_func_log1pl_ieee.
* m4/log2.m4 (gl_FUNC_LOG2): Obey --enable-cross-guesses for
gl_cv_func_log2_ieee.
* m4/log2f.m4 (gl_FUNC_LOG2F): Obey --enable-cross-guesses for
gl_cv_func_log2f_ieee.
* m4/lstat.m4 (gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK): Obey
--enable-cross-guesses for
gl_cv_func_lstat_dereferences_slashed_symlink.
* m4/malloc.m4 (_AC_FUNC_MALLOC_IF): Obey --enable-cross-guesses for
ac_cv_func_malloc_0_nonnull. Keep this macro also in Autoconf >= 2.70.
* m4/mbrtowc.m4 (gl_MBRTOWC_C_LOCALE): Obey --enable-cross-guesses for
gl_cv_C_locale_sans_EILSEQ.
* m4/memchr.m4 (gl_FUNC_MEMCHR): Obey --enable-cross-guesses for
gl_cv_func_memchr_works.
* m4/memmem.m4 (gl_FUNC_MEMMEM_SIMPLE): Obey --enable-cross-guesses for
gl_cv_func_memmem_works_always.
(gl_FUNC_MEMMEM): Obey --enable-cross-guesses for
gl_cv_func_memmem_works_fast.
* m4/mkdir.m4 (gl_FUNC_MKDIR): Obey --enable-cross-guesses for
gl_cv_func_mkdir_trailing_slash_works,
gl_cv_func_mkdir_trailing_dot_works.
* m4/mkfifo.m4 (gl_FUNC_MKFIFO): Obey --enable-cross-guesses for
gl_cv_func_mkfifo_works.
* m4/mknod.m4 (gl_FUNC_MKNOD): Obey --enable-cross-guesses for
gl_cv_func_mknod_works.
* m4/mkstemp.m4 (gl_FUNC_MKSTEMP): Obey --enable-cross-guesses for
gl_cv_func_working_mkstemp.
* m4/mktime.m4 (gl_FUNC_MKTIME_WORKS): Obey --enable-cross-guesses for
gl_cv_func_working_mktime.
* m4/modf.m4 (gl_FUNC_MODF): Obey --enable-cross-guesses for
gl_cv_func_modf_ieee.
* m4/modff.m4 (gl_FUNC_MODFF): Obey --enable-cross-guesses for
gl_cv_func_modff_ieee.
* m4/modfl.m4 (gl_FUNC_MODFL): Obey --enable-cross-guesses for
gl_cv_func_modfl_ieee.
* m4/nanosleep.m4 (gl_FUNC_NANOSLEEP): Obey --enable-cross-guesses for
gl_cv_func_nanosleep.
* m4/perror.m4 (gl_FUNC_PERROR): Obey --enable-cross-guesses for
gl_cv_func_perror_works.
* m4/printf.m4 (gl_PRINTF_SIZES_C99): Obey --enable-cross-guesses for
gl_cv_func_printf_sizes_c99.
(gl_PRINTF_INFINITE): Obey --enable-cross-guesses for
gl_cv_func_printf_infinite.
(gl_PRINTF_INFINITE_LONG_DOUBLE): Obey --enable-cross-guesses for
gl_cv_func_printf_infinite_long_double.
(gl_PRINTF_DIRECTIVE_A): Obey --enable-cross-guesses for
gl_cv_func_printf_directive_a.
(gl_PRINTF_DIRECTIVE_F): Obey --enable-cross-guesses for
gl_cv_func_printf_directive_f.
(gl_PRINTF_FLAG_ZERO): Obey --enable-cross-guesses for
gl_cv_func_printf_flag_zero.
(gl_PRINTF_ENOMEM): Obey --enable-cross-guesses for
gl_cv_func_printf_enomem.
(gl_SNPRINTF_TRUNCATION_C99): Obey --enable-cross-guesses for
gl_cv_func_snprintf_truncation_c99.
(gl_SNPRINTF_RETVAL_C99): Obey --enable-cross-guesses for
gl_cv_func_snprintf_retval_c99.
(gl_SNPRINTF_DIRECTIVE_N): Obey --enable-cross-guesses for
gl_cv_func_snprintf_directive_n.
(gl_VSNPRINTF_ZEROSIZE_C99): Obey --enable-cross-guesses for
gl_cv_func_vsnprintf_zerosize_c99.
* m4/pselect.m4 (gl_FUNC_PSELECT): Obey --enable-cross-guesses for
gl_cv_func_pselect_detects_ebadf.
* m4/pthread_rwlock_rdlock.m4 (gl_PTHREAD_RWLOCK_RDLOCK_PREFER_WRITER):
Obey --enable-cross-guesses for
gl_cv_pthread_rwlock_rdlock_prefer_writer.
* m4/ptsname.m4 (gl_FUNC_PTSNAME): Obey --enable-cross-guesses for
gl_cv_func_ptsname_sets_errno.
* m4/putenv.m4 (gl_FUNC_PUTENV): Obey --enable-cross-guesses for
gl_cv_func_svid_putenv.
* m4/readlink.m4 (gl_FUNC_READLINK): Obey --enable-cross-guesses for
gl_cv_func_readlink_works.
* m4/realloc.m4 (_AC_FUNC_REALLOC_IF): Obey --enable-cross-guesses for
ac_cv_func_realloc_0_nonnull. Keep this macro also in Autoconf >= 2.70.
* m4/regex.m4 (gl_REGEX): Obey --enable-cross-guesses for
gl_cv_func_re_compile_pattern_working.
* m4/remainder.m4 (gl_FUNC_REMAINDER): Obey --enable-cross-guesses for
gl_cv_func_remainder_ieee.
* m4/remainderf.m4 (gl_FUNC_REMAINDERF): Obey --enable-cross-guesses for
gl_cv_func_remainderf_ieee.
* m4/remainderl.m4 (gl_FUNC_REMAINDERL): Obey --enable-cross-guesses for
gl_cv_func_remainderl_ieee.
* m4/rintl.m4 (gl_FUNC_RINTL): Obey --enable-cross-guesses for
gl_cv_func_rintl_works.
* m4/rmdir.m4 (gl_FUNC_RMDIR): Obey --enable-cross-guesses for
gl_cv_func_rmdir_works.
* m4/round.m4 (gl_FUNC_ROUND): Obey --enable-cross-guesses for
gl_cv_func_round_ieee.
* m4/roundf.m4 (gl_FUNC_ROUNDF): Obey --enable-cross-guesses for
gl_cv_func_roundf_ieee.
* m4/roundl.m4 (gl_FUNC_ROUNDL): Obey --enable-cross-guesses for
gl_cv_func_roundl_ieee.
* m4/select.m4 (gl_FUNC_SELECT): Obey --enable-cross-guesses for
gl_cv_func_select_detects_ebadf.
* m4/setenv.m4 (gl_FUNC_SETENV): Obey --enable-cross-guesses for
gl_cv_func_setenv_works.
(gl_FUNC_UNSETENV): Obey --enable-cross-guesses for
gl_cv_func_unsetenv_works.
* m4/signbit.m4 (gl_SIGNBIT): Obey --enable-cross-guesses for
gl_cv_func_signbit, gl_cv_func_signbit_gcc.
* m4/sleep.m4 (gl_FUNC_SLEEP): Obey --enable-cross-guesses for
gl_cv_func_sleep_works.
* m4/stat.m4 (gl_FUNC_STAT): Obey --enable-cross-guesses for
gl_cv_func_stat_file_slash.
* m4/stpncpy.m4 (gl_FUNC_STPNCPY): Obey --enable-cross-guesses for
gl_cv_func_stpncpy.
* m4/strcasestr.m4 (gl_FUNC_STRCASESTR_SIMPLE): Obey
--enable-cross-guesses for gl_cv_func_strcasestr_works_always.
(gl_FUNC_STRCASESTR): Obey --enable-cross-guesses for
gl_cv_func_strcasestr_linear.
* m4/strerror.m4 (gl_FUNC_STRERROR): Obey --enable-cross-guesses for
gl_cv_func_working_strerror.
(gl_FUNC_STRERROR_0): Obey --enable-cross-guesses for
gl_cv_func_strerror_0_works.
* m4/strerror_r.m4 (gl_FUNC_STRERROR_R_WORKS): Obey
--enable-cross-guesses for gl_cv_func_strerror_r_works.
* m4/strstr.m4 (gl_FUNC_STRSTR_SIMPLE): Obey --enable-cross-guesses for
gl_cv_func_strstr_works_always.
(gl_FUNC_STRSTR): Obey --enable-cross-guesses for
gl_cv_func_strstr_linear.
* m4/strtod.m4 (gl_FUNC_STRTOD): Obey --enable-cross-guesses for
gl_cv_func_strtod_works.
* m4/strtold.m4 (gl_FUNC_STRTOLD): Obey --enable-cross-guesses for
gl_cv_func_strtold_works.
* m4/symlink.m4 (gl_FUNC_SYMLINK): Obey --enable-cross-guesses for
gl_cv_func_symlink_works.
* m4/symlinkat.m4 (gl_FUNC_SYMLINKAT): Obey --enable-cross-guesses for
gl_cv_func_symlinkat_works.
* m4/trunc.m4 (gl_FUNC_TRUNC): Obey --enable-cross-guesses for
gl_cv_func_trunc_ieee.
* m4/truncf.m4 (gl_FUNC_TRUNCF): Obey --enable-cross-guesses for
gl_cv_func_truncf_ieee.
* m4/truncl.m4 (gl_FUNC_TRUNCL): Obey --enable-cross-guesses for
gl_cv_func_truncl_ieee.
* m4/tzset.m4 (gl_FUNC_TZSET_CLOBBER): Obey --enable-cross-guesses for
gl_cv_func_tzset_clobber.
* m4/ungetc.m4 (gl_FUNC_UNGETC_WORKS): Obey --enable-cross-guesses for
gl_cv_func_ungetc_works.
* m4/unlink.m4 (gl_FUNC_UNLINK): Obey --enable-cross-guesses for
gl_cv_func_unlink_honors_slashes, gl_cv_func_unlink_parent_fails.
* m4/usleep.m4 (gl_FUNC_USLEEP): Obey --enable-cross-guesses for
gl_cv_func_usleep_works.
* m4/utimens.m4 (gl_UTIMENS): Obey --enable-cross-guesses for
gl_cv_func_futimesat_works.
* m4/utimes.m4 (gl_FUNC_UTIMES): Obey --enable-cross-guesses for
gl_cv_func_working_utimes.
* m4/wcwidth.m4 (gl_FUNC_WCWIDTH): Obey --enable-cross-guesses for
gl_cv_func_wcwidth_works.
* m4/glob.m4 (gl_GLOB): When cross-compiling, don't create symlinks for
testing. Obey --enable-cross-guesses for gl_cv_glob_lists_symlinks.
* m4/rename.m4 (gl_FUNC_RENAME): When cross-compiling, don't create
links for testing. Obey --enable-cross-guesses for
gl_cv_func_rename_slash_dst_works, gl_cv_func_rename_slash_src_works,
gl_cv_func_rename_link_works, gl_cv_func_rename_dest_works.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Reported by Necktwi Ozfguah <necktwi@ferryfair.com>.
* m4/calloc.m4 (_AC_FUNC_CALLOC_IF): Add cross-compilation guesses for
musl libc.
* m4/canonicalize.m4 (gl_FUNC_REALPATH_WORKS): Likewise.
* m4/cbrtl.m4 (gl_FUNC_CBRTL): Likewise.
* m4/ceil.m4 (gl_FUNC_CEIL): Likewise.
* m4/ceilf.m4 (gl_FUNC_CEILF): Likewise.
* m4/ceill.m4 (gl_FUNC_CEILL): Likewise.
* m4/chown.m4 (gl_FUNC_CHOWN): Likewise.
* m4/d-ino.m4 (gl_CHECK_TYPE_STRUCT_DIRENT_D_INO): Likewise.
* m4/exp2l.m4 (gl_FUNC_EXP2L): Likewise.
* m4/expl.m4 (gl_FUNC_EXPL): Likewise.
* m4/expm1.m4 (gl_FUNC_EXPM1): Likewise.
* m4/expm1l.m4 (gl_FUNC_EXPM1L): Likewise.
* m4/fdopendir.m4 (gl_FUNC_FDOPENDIR): Likewise.
* m4/floor.m4 (gl_FUNC_FLOOR): Likewise.
* m4/floorf.m4 (gl_FUNC_FLOORF): Likewise.
* m4/fmod.m4 (gl_FUNC_FMOD): Likewise.
* m4/fmodf.m4 (gl_FUNC_FMODF): Likewise.
* m4/fmodl.m4 (gl_FUNC_FMODL): Likewise.
* m4/fnmatch.m4 (gl_FUNC_FNMATCH_POSIX): Likewise.
* m4/fpurge.m4 (gl_FUNC_FPURGE): Likewise.
* m4/getcwd.m4 (gl_FUNC_GETCWD_NULL): Likewise.
* m4/getcwd-abort-bug.m4 (gl_FUNC_GETCWD_ABORT_BUG): Likewise.
* m4/getdelim.m4 (gl_FUNC_GETDELIM): Likewise.
* m4/getgroups.m4 (AC_FUNC_GETGROUPS, gl_FUNC_GETGROUPS): Likewise.
* m4/getline.m4 (gl_FUNC_GETLINE): Likewise.
* m4/gettimeofday.m4 (gl_FUNC_GETTIMEOFDAY_CLOBBER): Likewise.
* m4/hypot.m4 (gl_FUNC_HYPOT): Likewise.
* m4/hypotf.m4 (gl_FUNC_HYPOTF): Likewise.
* m4/hypotl.m4 (gl_FUNC_HYPOTL): Likewise.
* m4/iconv_open-utf.m4 (gl_FUNC_ICONV_OPEN_UTF_SUPPORT): Likewise.
* m4/link-follow.m4 (gl_FUNC_LINK_FOLLOWS_SYMLINK): Likewise.
* m4/log.m4 (gl_FUNC_LOG): Likewise.
* m4/logf.m4 (gl_FUNC_LOGF): Likewise.
* m4/logl.m4 (gl_FUNC_LOGL_WORKS): Likewise.
* m4/log10.m4 (gl_FUNC_LOG10): Likewise.
* m4/log10f.m4 (gl_FUNC_LOG10F): Likewise.
* m4/log10l.m4 (gl_FUNC_LOG10L): Likewise.
* m4/log1p.m4 (gl_FUNC_LOG1P): Likewise.
* m4/log1pf.m4 (gl_FUNC_LOG1PF): Likewise.
* m4/log1pl.m4 (gl_FUNC_LOG1PL): Likewise.
* m4/log2.m4 (gl_FUNC_LOG2): Likewise.
* m4/log2f.m4 (gl_FUNC_LOG2F): Likewise.
* m4/malloc.m4 (_AC_FUNC_MALLOC_IF): Likewise.
* m4/mkdir.m4 (gl_FUNC_MKDIR): Likewise.
* m4/mkstemp.m4 (gl_FUNC_MKSTEMP): Likewise.
* m4/modf.m4 (gl_FUNC_MODF): Likewise.
* m4/modff.m4 (gl_FUNC_MODFF): Likewise.
* m4/modfl.m4 (gl_FUNC_MODFL): Likewise.
* m4/perror.m4 (gl_FUNC_PERROR): Likewise.
* m4/printf.m4 (gl_PRINTF_SIZES_C99, gl_PRINTF_INFINITE,
gl_PRINTF_INFINITE_LONG_DOUBLE, gl_PRINTF_DIRECTIVE_A,
gl_PRINTF_DIRECTIVE_F, gl_PRINTF_FLAG_ZERO, gl_SNPRINTF_TRUNCATION_C99,
gl_SNPRINTF_RETVAL_C99, gl_SNPRINTF_DIRECTIVE_N,
gl_VSNPRINTF_ZEROSIZE_C99): Likewise.
* m4/ptsname.m4 (gl_FUNC_PTSNAME): Likewise.
* m4/putenv.m4 (gl_FUNC_PUTENV): Likewise.
* m4/realloc.m4 (_AC_FUNC_REALLOC_IF): Likewise.
* m4/remainder.m4 (gl_FUNC_REMAINDER): Likewise.
* m4/remainderf.m4 (gl_FUNC_REMAINDERF): Likewise.
* m4/remainderl.m4 (gl_FUNC_REMAINDERL): Likewise.
* m4/rintl.m4 (gl_FUNC_RINTL): Likewise.
* m4/round.m4 (gl_FUNC_ROUND): Likewise.
* m4/roundf.m4 (gl_FUNC_ROUNDF): Likewise.
* m4/roundl.m4 (gl_FUNC_ROUNDL): Likewise.
* m4/setenv.m4 (gl_FUNC_SETENV): Likewise.
* m4/signbit.m4 (gl_SIGNBIT): Likewise.
* m4/sleep.m4 (gl_FUNC_SLEEP): Likewise.
* m4/stpncpy.m4 (gl_FUNC_STPNCPY): Likewise.
* m4/strerror.m4 (gl_FUNC_STRERROR, gl_FUNC_STRERROR_0): Likewise.
* m4/strtod.m4 (gl_FUNC_STRTOD): Likewise.
* m4/strtold.m4 (gl_FUNC_STRTOLD): Likewise.
* m4/trunc.m4 (gl_FUNC_TRUNC): Likewise.
* m4/truncf.m4 (gl_FUNC_TRUNCF): Likewise.
* m4/truncl.m4 (gl_FUNC_TRUNCL): Likewise.
* m4/tzset.m4 (gl_FUNC_TZSET_CLOBBER): Likewise.
* m4/ungetc.m4 (gl_FUNC_UNGETC_WORKS): Likewise.
* m4/usleep.m4 (gl_FUNC_USLEEP): Likewise.
* m4/utimes.m4 (gl_FUNC_UTIMES): Likewise.
* m4/wcwidth.m4 (gl_FUNC_WCWIDTH): Likewise.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* m4/chown.m4 (gl_FUNC_CHOWN_FOLLOWS_SYMLINK): When cross-compiling, add
prefix 'guessing ' to gl_cv_func_chown_follows_symlink.
* m4/fchownat.m4 (gl_FUNC_FCHOWNAT_DEREF_BUG): When cross-compiling, add
prefix 'guessing ' to gl_cv_func_fchownat_nofollow_works.
* m4/getcwd-abort-bug.m4 (gl_FUNC_GETCWD_ABORT_BUG): When
cross-compiling, add prefix 'guessing ' to gl_cv_func_getcwd_abort_bug.
* m4/glob.m4 (gl_GLOB): When cross-compiling, add prefix 'guessing ' to
gl_cv_glob_lists_symlinks.
* m4/malloc.m4 (_AC_FUNC_MALLOC_IF): When cross-compiling, add prefix
'guessing ' to ac_cv_func_malloc_0_nonnull.
* m4/realloc.m4 (_AC_FUNC_REALLOC_IF): When cross-compiling, add prefix
'guessing ' to ac_cv_func_realloc_0_nonnull.
* m4/poll.m4 (gl_FUNC_POLL): When cross-compiling, add prefix
'guessing ' to gl_cv_func_poll.
* m4/iconv_open-utf.m4 (gl_FUNC_ICONV_OPEN_UTF_SUPPORT): When cross-
compiling, add prefix 'guessing ' to gl_cv_func_iconv_supports_utf.
* m4/iconv_open.m4 (gl_FUNC_ICONV_OPEN): Update accordingly.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* m4/calloc.m4: Add GNU/Hurd guess.
* m4/cbrtl.m4: Likewise.
* m4/ceil.m4: Likewise.
* m4/ceilf.m4: Likewise.
* m4/ceill.m4: Likewise.
* m4/chown.m4: Likewise.
* m4/duplocale.m4: Likewise.
* m4/exp2l.m4: Likewise.
* m4/expm1.m4: Likewise.
* m4/fchdir.m4: Likewise.
* m4/floor.m4: Likewise.
* m4/floorf.m4: Likewise.
* m4/fmod.m4: Likewise.
* m4/fmodf.m4: Likewise.
* m4/fmodl.m4: Likewise.
* m4/getcwd.m4: Likewise.
* m4/getgroups.m4: Likewise.
* m4/gettimeofday.m4: Likewise.
* m4/hypot.m4: Likewise.
* m4/hypotf.m4: Likewise.
* m4/hypotl.m4: Likewise.
* m4/link-follow.m4: Likewise.
* m4/link.m4: Likewise.
* m4/linkat.m4: Likewise.
* m4/log.m4: Likewise.
* m4/log10.m4: Likewise.
* m4/log10f.m4: Likewise.
* m4/log1p.m4: Likewise.
* m4/log1pf.m4: Likewise.
* m4/log1pl.m4: Likewise.
* m4/log2.m4: Likewise.
* m4/log2f.m4: Likewise.
* m4/logf.m4: Likewise.
* m4/lstat.m4: Likewise.
* m4/malloc.m4: Likewise.
* m4/mbrlen.m4: Likewise.
* m4/mbrtowc.m4: Likewise.
* m4/mkdir.m4: Likewise.
* m4/mkfifo.m4: Likewise.
* m4/mknod.m4: Likewise.
* m4/mkstemp.m4: Likewise.
* m4/modf.m4: Likewise.
* m4/modff.m4: Likewise.
* m4/modfl.m4: Likewise.
* m4/printf.m4: Likewise.
* m4/pselect.m4: Likewise.
* m4/ptsname.m4: Likewise.
* m4/putenv.m4: Likewise.
* m4/readlink.m4: Likewise.
* m4/realloc.m4: Likewise.
* m4/remainder.m4: Likewise.
* m4/remainderf.m4: Likewise.
* m4/remainderl.m4: Likewise.
* m4/rmdir.m4: Likewise.
* m4/round.m4: Likewise.
* m4/roundf.m4: Likewise.
* m4/roundl.m4: Likewise.
* m4/select.m4: Likewise.
* m4/setenv.m4: Likewise.
* m4/signbit.m4: Likewise.
* m4/sleep.m4: Likewise.
* m4/stat.m4: Likewise.
* m4/strerror.m4: Likewise.
* m4/strtok_r.m4: Likewise.
* m4/symlink.m4: Likewise.
* m4/symlinkat.m4: Likewise.
* m4/trunc.m4: Likewise.
* m4/truncf.m4: Likewise.
* m4/truncl.m4: Likewise.
* m4/tzset.m4: Likewise.
* m4/ungetc.m4: Likewise.
* m4/usleep.m4: Likewise.
* m4/wcwidth.m4: Likewise.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
* build-aux/gendocs.sh (version):
* doc/gendocs_template:
* doc/gendocs_template_min:
* doc/gnulib.texi:
* lib/version-etc.c (COPYRIGHT_YEAR):
Update copyright dates by hand in templates and the like.
* all files: Run 'make update-copyright'.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Without these patches, ./configure CFLAGS='-fsanitize=address'
would compute incorrect values. This patch fixes some (but not all)
test failures with recent glibc, with this configuration.
* m4/acl.m4 (gl_ACL_GET_FILE):
* m4/calloc.m4 (_AC_FUNC_CALLOC_IF):
* m4/canonicalize.m4 (gl_FUNC_REALPATH_WORKS):
* m4/d-ino.m4 (gl_CHECK_TYPE_STRUCT_DIRENT_D_INO):
* m4/duplocale.m4 (gl_FUNC_DUPLOCALE):
* m4/getcwd.m4 (gl_FUNC_GETCWD_NULL):
* m4/getdelim.m4 (gl_FUNC_GETDELIM):
* m4/getgroups.m4 (gl_FUNC_GETGROUPS):
* m4/getline.m4 (gl_FUNC_GETLINE):
* m4/malloc.m4 (_AC_FUNC_MALLOC_IF):
* m4/realloc.m4 (_AC_FUNC_REALLOC_IF):
* m4/regex.m4 (gl_REGEX):
* m4/strndup.m4 (gl_FUNC_STRNDUP):
* tests/test-calloc-gnu.c (main):
* tests/test-duplocale.c (main):
* tests/test-getgroups.c (main):
* tests/test-getline.c (main):
* tests/test-inttostr.c (main):
* tests/test-localename.c (test_locale_name)
(test_locale_name_thread, test_locale_name_environ)
(test_locale_name_default):
* tests/test-regex.c (main):
* tests/test-setlocale1.c (main):
* tests/test-stat.h (test_stat_func):
Free heap-allocated storage before exiting.
* m4/asm-underscore.m4 (gl_ASM_SYMBOL_PREFIX):
Don't match *_foo symbols inserted by AddressSanitizer.
* tests/test-regex.c, tests/test-stat.c: Include stdlib.h, for 'free'.
|
|
|
|
|
|
|
|
|
|
| |
* build-aux/gendocs.sh (version):
* doc/gendocs_template:
* doc/gendocs_template_min:
* doc/gnulib.texi:
* lib/version-etc.c (COPYRIGHT_YEAR):
Update copyright dates by hand in templates and the like.
* all files: Run 'make update-copyright'.
|
|
|
|
|
|
| |
* doc/gnulib.texi:
* lib/version-etc.c (COPYRIGHT_YEAR): Update copyright date.
* all files: Run 'make update-copyright'.
|
|
|
|
|
|
| |
I ran 'make update-copyright'.
Signed-off-by: Eric Blake <eblake@redhat.com>
|
|
|
|
|
|
| |
Run "make update-copyright". Compare to commit 1602f0a from last year.
Signed-off-by: Eric Blake <eblake@redhat.com>
|
|
|
|
|
|
|
|
| |
* m4/malloc.m4 (_AC_FUNC_MALLOC_IF): Override in autoconf < 2.70.
* m4/realloc.m4 (_AC_FUNC_REALLOC_IF): Override in autoconf < 2.70.
* m4/calloc.m4 (_AC_FUNC_CALLOC_IF): Require AC_CANONICAL_HOST. When
cross-compiling, choose the first alternative on glibc systems.
* modules/eealloc (Files): Add m4/malloc.m4, m4/realloc.m4.
|
|
|
|
| |
Run "make update-copyright".
|
|
|
|
|
|
|
|
| |
* m4/realloc.m4 (gl_REPLACE_REALLOC): Remove macro.
(gl_FUNC_REALLOC_GNU, gl_FUNC_REALLOC_POSIX): Inline it here. Move
AC_LIBOBJ invocations from here...
* modules/realloc-gnu (configure.ac): ... to here.
* modules/realloc-posix (configure.ac): ... and here.
|
|
|
|
| |
Run the new "make update-copyright" rule.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Use the same procedure as for 2009, outlined in
http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/20081
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
99% of this change was performed by running the following commands:
git ls-files | grep '\.m4$' | xargs perl -pi \
-e 's/(AC_\w+\()([^[()]+?)([,)])/$1\[$2]$3/g;' \
-e 's/(AC_\w+\((?:\[[^,]+?\], ){1})([^,[()]+?)([,)])/$1\[$2]$3/g;' \
-e 's/(AC_\w+\((?:\[[^,]+?\], ){2})([^,[()]+?)([,)])/$1\[$2]$3/g;' \
-e 's/(AC_\w+\((?:\[[^,]+?\], ){3})([^,[()]+?)([,)])/$1\[$2]$3/g'
perl -pi -e 's/\[\.\.\.\]/.../' m4/onceonly.m4
The remainder were to add Copyright dates, increment serial numbers,
undo some changes in comments, exclude m4/intl.m4, and add quotes
around the "1" in ",1" where the unusual spacing prohibited the
above regexps from doing the job. For more details, see
<http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/16175>.
|
| |
|
| |
|
|
|
|
|
|
| |
AC_REQUIRE([AC_FUNC_REALLOC]), and that can be done via
the `configure.ac' section of module/realloc.
* malloc.m4: Likewise, but for AC_FUNC_MALLOC.
|
| |
|
|
|
|
|
| |
to be more precise. Rather than saying we're checking whether the
function `works', say what we're testing.
|
|
|
|
| |
need not be expanded by the shell.
|
| |
|
| |
|
|
|
|
| |
AC_LIBOBJ([function_name]).
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|