aboutsummaryrefslogtreecommitdiff
path: root/ext/misc/fileio.c
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2018-01-07 23:28:10 +0000
committerdrh <drh@noemail.net>2018-01-07 23:28:10 +0000
commita5da4ef4ad24b2353e6dde41eb2b357bd9129ed8 (patch)
treeb604295d982ab62cf62a4d224412dfbfd544086a /ext/misc/fileio.c
parent03491a1a1a29aa560e96b8f524a21e802a44db17 (diff)
downloadsqlite-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.c29
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
}