From 31d3c116144301b51fc50ad7934fe6f988b7029c Mon Sep 17 00:00:00 2001 From: root Date: Wed, 1 Dec 2010 07:30:38 +0000 Subject: futimes/utimes --- Changes | 2 ++ eio.c | 13 +++++++++---- libeio.m4 | 14 ++++++++++++++ 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/Changes b/Changes index bec431b..b85c71a 100644 --- a/Changes +++ b/Changes @@ -28,4 +28,6 @@ TODO: openbsd requites stdint.h for intptr_t - why posix? - no longer set errno to 0 before making syscalls, this only lures people into the trap of believing errno shows success or failure. - "fix" demo.c so that it works as non-root. + - suppoert utimes seperately from futimes, as some systems have + utimes but not futimes. diff --git a/eio.c b/eio.c index f810de2..4963fc1 100644 --- a/eio.c +++ b/eio.c @@ -818,12 +818,10 @@ eio__pwrite (int fd, void *buf, size_t count, off_t offset) } #endif -#ifndef HAVE_FUTIMES +#ifndef HAVE_UTIMES # undef utimes -# undef futimes -# define utimes(path,times) eio__utimes (path, times) -# define futimes(fd,times) eio__futimes (fd, times) +# define utimes(path,times) eio__utimes (path, times) static int eio__utimes (const char *filename, const struct timeval times[2]) @@ -841,6 +839,13 @@ eio__utimes (const char *filename, const struct timeval times[2]) return utime (filename, 0); } +#endif + +#ifndef HAVE_FUTIMES + +# undef futimes +# define futimes(fd,times) eio__futimes (fd, times) + static int eio__futimes (int fd, const struct timeval tv[2]) { errno = ENOSYS; diff --git a/libeio.m4 b/libeio.m4 index fdd936b..13f9dfc 100644 --- a/libeio.m4 +++ b/libeio.m4 @@ -5,6 +5,20 @@ AC_SEARCH_LIBS( [AC_MSG_ERROR(pthread functions not found)] ) +AC_CACHE_CHECK(for utimes, ac_cv_utimes, [AC_LINK_IFELSE([[ +#include +#include +#include +struct timeval tv[2]; +int res; +int main (void) +{ + res = utimes ("/", tv); + return 0; +} +]],ac_cv_utimes=yes,ac_cv_utimes=no)]) +test $ac_cv_utimes = yes && AC_DEFINE(HAVE_UTIMES, 1, utimes(2) is available) + AC_CACHE_CHECK(for futimes, ac_cv_futimes, [AC_LINK_IFELSE([[ #include #include -- cgit v1.2.3