Fix cross-compile guess for utime test.
authorBruno Haible <bruno@clisp.org>
Fri, 10 Apr 2009 17:36:32 +0000 (19:36 +0200)
committerBruno Haible <bruno@clisp.org>
Fri, 10 Apr 2009 17:40:02 +0000 (19:40 +0200)
ChangeLog
doc/posix-functions/utime.texi
m4/utime.m4

index 004d784..97c189b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2009-04-10  Bruno Haible  <bruno@clisp.org>
+
+       Fix cross-compile guess for utime test.
+       * m4/utime.m4 (AC_FUNC_UTIME_NULL): Add definition from newest unstable
+       autoconf.
+       * doc/posix-functions/utime.texi: Give more precisions.
+       Reported by Jan <ipif@ymail.com>.
+
 2009-04-09  Kamil Dudka  <kdudka@redhat.com>
 
        filevercmp: correct today's change
index 0f7b1f8..9b5a7ee 100644 (file)
@@ -9,8 +9,8 @@ Gnulib module: utime
 Portability problems fixed by Gnulib:
 @itemize
 @item
-On some old platforms, @code{utime (file, NULL)} fails to set the file's
-timestamp to the current time.
+On some old platforms (Sequent), @code{utime (file, NULL)} fails to set the
+file's timestamp to the current time.
 @end itemize
 
 Portability problems not fixed by Gnulib:
index 26b5ea9..f090e7b 100644 (file)
@@ -1,4 +1,4 @@
-# serial 8
+# serial 9
 
 dnl From Jim Meyering
 dnl Replace the utime function on systems that need it.
@@ -28,3 +28,34 @@ AC_DEFUN([gl_PREREQ_UTIME],
   AC_REQUIRE([gl_CHECK_TYPE_STRUCT_UTIMBUF])
   gl_FUNC_UTIMES_NULL
 ])
+
+# Use the definition of AC_FUNC_UTIME_NULL from autoconf 2.64 or newer.
+# Remove this macro when we can assume autoconf >= 2.64.
+m4_version_prereq([2.64], [], [
+AC_DEFUN([AC_FUNC_UTIME_NULL],
+[AC_CHECK_HEADERS_ONCE([utime.h])
+AC_CACHE_CHECK([whether utime accepts a null argument], [ac_cv_func_utime_null],
+[rm -f conftest.data; >conftest.data
+# Sequent interprets utime(file, 0) to mean use start of epoch.  Wrong.
+AC_RUN_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT
+              #ifdef HAVE_UTIME_H
+              # include <utime.h>
+              #endif],
+[[struct stat s, t;
+  return ! (stat ("conftest.data", &s) == 0
+           && utime ("conftest.data", 0) == 0
+           && stat ("conftest.data", &t) == 0
+           && t.st_mtime >= s.st_mtime
+           && t.st_mtime - s.st_mtime < 120);]])],
+             ac_cv_func_utime_null=yes,
+             ac_cv_func_utime_null=no,
+             ac_cv_func_utime_null='guessing yes')])
+if test "x$ac_cv_func_utime_null" != xno; then
+  ac_cv_func_utime_null=yes
+  AC_DEFINE([HAVE_UTIME_NULL], [1],
+           [Define to 1 if `utime(file, NULL)' sets file's timestamp to the
+            present.])
+fi
+rm -f conftest.data
+])
+])