forked from Mirrors/wine-wine
msvcp140: Add _Last_write_time implementation.
Signed-off-by: Piotr Caban <piotr@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>oldstable
parent
efb6b3734a
commit
a9c5ab9da6
|
@ -3666,7 +3666,7 @@
|
||||||
@ extern _LNan _LNan
|
@ extern _LNan _LNan
|
||||||
@ stub _LSinh
|
@ stub _LSinh
|
||||||
@ extern _LSnan _LSnan
|
@ extern _LSnan _LSnan
|
||||||
@ stub _Last_write_time
|
@ cdecl _Last_write_time(int64)
|
||||||
@ cdecl _Link(wstr wstr) tr2_sys__Link_wchar
|
@ cdecl _Link(wstr wstr) tr2_sys__Link_wchar
|
||||||
@ cdecl _Lock_shared_ptr_spin_lock()
|
@ cdecl _Lock_shared_ptr_spin_lock()
|
||||||
@ cdecl _Lstat(wstr ptr)
|
@ cdecl _Lstat(wstr ptr)
|
||||||
|
@ -3696,7 +3696,7 @@
|
||||||
@ cdecl _Remove_dir(wstr) tr2_sys__Remove_dir_wchar
|
@ cdecl _Remove_dir(wstr) tr2_sys__Remove_dir_wchar
|
||||||
@ cdecl _Rename(wstr wstr) tr2_sys__Rename_wchar
|
@ cdecl _Rename(wstr wstr) tr2_sys__Rename_wchar
|
||||||
@ stub _Resize
|
@ stub _Resize
|
||||||
@ stub _Set_last_write_time
|
@ cdecl _Set_last_write_time(wstr int64)
|
||||||
@ stub _Sinh
|
@ stub _Sinh
|
||||||
@ extern _Snan _Snan
|
@ extern _Snan _Snan
|
||||||
@ cdecl _Stat(wstr ptr)
|
@ cdecl _Stat(wstr ptr)
|
||||||
|
|
|
@ -14851,7 +14851,7 @@ static __int64 get_last_write_time(HANDLE h)
|
||||||
__int64 ret;
|
__int64 ret;
|
||||||
|
|
||||||
if(!GetFileTime(h, 0, 0, &wt))
|
if(!GetFileTime(h, 0, 0, &wt))
|
||||||
return 0;
|
return -1;
|
||||||
|
|
||||||
ret = (((__int64)wt.dwHighDateTime)<< 32) + wt.dwLowDateTime;
|
ret = (((__int64)wt.dwHighDateTime)<< 32) + wt.dwLowDateTime;
|
||||||
ret -= TICKS_1601_TO_1970;
|
ret -= TICKS_1601_TO_1970;
|
||||||
|
@ -14877,9 +14877,8 @@ __int64 __cdecl tr2_sys__Last_write_time(char const* path)
|
||||||
return ret / TICKSPERSEC;
|
return ret / TICKSPERSEC;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ?_Last_write_time@sys@tr2@std@@YA_JPB_W@Z */
|
/* _Last_write_time */
|
||||||
/* ?_Last_write_time@sys@tr2@std@@YA_JPEB_W@Z */
|
__int64 __cdecl _Last_write_time(const wchar_t *path)
|
||||||
__int64 __cdecl tr2_sys__Last_write_time_wchar(const wchar_t *path)
|
|
||||||
{
|
{
|
||||||
HANDLE handle;
|
HANDLE handle;
|
||||||
__int64 ret;
|
__int64 ret;
|
||||||
|
@ -14889,11 +14888,19 @@ __int64 __cdecl tr2_sys__Last_write_time_wchar(const wchar_t *path)
|
||||||
handle = CreateFileW(path, 0, FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE,
|
handle = CreateFileW(path, 0, FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE,
|
||||||
NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0);
|
NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0);
|
||||||
if(handle == INVALID_HANDLE_VALUE)
|
if(handle == INVALID_HANDLE_VALUE)
|
||||||
return 0;
|
return -1;
|
||||||
|
|
||||||
ret = get_last_write_time(handle);
|
ret = get_last_write_time(handle);
|
||||||
CloseHandle(handle);
|
CloseHandle(handle);
|
||||||
return ret / TICKSPERSEC;
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ?_Last_write_time@sys@tr2@std@@YA_JPB_W@Z */
|
||||||
|
/* ?_Last_write_time@sys@tr2@std@@YA_JPEB_W@Z */
|
||||||
|
__int64 __cdecl tr2_sys__Last_write_time_wchar(const wchar_t *path)
|
||||||
|
{
|
||||||
|
TRACE("(%s)\n", debugstr_w(path));
|
||||||
|
return _Last_write_time(path) / TICKSPERSEC;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int set_last_write_time(HANDLE h, __int64 time)
|
static int set_last_write_time(HANDLE h, __int64 time)
|
||||||
|
@ -14928,11 +14935,11 @@ void __cdecl tr2_sys__Last_write_time_set(char const* path, __int64 newtime)
|
||||||
CloseHandle(handle);
|
CloseHandle(handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ?_Last_write_time@sys@tr2@std@@YAXPB_W_J@Z */
|
/* _Set_last_write_time */
|
||||||
/* ?_Last_write_time@sys@tr2@std@@YAXPEB_W_J@Z */
|
int __cdecl _Set_last_write_time(const wchar_t *path, __int64 time)
|
||||||
void __cdecl tr2_sys__Last_write_time_set_wchar(const wchar_t *path, __int64 time)
|
|
||||||
{
|
{
|
||||||
HANDLE handle;
|
HANDLE handle;
|
||||||
|
int ret;
|
||||||
|
|
||||||
TRACE("(%s)\n", debugstr_w(path));
|
TRACE("(%s)\n", debugstr_w(path));
|
||||||
|
|
||||||
|
@ -14940,10 +14947,19 @@ void __cdecl tr2_sys__Last_write_time_set_wchar(const wchar_t *path, __int64 tim
|
||||||
FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE,
|
FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE,
|
||||||
NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0);
|
NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0);
|
||||||
if(handle == INVALID_HANDLE_VALUE)
|
if(handle == INVALID_HANDLE_VALUE)
|
||||||
return;
|
return 0;
|
||||||
|
|
||||||
set_last_write_time(handle, time * TICKSPERSEC);
|
ret = set_last_write_time(handle, time);
|
||||||
CloseHandle(handle);
|
CloseHandle(handle);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ?_Last_write_time@sys@tr2@std@@YAXPB_W_J@Z */
|
||||||
|
/* ?_Last_write_time@sys@tr2@std@@YAXPEB_W_J@Z */
|
||||||
|
void __cdecl tr2_sys__Last_write_time_set_wchar(const wchar_t *path, __int64 time)
|
||||||
|
{
|
||||||
|
TRACE("(%s)\n", debugstr_w(path));
|
||||||
|
_Set_last_write_time(path, time * TICKSPERSEC);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ??_Open_dir@sys@tr2@std@@YAPAXPA_WPB_WAAHAAW4file_type@123@@Z */
|
/* ??_Open_dir@sys@tr2@std@@YAPAXPA_WPB_WAAHAAW4file_type@123@@Z */
|
||||||
|
|
Loading…
Reference in New Issue