diff options
author | drh <drh@noemail.net> | 2018-01-07 23:28:10 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2018-01-07 23:28:10 +0000 |
commit | a5da4ef4ad24b2353e6dde41eb2b357bd9129ed8 (patch) | |
tree | b604295d982ab62cf62a4d224412dfbfd544086a /ext/misc/fileio.c | |
parent | 03491a1a1a29aa560e96b8f524a21e802a44db17 (diff) | |
download | sqlite-a5da4ef4ad24b2353e6dde41eb2b357bd9129ed8.tar.gz sqlite-a5da4ef4ad24b2353e6dde41eb2b357bd9129ed8.zip |
Avoid the use of utimensat() on older unix platforms.
FossilOrigin-Name: 90cb01d8d6ac12d0b88f2952a75aeefa81ba66f5e4a5377fdd8b9f86aec8e927
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 } |