Fix win32 somewhat?

This commit is contained in:
2025-04-16 08:37:10 -05:00
parent ed387ea373
commit 95d4b185df

View File

@ -2,9 +2,22 @@
#include "TessesFramework/Streams/FileStream.hpp"
#include <iostream>
#include <sys/stat.h>
#if defined(_WIN32)
#include <windows.h>
#undef min
#else
#include <utime.h>
#endif
namespace Tesses::Framework::Filesystem
{
#if defined(_WIN32)
static void TimetToFileTime(time_t t, LPFILETIME pft) {
ULARGE_INTEGER time_value;
time_value.QuadPart = (t * 10000000LL) + 116444736000000000LL;
pft->dwLowDateTime = time_value.LowPart;
pft->dwHighDateTime = time_value.HighPart;
}
#endif
void LocalFilesystem::GetDate(VFSPath path, time_t& lastWrite, time_t& lastAccess)
{
std::string s = VFSPathToSystem(path);
@ -18,10 +31,36 @@ namespace Tesses::Framework::Filesystem
void LocalFilesystem::SetDate(VFSPath path, time_t lastWrite, time_t lastAccess)
{
std::string s = VFSPathToSystem(path);
#if defined(_WIN32)
FILETIME lastWriteF;
FILETIME lastAccessF;
TimetToFileTime(lastWrite,&lastWriteF);
TimetToFileTime(lastAccess,&lastAccessF);
HANDLE hFile = CreateFileA(
s.c_str(),
FILE_WRITE_ATTRIBUTES,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
FILE_FLAG_BACKUP_SEMANTICS, // For directories
NULL
);
if(hFile != INVALID_HANDLE_VALUE)
{
SetFileTime(
hFile,
NULL,
&lastAccessF,
&lastWriteF
);
CloseHandle(hFile);
}
#else
struct utimbuf utim;
utim.actime = lastAccess;
utim.modtime = lastWrite;
utime(s.c_str(),&utim);
#endif
}
VFSPath LocalFilesystem::ReadLink(VFSPath path)
{