Fossil SCM

Avoid the use of utimensat() on older unix platforms.

drh 2018-01-07 23:29 trunk
Commit 2aa7a23b8f3d6c8acbf08cd4d0262308b27b46f8e939fd6d76e5f09963cba7da
3 files changed +20 -9 +2 -2 +1 -1
+20 -9
--- src/shell.c
+++ src/shell.c
@@ -2237,19 +2237,12 @@
22372237
sqlite3_result_int64(pCtx, nWrite);
22382238
}
22392239
}
22402240
22412241
if( mtime>=0 ){
2242
-#if !defined(_WIN32) && !defined(WIN32)
2243
- struct timespec times[2];
2244
- times[0].tv_nsec = times[1].tv_nsec = 0;
2245
- times[0].tv_sec = time(0);
2246
- times[1].tv_sec = mtime;
2247
- if( utimensat(AT_FDCWD, zFile, times, AT_SYMLINK_NOFOLLOW) ){
2248
- return 1;
2249
- }
2250
-#else
2242
+#if defined(_WIN32)
2243
+ /* Windows */
22512244
FILETIME lastAccess;
22522245
FILETIME lastWrite;
22532246
SYSTEMTIME currentTime;
22542247
LONGLONG intervals;
22552248
HANDLE hFile;
@@ -2266,10 +2259,28 @@
22662259
BOOL bResult = SetFileTime(hFile, NULL, &lastAccess, &lastWrite);
22672260
CloseHandle(hFile);
22682261
return !bResult;
22692262
}else{
22702263
return 1;
2264
+ }
2265
+#elif defined(AT_FDCWD)
2266
+ /* Recent unix */
2267
+ struct timespec times[2];
2268
+ times[0].tv_nsec = times[1].tv_nsec = 0;
2269
+ times[0].tv_sec = time(0);
2270
+ times[1].tv_sec = mtime;
2271
+ if( utimensat(AT_FDCWD, zFile, times, AT_SYMLINK_NOFOLLOW) ){
2272
+ return 1;
2273
+ }
2274
+#else
2275
+ /* Legacy unix */
2276
+ struct timeval times[2];
2277
+ times[0].tv_usec = times[1].tv_usec = 0;
2278
+ times[0].tv_sec = time(0);
2279
+ times[1].tv_sec = mtime;
2280
+ if( utimes(zFile, times) ){
2281
+ return 1;
22712282
}
22722283
#endif
22732284
}
22742285
22752286
return 0;
22762287
--- src/shell.c
+++ src/shell.c
@@ -2237,19 +2237,12 @@
2237 sqlite3_result_int64(pCtx, nWrite);
2238 }
2239 }
2240
2241 if( mtime>=0 ){
2242 #if !defined(_WIN32) && !defined(WIN32)
2243 struct timespec times[2];
2244 times[0].tv_nsec = times[1].tv_nsec = 0;
2245 times[0].tv_sec = time(0);
2246 times[1].tv_sec = mtime;
2247 if( utimensat(AT_FDCWD, zFile, times, AT_SYMLINK_NOFOLLOW) ){
2248 return 1;
2249 }
2250 #else
2251 FILETIME lastAccess;
2252 FILETIME lastWrite;
2253 SYSTEMTIME currentTime;
2254 LONGLONG intervals;
2255 HANDLE hFile;
@@ -2266,10 +2259,28 @@
2266 BOOL bResult = SetFileTime(hFile, NULL, &lastAccess, &lastWrite);
2267 CloseHandle(hFile);
2268 return !bResult;
2269 }else{
2270 return 1;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2271 }
2272 #endif
2273 }
2274
2275 return 0;
2276
--- src/shell.c
+++ src/shell.c
@@ -2237,19 +2237,12 @@
2237 sqlite3_result_int64(pCtx, nWrite);
2238 }
2239 }
2240
2241 if( mtime>=0 ){
2242 #if defined(_WIN32)
2243 /* Windows */
 
 
 
 
 
 
 
2244 FILETIME lastAccess;
2245 FILETIME lastWrite;
2246 SYSTEMTIME currentTime;
2247 LONGLONG intervals;
2248 HANDLE hFile;
@@ -2266,10 +2259,28 @@
2259 BOOL bResult = SetFileTime(hFile, NULL, &lastAccess, &lastWrite);
2260 CloseHandle(hFile);
2261 return !bResult;
2262 }else{
2263 return 1;
2264 }
2265 #elif defined(AT_FDCWD)
2266 /* Recent unix */
2267 struct timespec times[2];
2268 times[0].tv_nsec = times[1].tv_nsec = 0;
2269 times[0].tv_sec = time(0);
2270 times[1].tv_sec = mtime;
2271 if( utimensat(AT_FDCWD, zFile, times, AT_SYMLINK_NOFOLLOW) ){
2272 return 1;
2273 }
2274 #else
2275 /* Legacy unix */
2276 struct timeval times[2];
2277 times[0].tv_usec = times[1].tv_usec = 0;
2278 times[0].tv_sec = time(0);
2279 times[1].tv_sec = mtime;
2280 if( utimes(zFile, times) ){
2281 return 1;
2282 }
2283 #endif
2284 }
2285
2286 return 0;
2287
+2 -2
--- src/sqlite3.c
+++ src/sqlite3.c
@@ -1147,11 +1147,11 @@
11471147
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
11481148
** [sqlite_version()] and [sqlite_source_id()].
11491149
*/
11501150
#define SQLITE_VERSION "3.22.0"
11511151
#define SQLITE_VERSION_NUMBER 3022000
1152
-#define SQLITE_SOURCE_ID "2018-01-07 21:58:17 0a50c9e3bb0dbdaaec819ac6453276ba287b475ea322918ddda1ab3a1ec4b58b"
1152
+#define SQLITE_SOURCE_ID "2018-01-07 23:28:10 90cb01d8d6ac12d0b88f2952a75aeefa81ba66f5e4a5377fdd8b9f86aec8e927"
11531153
11541154
/*
11551155
** CAPI3REF: Run-Time Library Version Numbers
11561156
** KEYWORDS: sqlite3_version sqlite3_sourceid
11571157
**
@@ -207211,10 +207211,10 @@
207211207211
#endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_STMTVTAB) */
207212207212
207213207213
/************** End of stmt.c ************************************************/
207214207214
#if __LINE__!=207214
207215207215
#undef SQLITE_SOURCE_ID
207216
-#define SQLITE_SOURCE_ID "2018-01-07 21:58:17 0a50c9e3bb0dbdaaec819ac6453276ba287b475ea322918ddda1ab3a1ec4alt2"
207216
+#define SQLITE_SOURCE_ID "2018-01-07 23:28:10 90cb01d8d6ac12d0b88f2952a75aeefa81ba66f5e4a5377fdd8b9f86aec8alt2"
207217207217
#endif
207218207218
/* Return the source-id for this library */
207219207219
SQLITE_API const char *sqlite3_sourceid(void){ return SQLITE_SOURCE_ID; }
207220207220
/************************** End of sqlite3.c ******************************/
207221207221
--- src/sqlite3.c
+++ src/sqlite3.c
@@ -1147,11 +1147,11 @@
1147 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
1148 ** [sqlite_version()] and [sqlite_source_id()].
1149 */
1150 #define SQLITE_VERSION "3.22.0"
1151 #define SQLITE_VERSION_NUMBER 3022000
1152 #define SQLITE_SOURCE_ID "2018-01-07 21:58:17 0a50c9e3bb0dbdaaec819ac6453276ba287b475ea322918ddda1ab3a1ec4b58b"
1153
1154 /*
1155 ** CAPI3REF: Run-Time Library Version Numbers
1156 ** KEYWORDS: sqlite3_version sqlite3_sourceid
1157 **
@@ -207211,10 +207211,10 @@
207211 #endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_STMTVTAB) */
207212
207213 /************** End of stmt.c ************************************************/
207214 #if __LINE__!=207214
207215 #undef SQLITE_SOURCE_ID
207216 #define SQLITE_SOURCE_ID "2018-01-07 21:58:17 0a50c9e3bb0dbdaaec819ac6453276ba287b475ea322918ddda1ab3a1ec4alt2"
207217 #endif
207218 /* Return the source-id for this library */
207219 SQLITE_API const char *sqlite3_sourceid(void){ return SQLITE_SOURCE_ID; }
207220 /************************** End of sqlite3.c ******************************/
207221
--- src/sqlite3.c
+++ src/sqlite3.c
@@ -1147,11 +1147,11 @@
1147 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
1148 ** [sqlite_version()] and [sqlite_source_id()].
1149 */
1150 #define SQLITE_VERSION "3.22.0"
1151 #define SQLITE_VERSION_NUMBER 3022000
1152 #define SQLITE_SOURCE_ID "2018-01-07 23:28:10 90cb01d8d6ac12d0b88f2952a75aeefa81ba66f5e4a5377fdd8b9f86aec8e927"
1153
1154 /*
1155 ** CAPI3REF: Run-Time Library Version Numbers
1156 ** KEYWORDS: sqlite3_version sqlite3_sourceid
1157 **
@@ -207211,10 +207211,10 @@
207211 #endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_STMTVTAB) */
207212
207213 /************** End of stmt.c ************************************************/
207214 #if __LINE__!=207214
207215 #undef SQLITE_SOURCE_ID
207216 #define SQLITE_SOURCE_ID "2018-01-07 23:28:10 90cb01d8d6ac12d0b88f2952a75aeefa81ba66f5e4a5377fdd8b9f86aec8alt2"
207217 #endif
207218 /* Return the source-id for this library */
207219 SQLITE_API const char *sqlite3_sourceid(void){ return SQLITE_SOURCE_ID; }
207220 /************************** End of sqlite3.c ******************************/
207221
+1 -1
--- src/sqlite3.h
+++ src/sqlite3.h
@@ -123,11 +123,11 @@
123123
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
124124
** [sqlite_version()] and [sqlite_source_id()].
125125
*/
126126
#define SQLITE_VERSION "3.22.0"
127127
#define SQLITE_VERSION_NUMBER 3022000
128
-#define SQLITE_SOURCE_ID "2018-01-07 21:58:17 0a50c9e3bb0dbdaaec819ac6453276ba287b475ea322918ddda1ab3a1ec4b58b"
128
+#define SQLITE_SOURCE_ID "2018-01-07 23:28:10 90cb01d8d6ac12d0b88f2952a75aeefa81ba66f5e4a5377fdd8b9f86aec8e927"
129129
130130
/*
131131
** CAPI3REF: Run-Time Library Version Numbers
132132
** KEYWORDS: sqlite3_version sqlite3_sourceid
133133
**
134134
--- src/sqlite3.h
+++ src/sqlite3.h
@@ -123,11 +123,11 @@
123 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
124 ** [sqlite_version()] and [sqlite_source_id()].
125 */
126 #define SQLITE_VERSION "3.22.0"
127 #define SQLITE_VERSION_NUMBER 3022000
128 #define SQLITE_SOURCE_ID "2018-01-07 21:58:17 0a50c9e3bb0dbdaaec819ac6453276ba287b475ea322918ddda1ab3a1ec4b58b"
129
130 /*
131 ** CAPI3REF: Run-Time Library Version Numbers
132 ** KEYWORDS: sqlite3_version sqlite3_sourceid
133 **
134
--- src/sqlite3.h
+++ src/sqlite3.h
@@ -123,11 +123,11 @@
123 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
124 ** [sqlite_version()] and [sqlite_source_id()].
125 */
126 #define SQLITE_VERSION "3.22.0"
127 #define SQLITE_VERSION_NUMBER 3022000
128 #define SQLITE_SOURCE_ID "2018-01-07 23:28:10 90cb01d8d6ac12d0b88f2952a75aeefa81ba66f5e4a5377fdd8b9f86aec8e927"
129
130 /*
131 ** CAPI3REF: Run-Time Library Version Numbers
132 ** KEYWORDS: sqlite3_version sqlite3_sourceid
133 **
134

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button