ntdll: Implement nanosecond precision file time storage.
This commit is contained in:
parent
487c50c1e7
commit
5c95bec847
|
@ -13012,6 +13012,7 @@ for ac_func in \
|
|||
fstatfs \
|
||||
fstatvfs \
|
||||
ftruncate \
|
||||
futimens \
|
||||
futimes \
|
||||
futimesat \
|
||||
getattrlist \
|
||||
|
|
|
@ -2014,6 +2014,7 @@ AC_CHECK_FUNCS(\
|
|||
fstatfs \
|
||||
fstatvfs \
|
||||
ftruncate \
|
||||
futimens \
|
||||
futimes \
|
||||
futimesat \
|
||||
getattrlist \
|
||||
|
|
|
@ -1562,7 +1562,24 @@ static NTSTATUS set_file_times( int fd, const LARGE_INTEGER *mtime, const LARGE_
|
|||
{
|
||||
NTSTATUS status = STATUS_SUCCESS;
|
||||
|
||||
#if defined(HAVE_FUTIMES) || defined(HAVE_FUTIMESAT)
|
||||
#ifdef HAVE_FUTIMENS
|
||||
struct timespec tv[2];
|
||||
|
||||
tv[0].tv_sec = tv[1].tv_sec = 0;
|
||||
tv[0].tv_nsec = tv[1].tv_nsec = UTIME_OMIT;
|
||||
if (atime->QuadPart)
|
||||
{
|
||||
tv[0].tv_sec = atime->QuadPart / 10000000 - SECS_1601_TO_1970;
|
||||
tv[0].tv_nsec = (atime->QuadPart % 10000000) * 100;
|
||||
}
|
||||
if (mtime->QuadPart)
|
||||
{
|
||||
tv[1].tv_sec = mtime->QuadPart / 10000000 - SECS_1601_TO_1970;
|
||||
tv[1].tv_nsec = (mtime->QuadPart % 10000000) * 100;
|
||||
}
|
||||
if (futimens( fd, tv ) == -1) status = FILE_GetNtStatus();
|
||||
|
||||
#elif defined(HAVE_FUTIMES) || defined(HAVE_FUTIMESAT)
|
||||
struct timeval tv[2];
|
||||
struct stat st;
|
||||
|
||||
|
|
|
@ -179,6 +179,9 @@
|
|||
/* Define to 1 if the system has the type `FT_TrueTypeEngineType'. */
|
||||
#undef HAVE_FT_TRUETYPEENGINETYPE
|
||||
|
||||
/* Define to 1 if you have the `futimens' function. */
|
||||
#undef HAVE_FUTIMENS
|
||||
|
||||
/* Define to 1 if you have the `futimes' function. */
|
||||
#undef HAVE_FUTIMES
|
||||
|
||||
|
|
Loading…
Reference in New Issue