X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=m4%2Futimens.m4;h=f2c755e87901f9550ea37122c1b8c2610aece675;hb=ef3ff90a39110bde148b63b18b997c317eee9751;hp=25a1337ce725c520974de1c25ce76b01b2540255;hpb=9cbe01652c7870c312774f34c6031d13d69f39d7;p=gnulib.git diff --git a/m4/utimens.m4 b/m4/utimens.m4 index 25a1337ce..f2c755e87 100644 --- a/m4/utimens.m4 +++ b/m4/utimens.m4 @@ -1,16 +1,42 @@ -dnl Copyright (C) 2003, 2004 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. +dnl Copyright (C) 2003-2011 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 serial 5 AC_DEFUN([gl_UTIMENS], [ + AC_LIBOBJ([utimens]) + dnl Prerequisites of lib/utimens.c. - AC_REQUIRE([gl_TIMESPEC]) AC_REQUIRE([gl_FUNC_UTIMES]) AC_REQUIRE([gl_CHECK_TYPE_STRUCT_TIMESPEC]) AC_REQUIRE([gl_CHECK_TYPE_STRUCT_UTIMBUF]) - AC_CHECK_FUNCS_ONCE(futimes) + AC_CHECK_FUNCS_ONCE([futimes futimesat futimens utimensat lutimes]) + + if test $ac_cv_func_futimens = no && test $ac_cv_func_futimesat = yes; then + dnl FreeBSD 8.0-rc2 mishandles futimesat(fd,NULL,time). It is not + dnl standardized, but Solaris implemented it first and uses it as + dnl its only means to set fd time. + AC_CACHE_CHECK([whether futimesat handles NULL file], + [gl_cv_func_futimesat_works], + [touch conftest.file + AC_RUN_IFELSE([AC_LANG_PROGRAM([[ +#include +#include +#include +]], [[ int fd = open ("conftest.file", O_RDWR); + if (fd < 0) return 1; + if (futimesat (fd, NULL, NULL)) return 2; + ]])], + [gl_cv_func_futimesat_works=yes], + [gl_cv_func_futimesat_works=no], + [gl_cv_func_futimesat_works="guessing no"]) + rm -f conftest.file]) + if test "$gl_cv_func_futimesat_works" != yes; then + AC_DEFINE([FUTIMESAT_NULL_BUG], [1], + [Define to 1 if futimesat mishandles a NULL file name.]) + fi + fi ])