summaryrefslogtreecommitdiff
path: root/m4/utime.m4
blob: 7ad7f665805818ecff77657e3e5ac9e7353fda52 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# serial 9

dnl From Jim Meyering
dnl Replace the utime function on systems that need it.

# Copyright (C) 1998, 2000-2001, 2003-2004, 2009 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.

dnl FIXME

AC_DEFUN([gl_FUNC_UTIME],
[
  AC_REQUIRE([AC_FUNC_UTIME_NULL])
  if test $ac_cv_func_utime_null = no; then
    AC_LIBOBJ([utime])
    AC_DEFINE([utime], [rpl_utime],
      [Define to rpl_utime if the replacement function should be used.])
    gl_PREREQ_UTIME
  fi
])

# Prerequisites of lib/utime.c.
AC_DEFUN([gl_PREREQ_UTIME],
[
  AC_CHECK_HEADERS_ONCE([utime.h])
  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
])
])