1 # See if we need to work around bugs in glibc's implementation of
2 # utimes from 2003-07-12 to 2003-09-17.
3 # First, there was a bug that would make utimes set mtime
4 # and atime to zero (1970-01-01) unconditionally.
5 # Then, there was code to round rather than truncate.
7 # From Jim Meyering, with suggestions from Paul Eggert.
9 AC_DEFUN([gl_FUNC_UTIMES],
11 AC_CACHE_CHECK([determine whether the utimes function works],
12 gl_cv_func_working_utimes,
14 AC_RUN_IFELSE([AC_LANG_SOURCE([[
15 #include <sys/types.h>
26 static struct timeval timeval[2] = {{9, 10}, {999999, 999999}};
28 char const *file = "conftest.utimes";
31 exit ( ! ((f = fopen (file, "w"))
33 && utimes (file, timeval) == 0
34 && lstat (file, &sbuf) == 0
35 && sbuf.st_atime == timeval[0].tv_sec
36 && sbuf.st_mtime == timeval[1].tv_sec) );
39 [gl_cv_func_working_utimes=yes],
40 [gl_cv_func_working_utimes=no],
41 [gl_cv_func_working_utimes=no])])
43 if test $gl_cv_func_working_utimes = yes; then
44 AC_DEFINE([HAVE_WORKING_UTIMES], 1, [Define if utimes works properly. ])