diff options
Diffstat (limited to 'ext/misc/fileio.c')
-rw-r--r-- | ext/misc/fileio.c | 29 |
1 files changed, 20 insertions, 9 deletions
diff --git a/ext/misc/fileio.c b/ext/misc/fileio.c index 030b417e4..bb87f9524 100644 --- a/ext/misc/fileio.c +++ b/ext/misc/fileio.c @@ -261,15 +261,8 @@ static int writeFile( } if( mtime>=0 ){ -#if !defined(_WIN32) && !defined(WIN32) - struct timespec times[2]; - times[0].tv_nsec = times[1].tv_nsec = 0; - times[0].tv_sec = time(0); - times[1].tv_sec = mtime; - if( utimensat(AT_FDCWD, zFile, times, AT_SYMLINK_NOFOLLOW) ){ - return 1; - } -#else +#if defined(_WIN32) + /* Windows */ FILETIME lastAccess; FILETIME lastWrite; SYSTEMTIME currentTime; @@ -291,6 +284,24 @@ static int writeFile( }else{ return 1; } +#elif defined(AT_FDCWD) + /* Recent unix */ + struct timespec times[2]; + times[0].tv_nsec = times[1].tv_nsec = 0; + times[0].tv_sec = time(0); + times[1].tv_sec = mtime; + if( utimensat(AT_FDCWD, zFile, times, AT_SYMLINK_NOFOLLOW) ){ + return 1; + } +#else + /* Legacy unix */ + struct timeval times[2]; + times[0].tv_usec = times[1].tv_usec = 0; + times[0].tv_sec = time(0); + times[1].tv_sec = mtime; + if( utimes(zFile, times) ){ + return 1; + } #endif } |