ntdll: Implement nanosecond precision file time storage.

This commit is contained in:
Erich Hoover 2012-10-25 17:52:25 -06:00 committed by Alexandre Julliard
parent 487c50c1e7
commit 5c95bec847
4 changed files with 23 additions and 1 deletions

1
configure vendored
View File

@ -13012,6 +13012,7 @@ for ac_func in \
fstatfs \ fstatfs \
fstatvfs \ fstatvfs \
ftruncate \ ftruncate \
futimens \
futimes \ futimes \
futimesat \ futimesat \
getattrlist \ getattrlist \

View File

@ -2014,6 +2014,7 @@ AC_CHECK_FUNCS(\
fstatfs \ fstatfs \
fstatvfs \ fstatvfs \
ftruncate \ ftruncate \
futimens \
futimes \ futimes \
futimesat \ futimesat \
getattrlist \ getattrlist \

View File

@ -1562,7 +1562,24 @@ static NTSTATUS set_file_times( int fd, const LARGE_INTEGER *mtime, const LARGE_
{ {
NTSTATUS status = STATUS_SUCCESS; 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 timeval tv[2];
struct stat st; struct stat st;

View File

@ -179,6 +179,9 @@
/* Define to 1 if the system has the type `FT_TrueTypeEngineType'. */ /* Define to 1 if the system has the type `FT_TrueTypeEngineType'. */
#undef HAVE_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. */ /* Define to 1 if you have the `futimes' function. */
#undef HAVE_FUTIMES #undef HAVE_FUTIMES