# HG changeset patch # User Jim Meyering # Date 901372598 0 # Node ID b80894839f0d76949c5ca91ec70c12979ecb0690 # Parent ba6fdbf593bbbf2e34e3d1e062d34da06738fb94 . diff --git a/m4/utime.m4 b/m4/utime.m4 new file mode 100644 --- /dev/null +++ b/m4/utime.m4 @@ -0,0 +1,18 @@ +#serial 1 + +dnl From Jim Meyering +dnl Replace the utime function on systems that need it. + +dnl FIXME + +AC_DEFUN(jm_FUNC_UTIME, +[ + AC_CHECK_HEADERS(utime.h) + AC_REQUIRE([jm_STRUCT_UTIMBUF]) + AC_REQUIRE([AC_FUNC_UTIME_NULL]) + + if test $ac_cv_func_utime_null = no; then + jm_FUNC_UTIMES_NULL + AC_REPLACE_FUNCS(utime) + fi +]) diff --git a/m4/utimes.m4 b/m4/utimes.m4 new file mode 100644 --- /dev/null +++ b/m4/utimes.m4 @@ -0,0 +1,34 @@ +#serial 1 + +dnl Shamelessly cloned from acspecific.m4's AC_FUNC_UTIME_NULL. + +AC_DEFUN(jm_FUNC_UTIMES_NULL, +[AC_CACHE_CHECK(whether utimes accepts a null argument, ac_cv_func_utimes_null, +[rm -f conftestdata; > conftestdata +AC_TRY_RUN([#include +#include +main() { +struct stat s, t; +exit(!(stat ("conftestdata", &s) == 0 && utimes("conftestdata", (long *)0) == 0 +&& stat("conftestdata", &t) == 0 && t.st_mtime >= s.st_mtime +&& t.st_mtime - s.st_mtime < 120)); +}], ac_cv_func_utimes_null=yes, ac_cv_func_utimes_null=no, + ac_cv_func_utimes_null=no) +rm -f core core.* *.core]) + + if test $ac_cv_func_utimes_null = yes; then + if test x = y; then + # This code is deliberately never run via ./configure. + # FIXME: this is a hack to make autoheader put the corresponding + # HAVE_* undef for this symbol in config.h.in. This saves me the + # trouble of having to maintain the #undef in acconfig.h manually. + AC_CHECK_FUNCS(UTIMES_NULL) + fi + # Defining it this way (rather than via AC_DEFINE) short-circuits the + # autoheader check -- autoheader doesn't know it's already been taken + # care of by the hack above. + ac_kludge=HAVE_UTIMES_NULL + AC_DEFINE_UNQUOTED($ac_kludge) + fi + ] +)