From: Bernhard Voelker Date: Mon, 20 May 2013 00:03:20 +0200 Subject: [PATCH] gnulib-tests: utimensat-tests, etc.: try to fix some races Some nap()-related tests often fail in OBS. Cherry-pick the following attempt to avoid some races from upstream gnulib: http://git.sv.gnu.org/cgit/gnulib.git/commit/?id=5191133e To be removed with coreutils-8.22. --- ChangeLog | 5 + Makefile.in | 7 +- aclocal.m4 | 1 configure | 99 --------------------------------- gnulib-tests/Makefile.in | 126 ++++++++++++++++++------------------------ gnulib-tests/gnulib.mk | 33 +++-------- gnulib-tests/nap.h | 113 ++++++++++++++++++++++++------------- gnulib-tests/test-stat-time.c | 45 +-------------- gnulib-tests/test-usleep.c | 40 ------------- gnulib-tests/usleep.c | 58 ------------------- lib/config.hin | 9 --- m4/gnulib-comp.m4 | 10 --- m4/usleep.m4 | 45 --------------- 13 files changed, 151 insertions(+), 440 deletions(-) delete mode 100644 gnulib-tests/test-usleep.c delete mode 100644 gnulib-tests/usleep.c delete mode 100644 m4/usleep.m4 Index: ChangeLog =================================================================== --- ChangeLog.orig +++ ChangeLog @@ -1,3 +1,8 @@ +2013-05-17 Bernhard Voelker + + gnulib: cherry-pick gnulib commit 5191133e + utimensat-tests, etc.: try to fix some races + 2013-02-14 Pádraig Brady version 8.21 Index: Makefile.in =================================================================== --- Makefile.in.orig +++ Makefile.in @@ -346,10 +346,9 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/0 $(top_srcdir)/m4/unlink.m4 $(top_srcdir)/m4/unlinkat.m4 \ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \ - $(top_srcdir)/m4/usleep.m4 $(top_srcdir)/m4/utimbuf.m4 \ - $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \ - $(top_srcdir)/m4/utimensat.m4 $(top_srcdir)/m4/utimes.m4 \ - $(top_srcdir)/m4/vasnprintf.m4 \ + $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utimecmp.m4 \ + $(top_srcdir)/m4/utimens.m4 $(top_srcdir)/m4/utimensat.m4 \ + $(top_srcdir)/m4/utimes.m4 $(top_srcdir)/m4/vasnprintf.m4 \ $(top_srcdir)/m4/vasprintf-posix.m4 \ $(top_srcdir)/m4/vasprintf.m4 $(top_srcdir)/m4/version-etc.m4 \ $(top_srcdir)/m4/vfprintf-posix.m4 \ Index: aclocal.m4 =================================================================== --- aclocal.m4.orig +++ aclocal.m4 @@ -1425,7 +1425,6 @@ m4_include([m4/unlinkdir.m4]) m4_include([m4/unlocked-io.m4]) m4_include([m4/uptime.m4]) m4_include([m4/userspec.m4]) -m4_include([m4/usleep.m4]) m4_include([m4/utimbuf.m4]) m4_include([m4/utimecmp.m4]) m4_include([m4/utimens.m4]) Index: configure =================================================================== --- configure.orig +++ configure @@ -3876,7 +3876,6 @@ as_fn_append ac_func_list " sleep" as_fn_append ac_func_list " catgets" as_fn_append ac_func_list " symlinkat" as_fn_append ac_func_list " shutdown" -as_fn_append ac_func_list " usleep" as_fn_append ac_func_list " wctob" as_fn_append ac_header_list " hurd.h" as_fn_append ac_header_list " paths.h" @@ -7942,8 +7941,6 @@ $as_echo "$as_me: autobuild timestamp... # Code from module useless-if-before-free: # Code from module userspec: # Code from module userspec-tests: - # Code from module usleep: - # Code from module usleep-tests: # Code from module utimecmp: # Code from module utimens: # Code from module utimens-tests: @@ -58743,102 +58740,6 @@ $as_echo "#define UNLINK_CANNOT_UNLINK_D abs_aux_dir=`cd "$ac_aux_dir"; pwd` - - - - ac_fn_c_check_type "$LINENO" "useconds_t" "ac_cv_type_useconds_t" "$ac_includes_default" -if test "x$ac_cv_type_useconds_t" = xyes; then : - -else - -$as_echo "#define useconds_t unsigned int" >>confdefs.h - -fi - - if test $ac_cv_func_usleep = no; then - HAVE_USLEEP=0 - else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether usleep allows large arguments" >&5 -$as_echo_n "checking whether usleep allows large arguments... " >&6; } -if ${gl_cv_func_usleep_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - case "$host_os" in - # Guess yes on glibc systems. - *-gnu*) gl_cv_func_usleep_works="guessing yes" ;; - # If we don't know, assume the worst. - *) gl_cv_func_usleep_works="guessing no" ;; - esac - -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include - -int -main () -{ -return !!usleep (1000000); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - gl_cv_func_usleep_works=yes -else - gl_cv_func_usleep_works=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_usleep_works" >&5 -$as_echo "$gl_cv_func_usleep_works" >&6; } - case "$gl_cv_func_usleep_works" in - *yes) ;; - *) - REPLACE_USLEEP=1 - ;; - esac - fi - - if test $HAVE_USLEEP = 0 || test $REPLACE_USLEEP = 1; then - - - - - - - - - gltests_LIBOBJS="$gltests_LIBOBJS usleep.$ac_objext" - - fi - - - - - - if test "$GNULIB_USLEEP" != 1; then - if test "$GNULIB_USLEEP" = 0; then - GNULIB_USLEEP=$gl_module_indicator_condition - else - GNULIB_USLEEP="($GNULIB_USLEEP || $gl_module_indicator_condition)" - fi - fi - - - - - -$as_echo "#define GNULIB_TEST_USLEEP 1" >>confdefs.h - - - - abs_aux_dir=`cd "$ac_aux_dir"; pwd` Index: gnulib-tests/Makefile.in =================================================================== --- gnulib-tests/Makefile.in.orig +++ gnulib-tests/Makefile.in @@ -198,19 +198,19 @@ TESTS = test-accept$(EXEEXT) test-file-h test-uc_width$(EXEEXT) uniwidth/test-uc_width2.sh \ test-unlink$(EXEEXT) test-unlinkat$(EXEEXT) \ test-unsetenv$(EXEEXT) test-update-copyright.sh \ - test-userspec$(EXEEXT) test-usleep$(EXEEXT) \ - test-utimens$(EXEEXT) test-utimensat$(EXEEXT) \ - test-vasnprintf$(EXEEXT) test-vasprintf-posix$(EXEEXT) \ - test-vasprintf$(EXEEXT) test-vc-list-files-git.sh \ - test-vc-list-files-cvs.sh test-verify$(EXEEXT) test-verify.sh \ - test-version-etc.sh test-vfprintf-posix.sh \ - test-vprintf-posix.sh test-wchar$(EXEEXT) test-wcrtomb.sh \ - test-wcrtomb-w32-1.sh test-wcrtomb-w32-2.sh \ - test-wcrtomb-w32-3.sh test-wcrtomb-w32-4.sh \ - test-wcrtomb-w32-5.sh test-wctype-h$(EXEEXT) \ - test-wcwidth$(EXEEXT) test-write$(EXEEXT) test-xalloc-die.sh \ - test-xprintf-posix.sh test-xstrtoimax.sh test-xstrtol.sh \ - test-xstrtoumax.sh test-xvasprintf$(EXEEXT) test-yesno.sh + test-userspec$(EXEEXT) test-utimens$(EXEEXT) \ + test-utimensat$(EXEEXT) test-vasnprintf$(EXEEXT) \ + test-vasprintf-posix$(EXEEXT) test-vasprintf$(EXEEXT) \ + test-vc-list-files-git.sh test-vc-list-files-cvs.sh \ + test-verify$(EXEEXT) test-verify.sh test-version-etc.sh \ + test-vfprintf-posix.sh test-vprintf-posix.sh \ + test-wchar$(EXEEXT) test-wcrtomb.sh test-wcrtomb-w32-1.sh \ + test-wcrtomb-w32-2.sh test-wcrtomb-w32-3.sh \ + test-wcrtomb-w32-4.sh test-wcrtomb-w32-5.sh \ + test-wctype-h$(EXEEXT) test-wcwidth$(EXEEXT) \ + test-write$(EXEEXT) test-xalloc-die.sh test-xprintf-posix.sh \ + test-xstrtoimax.sh test-xstrtol.sh test-xstrtoumax.sh \ + test-xvasprintf$(EXEEXT) test-yesno.sh XFAIL_TESTS = noinst_PROGRAMS = check_PROGRAMS = test-accept$(EXEEXT) test-file-has-acl$(EXEEXT) \ @@ -335,19 +335,18 @@ check_PROGRAMS = test-accept$(EXEEXT) te test-uc_width$(EXEEXT) test-uc_width2$(EXEEXT) \ test-unlink$(EXEEXT) test-unlinkat$(EXEEXT) \ test-unsetenv$(EXEEXT) test-userspec$(EXEEXT) \ - test-usleep$(EXEEXT) test-utimens$(EXEEXT) \ - test-utimensat$(EXEEXT) test-vasnprintf$(EXEEXT) \ - test-vasprintf-posix$(EXEEXT) test-vasprintf$(EXEEXT) \ - test-verify$(EXEEXT) test-version-etc$(EXEEXT) \ - test-vfprintf-posix$(EXEEXT) test-vprintf-posix$(EXEEXT) \ - test-wchar$(EXEEXT) test-wcrtomb$(EXEEXT) \ - test-wcrtomb-w32$(EXEEXT) test-wctype-h$(EXEEXT) \ - test-wcwidth$(EXEEXT) test-write$(EXEEXT) \ - test-xalloc-die$(EXEEXT) test-xfprintf-posix$(EXEEXT) \ - test-xprintf-posix$(EXEEXT) test-xstrtoimax$(EXEEXT) \ - test-xstrtol$(EXEEXT) test-xstrtoul$(EXEEXT) \ - test-xstrtoumax$(EXEEXT) test-xvasprintf$(EXEEXT) \ - test-yesno$(EXEEXT) + test-utimens$(EXEEXT) test-utimensat$(EXEEXT) \ + test-vasnprintf$(EXEEXT) test-vasprintf-posix$(EXEEXT) \ + test-vasprintf$(EXEEXT) test-verify$(EXEEXT) \ + test-version-etc$(EXEEXT) test-vfprintf-posix$(EXEEXT) \ + test-vprintf-posix$(EXEEXT) test-wchar$(EXEEXT) \ + test-wcrtomb$(EXEEXT) test-wcrtomb-w32$(EXEEXT) \ + test-wctype-h$(EXEEXT) test-wcwidth$(EXEEXT) \ + test-write$(EXEEXT) test-xalloc-die$(EXEEXT) \ + test-xfprintf-posix$(EXEEXT) test-xprintf-posix$(EXEEXT) \ + test-xstrtoimax$(EXEEXT) test-xstrtol$(EXEEXT) \ + test-xstrtoul$(EXEEXT) test-xstrtoumax$(EXEEXT) \ + test-xvasprintf$(EXEEXT) test-yesno$(EXEEXT) @POSIX_SPAWN_PORTED_TRUE@am__append_1 = test-posix_spawn1 test-posix_spawn2 @POSIX_SPAWN_PORTED_TRUE@am__append_2 = test-posix_spawn1 test-posix_spawn2 @POSIX_SPAWN_PORTED_TRUE@am__append_3 = test-posix_spawn1.sh \ @@ -553,10 +552,9 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/0 $(top_srcdir)/m4/unlink.m4 $(top_srcdir)/m4/unlinkat.m4 \ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \ - $(top_srcdir)/m4/usleep.m4 $(top_srcdir)/m4/utimbuf.m4 \ - $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \ - $(top_srcdir)/m4/utimensat.m4 $(top_srcdir)/m4/utimes.m4 \ - $(top_srcdir)/m4/vasnprintf.m4 \ + $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utimecmp.m4 \ + $(top_srcdir)/m4/utimens.m4 $(top_srcdir)/m4/utimensat.m4 \ + $(top_srcdir)/m4/utimes.m4 $(top_srcdir)/m4/vasnprintf.m4 \ $(top_srcdir)/m4/vasprintf-posix.m4 \ $(top_srcdir)/m4/vasprintf.m4 $(top_srcdir)/m4/version-etc.m4 \ $(top_srcdir)/m4/vfprintf-posix.m4 \ @@ -693,9 +691,7 @@ test_chdir_DEPENDENCIES = libtests.a ../ $(am__DEPENDENCIES_1) test_chown_SOURCES = test-chown.c test_chown_OBJECTS = test-chown.$(OBJEXT) -test_chown_LDADD = $(LDADD) -test_chown_DEPENDENCIES = libtests.a ../lib/libcoreutils.a libtests.a \ - $(am__DEPENDENCIES_1) +test_chown_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) test_cloexec_SOURCES = test-cloexec.c test_cloexec_OBJECTS = test-cloexec.$(OBJEXT) test_cloexec_LDADD = $(LDADD) @@ -784,7 +780,8 @@ test_fchmodat_OBJECTS = test-fchmodat.$( test_fchmodat_DEPENDENCIES = $(am__DEPENDENCIES_2) test_fchownat_SOURCES = test-fchownat.c test_fchownat_OBJECTS = test-fchownat.$(OBJEXT) -test_fchownat_DEPENDENCIES = $(am__DEPENDENCIES_2) +test_fchownat_DEPENDENCIES = $(am__DEPENDENCIES_2) \ + $(am__DEPENDENCIES_1) test_fclose_SOURCES = test-fclose.c test_fclose_OBJECTS = test-fclose.$(OBJEXT) test_fclose_LDADD = $(LDADD) @@ -820,7 +817,7 @@ test_fdopendir_DEPENDENCIES = $(am__DEPE test_fdutimensat_SOURCES = test-fdutimensat.c test_fdutimensat_OBJECTS = test-fdutimensat.$(OBJEXT) test_fdutimensat_DEPENDENCIES = $(am__DEPENDENCIES_2) \ - $(am__DEPENDENCIES_1) + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) test_fflush_SOURCES = test-fflush.c test_fflush_OBJECTS = test-fflush.$(OBJEXT) test_fflush_LDADD = $(LDADD) @@ -1005,7 +1002,7 @@ test_ftruncate_DEPENDENCIES = libtests.a test_futimens_SOURCES = test-futimens.c test_futimens_OBJECTS = test-futimens.$(OBJEXT) test_futimens_DEPENDENCIES = $(am__DEPENDENCIES_2) \ - $(am__DEPENDENCIES_1) + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) test_fwrite_SOURCES = test-fwrite.c test_fwrite_OBJECTS = test-fwrite.$(OBJEXT) test_fwrite_LDADD = $(LDADD) @@ -1156,9 +1153,7 @@ test_langinfo_DEPENDENCIES = libtests.a libtests.a $(am__DEPENDENCIES_1) test_lchown_SOURCES = test-lchown.c test_lchown_OBJECTS = test-lchown.$(OBJEXT) -test_lchown_LDADD = $(LDADD) -test_lchown_DEPENDENCIES = libtests.a ../lib/libcoreutils.a libtests.a \ - $(am__DEPENDENCIES_1) +test_lchown_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) test_link_SOURCES = test-link.c test_link_OBJECTS = test-link.$(OBJEXT) test_link_DEPENDENCIES = $(am__DEPENDENCIES_2) @@ -1564,9 +1559,8 @@ test_stat_OBJECTS = test-stat.$(OBJEXT) test_stat_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) test_stat_time_SOURCES = test-stat-time.c test_stat_time_OBJECTS = test-stat-time.$(OBJEXT) -test_stat_time_LDADD = $(LDADD) -test_stat_time_DEPENDENCIES = libtests.a ../lib/libcoreutils.a \ - libtests.a $(am__DEPENDENCIES_1) +test_stat_time_DEPENDENCIES = $(am__DEPENDENCIES_2) \ + $(am__DEPENDENCIES_1) test_statat_SOURCES = test-statat.c test_statat_OBJECTS = test-statat.$(OBJEXT) test_statat_DEPENDENCIES = $(am__DEPENDENCIES_2) @@ -1787,19 +1781,14 @@ test_unsetenv_DEPENDENCIES = libtests.a test_userspec_SOURCES = test-userspec.c test_userspec_OBJECTS = test-userspec.$(OBJEXT) test_userspec_DEPENDENCIES = $(am__DEPENDENCIES_2) -test_usleep_SOURCES = test-usleep.c -test_usleep_OBJECTS = test-usleep.$(OBJEXT) -test_usleep_LDADD = $(LDADD) -test_usleep_DEPENDENCIES = libtests.a ../lib/libcoreutils.a libtests.a \ - $(am__DEPENDENCIES_1) test_utimens_SOURCES = test-utimens.c test_utimens_OBJECTS = test-utimens.$(OBJEXT) test_utimens_DEPENDENCIES = $(am__DEPENDENCIES_2) \ - $(am__DEPENDENCIES_1) + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) test_utimensat_SOURCES = test-utimensat.c test_utimensat_OBJECTS = test-utimensat.$(OBJEXT) test_utimensat_DEPENDENCIES = $(am__DEPENDENCIES_2) \ - $(am__DEPENDENCIES_1) + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) test_vasnprintf_SOURCES = test-vasnprintf.c test_vasnprintf_OBJECTS = test-vasnprintf.$(OBJEXT) test_vasnprintf_LDADD = $(LDADD) @@ -1990,7 +1979,7 @@ SOURCES = $(libtests_a_SOURCES) $(EXTRA_ $(test_u8_mbtoucr_SOURCES) $(test_u8_uctomb_SOURCES) \ $(test_uc_width_SOURCES) $(test_uc_width2_SOURCES) \ test-uname.c test-unistd.c test-unlink.c test-unlinkat.c \ - test-unsetenv.c test-userspec.c test-usleep.c test-utimens.c \ + test-unsetenv.c test-userspec.c test-utimens.c \ test-utimensat.c test-vasnprintf.c test-vasprintf.c \ test-vasprintf-posix.c test-verify.c test-version-etc.c \ test-vfprintf-posix.c test-vprintf-posix.c test-wchar.c \ @@ -2077,7 +2066,7 @@ DIST_SOURCES = $(libtests_a_SOURCES) $(E $(test_u8_mbtoucr_SOURCES) $(test_u8_uctomb_SOURCES) \ $(test_uc_width_SOURCES) $(test_uc_width2_SOURCES) \ test-uname.c test-unistd.c test-unlink.c test-unlinkat.c \ - test-unsetenv.c test-userspec.c test-usleep.c test-utimens.c \ + test-unsetenv.c test-userspec.c test-utimens.c \ test-utimensat.c test-vasnprintf.c test-vasprintf.c \ test-vasprintf-posix.c test-verify.c test-version-etc.c \ test-vfprintf-posix.c test-vprintf-posix.c test-wchar.c \ @@ -3725,7 +3714,7 @@ EXTRA_DIST = accept.c w32sock.h test-acc test-spawn-pipe.sh test-spawn-pipe-main.c \ test-spawn-pipe-child.c macros.h test-spawn.c test-stat.h \ test-stat.c signature.h macros.h test-stat-time.c macros.h \ - test-statat.c test-stdalign.c macros.h test-stdbool.c \ + nap.h test-statat.c test-stdalign.c macros.h test-stdbool.c \ test-stddef.c test-stdint.c test-stdio.c test-stdlib.c \ test-sys_wait.h test-strchrnul.c signature.h macros.h \ test-strerror.c signature.h macros.h strerror_r.c \ @@ -3753,10 +3742,9 @@ EXTRA_DIST = accept.c w32sock.h test-acc test-unlink.c signature.h macros.h test-unlinkat.c \ test-rmdir.h test-unlink.h signature.h macros.h unlinkdir.h \ test-unsetenv.c signature.h macros.h test-update-copyright.sh \ - test-userspec.c usleep.c test-usleep.c signature.h macros.h \ - nap.h test-futimens.h test-lutimens.h test-utimens.h \ - test-utimens-common.h test-utimens.c macros.h nap.h \ - test-lutimens.h test-utimens.h test-utimens-common.h \ + test-userspec.c nap.h test-futimens.h test-lutimens.h \ + test-utimens.h test-utimens-common.h test-utimens.c macros.h \ + nap.h test-lutimens.h test-utimens.h test-utimens-common.h \ test-utimensat.c signature.h macros.h test-vasnprintf.c \ macros.h test-vasprintf-posix.c minus-zero.h infinity.h nan.h \ macros.h test-vasprintf.c signature.h macros.h \ @@ -3827,8 +3815,8 @@ libtests_a_LIBADD = $(gltests_LIBOBJS) libtests_a_DEPENDENCIES = $(gltests_LIBOBJS) EXTRA_libtests_a_SOURCES = accept.c bind.c connect.c inet_pton.c \ ioctl.c listen.c perror.c pipe.c setlocale.c setsockopt.c \ - sleep.c socket.c strerror_r.c at-func.c symlinkat.c usleep.c \ - wctob.c wctomb.c + sleep.c socket.c strerror_r.c at-func.c symlinkat.c wctob.c \ + wctomb.c AM_LIBTOOLFLAGS = --preserve-dup-deps test_accept_LDADD = $(LDADD) @LIBSOCKET@ test_file_has_acl_LDADD = $(LDADD) $(LIB_ACL) @@ -3839,6 +3827,7 @@ test_areadlinkat_LDADD = $(LDADD) @LIBIN test_argmatch_LDADD = $(LDADD) @LIBINTL@ test_bind_LDADD = $(LDADD) @LIBSOCKET@ $(INET_PTON_LIB) test_canonicalize_LDADD = $(LDADD) @LIBINTL@ +test_chown_LDADD = $(LDADD) $(LIB_NANOSLEEP) test_closein_LDADD = $(LDADD) @LIBINTL@ test_connect_LDADD = $(LDADD) @LIBSOCKET@ $(INET_PTON_LIB) # Link with libintl when needed. dirent-safer uses fdopendir if it is present, @@ -3849,15 +3838,17 @@ test_exclude_LDADD = $(LDADD) @LIBINTL@ test_faccessat_LDADD = $(LDADD) $(LIB_EACCESS) @LIBINTL@ test_fchdir_LDADD = $(LDADD) $(LIBINTL) test_fchmodat_LDADD = $(LDADD) @LIBINTL@ -test_fchownat_LDADD = $(LDADD) @LIBINTL@ +test_fchownat_LDADD = $(LDADD) $(LIB_NANOSLEEP) @LIBINTL@ test_fdatasync_LDADD = $(LDADD) $(LIB_FDATASYNC) test_fdopendir_LDADD = $(LDADD) @LIBINTL@ -test_fdutimensat_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) @LIBINTL@ +test_fdutimensat_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) \ + $(LIB_NANOSLEEP) @LIBINTL@ + test_filenamecat_LDADD = $(LDADD) @LIBINTL@ test_frexp_nolibm_SOURCES = test-frexp.c randomd.c test_frexpl_nolibm_SOURCES = test-frexpl.c randoml.c test_fstatat_LDADD = $(LDADD) @LIBINTL@ -test_futimens_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) @LIBINTL@ +test_futimens_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) $(LIB_NANOSLEEP) @LIBINTL@ test_getaddrinfo_LDADD = $(LDADD) @GETADDRINFO_LIB@ @LIBINTL@ test_getcwd_lgpl_LDADD = $(LDADD) $(LIBINTL) test_getcwd_LDADD = $(LDADD) @LIBINTL@ @@ -3867,6 +3858,7 @@ test_getopt_LDADD = $(LDADD) $(LIBINTL) test_iconv_LDADD = $(LDADD) @LIBICONV@ test_inet_ntop_LDADD = $(LDADD) @INET_NTOP_LIB@ test_inet_pton_LDADD = $(LDADD) @INET_PTON_LIB@ +test_lchown_LDADD = $(LDADD) $(LIB_NANOSLEEP) test_link_LDADD = $(LDADD) @LIBINTL@ test_linkat_LDADD = $(LDADD) @LIBINTL@ test_listen_LDADD = $(LDADD) @LIBSOCKET@ @@ -3902,6 +3894,7 @@ test_spawn_pipe_main_LDADD = $(LDADD) @L # Therefore don't link it against any libraries other than -lc. test_spawn_pipe_child_LDADD = test_stat_LDADD = $(LDADD) $(LIBINTL) +test_stat_time_LDADD = $(LDADD) $(LIB_NANOSLEEP) test_statat_LDADD = $(LDADD) @LIBINTL@ test_striconv_LDADD = $(LDADD) @LIBICONV@ test_strsignal_LDADD = $(LDADD) @LIBINTL@ $(LIBTHREAD) @@ -3920,8 +3913,8 @@ test_uc_width2_SOURCES = uniwidth/test-u test_uc_width2_LDADD = $(LDADD) $(LIBUNISTRING) test_unlinkat_LDADD = $(LDADD) @LIBINTL@ test_userspec_LDADD = $(LDADD) @LIBINTL@ -test_utimens_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) @LIBINTL@ -test_utimensat_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) @LIBINTL@ +test_utimens_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) $(LIB_NANOSLEEP) @LIBINTL@ +test_utimensat_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) $(LIB_NANOSLEEP) @LIBINTL@ test_version_etc_LDADD = $(LDADD) @LIBINTL@ test_xalloc_die_LDADD = $(LDADD) @LIBINTL@ test_xfprintf_posix_LDADD = $(LDADD) @LIBINTL@ @@ -4893,9 +4886,6 @@ test-unsetenv$(EXEEXT): $(test_unsetenv_ test-userspec$(EXEEXT): $(test_userspec_OBJECTS) $(test_userspec_DEPENDENCIES) $(EXTRA_test_userspec_DEPENDENCIES) @rm -f test-userspec$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_userspec_OBJECTS) $(test_userspec_LDADD) $(LIBS) -test-usleep$(EXEEXT): $(test_usleep_OBJECTS) $(test_usleep_DEPENDENCIES) $(EXTRA_test_usleep_DEPENDENCIES) - @rm -f test-usleep$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(test_usleep_OBJECTS) $(test_usleep_LDADD) $(LIBS) test-utimens$(EXEEXT): $(test_utimens_OBJECTS) $(test_utimens_DEPENDENCIES) $(EXTRA_test_utimens_DEPENDENCIES) @rm -f test-utimens$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_utimens_OBJECTS) $(test_utimens_LDADD) $(LIBS) @@ -5252,7 +5242,6 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-unlinkat.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-unsetenv.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-userspec.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-usleep.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-utimens.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-utimensat.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-vasnprintf.Po@am__quote@ @@ -5280,7 +5269,6 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_tls-test-tls.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_xvasprintf-test-xvasprintf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unlinkdir.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/usleep.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wctob.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wctomb.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@glthread/$(DEPDIR)/thread.Po@am__quote@ @@ -6223,8 +6211,6 @@ test-update-copyright.sh.log: test-updat @p='test-update-copyright.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) test-userspec.log: test-userspec$(EXEEXT) @p='test-userspec$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) -test-usleep.log: test-usleep$(EXEEXT) - @p='test-usleep$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) test-utimens.log: test-utimens$(EXEEXT) @p='test-utimens$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) test-utimensat.log: test-utimensat$(EXEEXT) Index: gnulib-tests/gnulib.mk =================================================================== --- gnulib-tests/gnulib.mk.orig +++ gnulib-tests/gnulib.mk @@ -261,6 +261,7 @@ EXTRA_DIST += test-chdir.c signature.h m TESTS += test-chown check_PROGRAMS += test-chown +test_chown_LDADD = $(LDADD) $(LIB_NANOSLEEP) EXTRA_DIST += nap.h test-chown.h test-chown.c signature.h macros.h ## end gnulib module chown-tests @@ -459,7 +460,7 @@ EXTRA_DIST += test-fchmodat.c signature. TESTS += test-fchownat check_PROGRAMS += test-fchownat -test_fchownat_LDADD = $(LDADD) @LIBINTL@ +test_fchownat_LDADD = $(LDADD) $(LIB_NANOSLEEP) @LIBINTL@ EXTRA_DIST += nap.h test-chown.h test-lchown.h test-fchownat.c signature.h macros.h ## end gnulib module fchownat-tests @@ -526,7 +527,8 @@ EXTRA_DIST += test-fdopendir.c signature TESTS += test-fdutimensat check_PROGRAMS += test-fdutimensat -test_fdutimensat_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) @LIBINTL@ +test_fdutimensat_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) \ + $(LIB_NANOSLEEP) @LIBINTL@ EXTRA_DIST += nap.h test-futimens.h test-lutimens.h test-utimens.h test-utimens-common.h test-fdutimensat.c macros.h ## end gnulib module fdutimensat-tests @@ -780,7 +782,7 @@ EXTRA_DIST += test-ftruncate.c test-ftru TESTS += test-futimens check_PROGRAMS += test-futimens -test_futimens_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) @LIBINTL@ +test_futimens_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) $(LIB_NANOSLEEP) @LIBINTL@ EXTRA_DIST += nap.h test-futimens.h test-utimens-common.h test-futimens.c signature.h macros.h ## end gnulib module futimens-tests @@ -1104,6 +1106,7 @@ EXTRA_DIST += test-langinfo.c TESTS += test-lchown check_PROGRAMS += test-lchown +test_lchown_LDADD = $(LDADD) $(LIB_NANOSLEEP) EXTRA_DIST += nap.h test-lchown.h test-lchown.c signature.h macros.h ## end gnulib module lchown-tests @@ -1963,7 +1966,8 @@ EXTRA_DIST += test-stat.h test-stat.c si TESTS += test-stat-time check_PROGRAMS += test-stat-time -EXTRA_DIST += test-stat-time.c macros.h +test_stat_time_LDADD = $(LDADD) $(LIB_NANOSLEEP) +EXTRA_DIST += test-stat-time.c macros.h nap.h ## end gnulib module stat-time-tests @@ -2419,28 +2423,11 @@ EXTRA_DIST += test-userspec.c ## end gnulib module userspec-tests -## begin gnulib module usleep - - -EXTRA_DIST += usleep.c - -EXTRA_libtests_a_SOURCES += usleep.c - -## end gnulib module usleep - -## begin gnulib module usleep-tests - -TESTS += test-usleep -check_PROGRAMS += test-usleep -EXTRA_DIST += test-usleep.c signature.h macros.h - -## end gnulib module usleep-tests - ## begin gnulib module utimens-tests TESTS += test-utimens check_PROGRAMS += test-utimens -test_utimens_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) @LIBINTL@ +test_utimens_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) $(LIB_NANOSLEEP) @LIBINTL@ EXTRA_DIST += nap.h test-futimens.h test-lutimens.h test-utimens.h test-utimens-common.h test-utimens.c macros.h ## end gnulib module utimens-tests @@ -2449,7 +2436,7 @@ EXTRA_DIST += nap.h test-futimens.h test TESTS += test-utimensat check_PROGRAMS += test-utimensat -test_utimensat_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) @LIBINTL@ +test_utimensat_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) $(LIB_NANOSLEEP) @LIBINTL@ EXTRA_DIST += nap.h test-lutimens.h test-utimens.h test-utimens-common.h test-utimensat.c signature.h macros.h ## end gnulib module utimensat-tests Index: gnulib-tests/nap.h =================================================================== --- gnulib-tests/nap.h.orig +++ gnulib-tests/nap.h @@ -19,19 +19,33 @@ #ifndef GLTEST_NAP_H # define GLTEST_NAP_H +# include + +/* Return A - B, in ns. + Return 0 if the true result would be negative. + Return INT_MAX if the true result would be greater than INT_MAX. */ static int -lt_mtime (struct stat const *a, struct stat const *b) +diff_timespec (struct timespec a, struct timespec b) { - time_t as = a->st_mtime; - time_t bs = b->st_mtime; - int ans = get_stat_mtime_ns (a); - int bns = get_stat_mtime_ns (b); + time_t as = a.tv_sec; + time_t bs = b.tv_sec; + int ans = a.tv_nsec; + int bns = b.tv_nsec; - return as < bs || (as == bs && ans < bns); + if (! (bs < as || (bs == as && bns < ans))) + return 0; + if (as - bs <= INT_MAX / 1000000000) + { + int sdiff = (as - bs) * 1000000000; + int usdiff = ans - bns; + if (usdiff < INT_MAX - sdiff) + return sdiff + usdiff; + } + return INT_MAX; } static void -get_mtime (int fd, struct stat *st, int do_write) +get_stat (int fd, struct stat *st, int do_write) { if (do_write) ASSERT (write (fd, "\n", 1) == 1); @@ -39,50 +53,61 @@ get_mtime (int fd, struct stat *st, int } /* Given a file whose descriptor is FD, see whether delaying by DELAY - microseconds causes a change in a file's time stamp. If the time - stamps differ, repeat the test one more time, in case we crossed a - quantization boundary on a file system with lower resolution. *ST - is the file's status, recently gotten. Update *ST to reflect the - latest status gotten. */ + nanoseconds causes a change in a file's time stamp. *ST is the + file's status, recently gotten. Update *ST to reflect the latest + status gotten. If successful, return the needed delay, in + nanoseconds as determined by the observed time stamps; this may be + greater than DELAY if we crossed a quantization boundary. If + unsuccessful, return 0. */ static int nap_works (int fd, int delay, struct stat *st) { - struct stat old_st; - old_st = *st; - usleep (delay); - get_mtime (fd, st, 1); - if (! lt_mtime (&old_st, st)) - return 0; - old_st = *st; - usleep (delay); - get_mtime (fd, st, 1); - return lt_mtime (&old_st, st); + struct stat old_st = *st; + struct timespec delay_spec; + int cdiff, mdiff; + delay_spec.tv_sec = delay / 1000000000; + delay_spec.tv_nsec = delay % 1000000000; + ASSERT (nanosleep (&delay_spec, 0) == 0); + get_stat (fd, st, 1); + + /* Return the greater of the ctime and the mtime differences, or + zero if it cannot be determined, or INT_MAX if either overflows. */ + cdiff = diff_timespec (get_stat_ctime (st), get_stat_ctime (&old_st)); + if (cdiff != 0) + { + mdiff = diff_timespec (get_stat_mtime (st), get_stat_mtime (&old_st)); + if (mdiff != 0) + return cdiff < mdiff ? mdiff : cdiff; + } + return 0; } static int guess_delay (void) { - /* Try a 1-microsecond sleep first, for speed. If that doesn't - work, try a 1 ms sleep; that should work with ext. If it doesn't - work, try a 20 ms sleep. xfs has a quantization of about 10 + /* Try a 1-ns sleep first, for speed. If that doesn't work, try 100 + ns, 1 microsecond, 1 ms, etc. xfs has a quantization of about 10 milliseconds, even though it has a granularity of 1 nanosecond, and NTFS has a default quantization of 15.25 milliseconds, even - though it has a granularity of 100 nanoseconds, so 20 ms is a + though it has a granularity of 100 nanoseconds, so 15.25 ms is a good quantization to try. If that doesn't work, try 1 second. The worst case is 2 seconds, needed for FAT. */ - static int const delaytab[] = {1, 1000, 20000, 1000000 }; + static int const delaytab[] = {1, 1000, 1000000, 15250000, 1000000000 }; int fd = creat (BASE "tmp", 0600); int i; - int delay = 2000000; + int delay = 2000000000; struct stat st; ASSERT (0 <= fd); - get_mtime (fd, &st, 0); + get_stat (fd, &st, 0); for (i = 0; i < sizeof delaytab / sizeof delaytab[0]; i++) - if (nap_works (fd, delaytab[i], &st)) - { - delay = delaytab[i]; - break; - } + { + int d = nap_works (fd, delaytab[i], &st); + if (d != 0) + { + delay = d; + break; + } + } ASSERT (close (fd) == 0); ASSERT (unlink (BASE "tmp") == 0); return delay; @@ -90,14 +115,24 @@ guess_delay (void) /* Sleep long enough to notice a timestamp difference on the file system in the current directory. Assumes that BASE is defined, - and requires that the test module depends on usleep. */ + and requires that the test module depends on nanosleep. */ static void nap (void) { - static int delay; - if (!delay) - delay = guess_delay (); - usleep (delay); + static struct timespec delay; + if (!delay.tv_sec && !delay.tv_nsec) + { + int d = guess_delay (); + + /* Multiply by 1.125 (rounding up), to avoid problems if the + file system's clock is a bit slower than nanosleep's. + Ceiling it at INT_MAX, though. */ + int delta = (d >> 3) + ((d & 7) != 0); + d = delta < INT_MAX - d ? d + delta : INT_MAX; + delay.tv_sec = d / 1000000000; + delay.tv_nsec = d % 1000000000; + } + ASSERT (nanosleep (&delay, 0) == 0); } #endif /* GLTEST_NAP_H */ Index: gnulib-tests/test-stat-time.c =================================================================== --- gnulib-tests/test-stat-time.c.orig +++ gnulib-tests/test-stat-time.c @@ -27,6 +27,9 @@ #include "macros.h" +#define BASE "test-stat-time.t" +#include "nap.h" + enum { NFILES = 4 }; static int @@ -79,48 +82,6 @@ do_stat (const char *filename, struct st ASSERT (stat (filename, p) == 0); } -/* Sleep long enough to notice a timestamp difference on the file - system in the current directory. */ -static void -nap (void) -{ - static long delay; - if (!delay) - { - /* Initialize only once, by sleeping for 20 milliseconds (needed - since xfs has a quantization of about 10 milliseconds, even - though it has a granularity of 1 nanosecond, and since NTFS - has a default quantization of 15.25 milliseconds, even though - it has a granularity of 100 nanoseconds). If the seconds - differ, repeat the test one more time (in case we crossed a - quantization boundary on a file system with 1 second - resolution). If we can't observe a difference in only the - nanoseconds, then fall back to 1 second if the time is odd, - and 2 seconds (needed for FAT) if time is even. */ - struct stat st1; - struct stat st2; - ASSERT (stat ("t-stt-stamp1", &st1) == 0); - ASSERT (force_unlink ("t-stt-stamp1") == 0); - delay = 20000; - usleep (delay); - create_file ("t-stt-stamp1"); - ASSERT (stat ("t-stt-stamp1", &st2) == 0); - if (st1.st_mtime != st2.st_mtime) - { - /* Seconds differ, give it one more shot. */ - st1 = st2; - ASSERT (force_unlink ("t-stt-stamp1") == 0); - usleep (delay); - create_file ("t-stt-stamp1"); - ASSERT (stat ("t-stt-stamp1", &st2) == 0); - } - if (! (st1.st_mtime == st2.st_mtime - && get_stat_mtime_ns (&st1) < get_stat_mtime_ns (&st2))) - delay = (st1.st_mtime & 1) ? 1000000 : 2000000; - } - usleep (delay); -} - static void prepare_test (struct stat *statinfo, struct timespec *modtimes) { Index: gnulib-tests/test-usleep.c =================================================================== --- gnulib-tests/test-usleep.c +++ /dev/null @@ -1,40 +0,0 @@ -/* Test of usleep() function. - Copyright (C) 2009-2013 Free Software Foundation, Inc. - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -/* Written by Eric Blake , 2009. */ - -#include - -#include - -#include "signature.h" -SIGNATURE_CHECK (usleep, int, (useconds_t)); - -#include - -#include "macros.h" - -int -main (void) -{ - time_t start = time (NULL); - ASSERT (usleep (1000000) == 0); - ASSERT (start < time (NULL)); - - ASSERT (usleep (0) == 0); - - return 0; -} Index: gnulib-tests/usleep.c =================================================================== --- gnulib-tests/usleep.c +++ /dev/null @@ -1,58 +0,0 @@ -/* Pausing execution of the current thread. - Copyright (C) 2009-2013 Free Software Foundation, Inc. - Written by Eric Blake , 2009. - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -/* This file is _intentionally_ light-weight. Rather than using - select or nanosleep, both of which drag in external libraries on - some platforms, this merely rounds up to the nearest second if - usleep() does not exist. If sub-second resolution is important, - then use a more powerful interface to begin with. */ - -#include - -/* Specification. */ -#include - -#include - -#ifndef HAVE_USLEEP -# define HAVE_USLEEP 0 -#endif - -/* Sleep for MICRO microseconds, which can be greater than 1 second. - Return -1 and set errno to EINVAL on range error (about 4295 - seconds), or 0 on success. Interaction with SIGALARM is - unspecified. */ - -int -usleep (useconds_t micro) -{ - unsigned int seconds = micro / 1000000; - if (sizeof seconds < sizeof micro && micro / 1000000 != seconds) - { - errno = EINVAL; - return -1; - } - if (!HAVE_USLEEP && micro % 1000000) - seconds++; - while ((seconds = sleep (seconds)) != 0); - -#undef usleep -#if !HAVE_USLEEP -# define usleep(x) 0 -#endif - return usleep (micro % 1000000); -} Index: lib/config.hin =================================================================== --- lib/config.hin.orig +++ lib/config.hin @@ -735,9 +735,6 @@ /* Define to 1 when the gnulib module unsetenv should be tested. */ #undef GNULIB_TEST_UNSETENV -/* Define to 1 when the gnulib module usleep should be tested. */ -#undef GNULIB_TEST_USLEEP - /* Define to 1 when the gnulib module utimensat should be tested. */ #undef GNULIB_TEST_UTIMENSAT @@ -2387,9 +2384,6 @@ /* Define to 1 if you have the `uselocale' function. */ #undef HAVE_USELOCALE -/* Define to 1 if you have the `usleep' function. */ -#undef HAVE_USLEEP - /* Define to 1 if you have the `utimensat' function. */ #undef HAVE_UTIMENSAT @@ -3348,9 +3342,6 @@ #endif -/* Define to an unsigned 32-bit type if lacks this type. */ -#undef useconds_t - /* Define as a macro for copying va_list variables. */ #undef va_copy Index: m4/gnulib-comp.m4 =================================================================== --- m4/gnulib-comp.m4.orig +++ m4/gnulib-comp.m4 @@ -741,8 +741,6 @@ AC_DEFUN([gl_EARLY], # Code from module useless-if-before-free: # Code from module userspec: # Code from module userspec-tests: - # Code from module usleep: - # Code from module usleep-tests: # Code from module utimecmp: # Code from module utimens: # Code from module utimens-tests: @@ -2255,11 +2253,6 @@ changequote([, ])dnl gl_UNLINKDIR abs_aux_dir=`cd "$ac_aux_dir"; pwd` AC_SUBST([abs_aux_dir]) - gl_FUNC_USLEEP - if test $HAVE_USLEEP = 0 || test $REPLACE_USLEEP = 1; then - AC_LIBOBJ([usleep]) - fi - gl_UNISTD_MODULE_INDICATOR([usleep]) AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE]) abs_aux_dir=`cd "$ac_aux_dir"; pwd` AC_SUBST([abs_aux_dir]) @@ -3436,7 +3429,6 @@ AC_DEFUN([gl_FILE_LIST], [ m4/unlocked-io.m4 m4/uptime.m4 m4/userspec.m4 - m4/usleep.m4 m4/utimbuf.m4 m4/utimecmp.m4 m4/utimens.m4 @@ -3839,7 +3831,6 @@ AC_DEFUN([gl_FILE_LIST], [ tests/test-unsetenv.c tests/test-update-copyright.sh tests/test-userspec.c - tests/test-usleep.c tests/test-utimens-common.h tests/test-utimens.c tests/test-utimens.h @@ -3913,7 +3904,6 @@ AC_DEFUN([gl_FILE_LIST], [ tests=lib/symlinkat.c tests=lib/unlinkdir.c tests=lib/unlinkdir.h - tests=lib/usleep.c tests=lib/w32sock.h tests=lib/wctob.c tests=lib/wctomb-impl.h Index: m4/usleep.m4 =================================================================== --- m4/usleep.m4 +++ /dev/null @@ -1,45 +0,0 @@ -# usleep.m4 serial 3 -dnl Copyright (C) 2009-2013 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. - -dnl This macro intentionally does not check for select or nanosleep; -dnl both of those modules can require external libraries. -AC_DEFUN([gl_FUNC_USLEEP], -[ - AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) - dnl usleep was required in POSIX 2001, but dropped as obsolete in - dnl POSIX 2008; therefore, it is not always exposed in headers. - AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) - AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles - AC_CHECK_FUNCS_ONCE([usleep]) - AC_CHECK_TYPE([useconds_t], [], - [AC_DEFINE([useconds_t], [unsigned int], [Define to an unsigned 32-bit - type if lacks this type.])]) - if test $ac_cv_func_usleep = no; then - HAVE_USLEEP=0 - else - dnl POSIX allows implementations to reject arguments larger than - dnl 999999, but GNU guarantees it will work. - AC_CACHE_CHECK([whether usleep allows large arguments], - [gl_cv_func_usleep_works], - [AC_RUN_IFELSE([AC_LANG_PROGRAM([[ -#include -]], [[return !!usleep (1000000);]])], - [gl_cv_func_usleep_works=yes], [gl_cv_func_usleep_works=no], - [case "$host_os" in - # Guess yes on glibc systems. - *-gnu*) gl_cv_func_usleep_works="guessing yes" ;; - # If we don't know, assume the worst. - *) gl_cv_func_usleep_works="guessing no" ;; - esac - ])]) - case "$gl_cv_func_usleep_works" in - *yes) ;; - *) - REPLACE_USLEEP=1 - ;; - esac - fi -])