Add date code

This commit is contained in:
2025-05-10 19:52:23 -05:00
parent 1cb9bc93ee
commit 21b0418926
31 changed files with 21614 additions and 78 deletions

View File

@ -19,25 +19,26 @@ namespace Tesses::Framework::Filesystem
pft->dwHighDateTime = time_value.HighPart;
}
#endif
void LocalFilesystem::GetDate(VFSPath path, time_t& lastWrite, time_t& lastAccess)
void LocalFilesystem::GetDate(VFSPath path, Date::DateTime& lastWrite, Date::DateTime& lastAccess)
{
std::string s = VFSPathToSystem(path);
struct stat st;
if(stat(s.c_str(),&st) == 0)
{
lastAccess = st.st_atime;
lastWrite = st.st_mtime;
lastAccess = Date::DateTime((int64_t)st.st_atime);
lastWrite = Date::DateTime((int64_t)st.st_mtime);
}
}
void LocalFilesystem::SetDate(VFSPath path, time_t lastWrite, time_t lastAccess)
void LocalFilesystem::SetDate(VFSPath path, Date::DateTime lastWrite, Date::DateTime lastAccess)
{
std::string s = VFSPathToSystem(path);
#if defined(TESSESFRAMEWORK_ENABLE_SETDATE)
#if defined(_WIN32)
FILETIME lastWriteF;
FILETIME lastAccessF;
TimetToFileTime(lastWrite,&lastWriteF);
TimetToFileTime(lastAccess,&lastAccessF);
TimetToFileTime((time_t)lastWrite.ToEpoch(),&lastWriteF);
TimetToFileTime((time_t)lastAccess.ToEpoch(),&lastAccessF);
HANDLE hFile = CreateFileA(
s.c_str(),
FILE_WRITE_ATTRIBUTES,
@ -59,8 +60,8 @@ namespace Tesses::Framework::Filesystem
}
#else
struct utimbuf utim;
utim.actime = lastAccess;
utim.modtime = lastWrite;
utim.actime = (time_t)lastAccess.ToEpoch();
utim.modtime = (time_t)lastWrite.ToEpoch();
utime(s.c_str(),&utim);
#endif
#endif

View File

@ -202,7 +202,7 @@ namespace Tesses::Framework::Filesystem
}
file->data->canAccess=false;
file->data->readers++;
if(truncate) {file->data->file.clear(); file->data->lastWrite=time(NULL);}
if(truncate) {file->data->file.clear(); file->data->lastWrite=Date::DateTime::NowUTC();}
mtx->Unlock();
return new MemoryFilesystemStream(mtx,file->data,canRead,canWrite,canSeek);
@ -303,7 +303,7 @@ namespace Tesses::Framework::Filesystem
}
thefile->data->canAccess=false;
thefile->data->readers++;
if(truncate) {thefile->data->file.clear(); thefile->data->lastWrite=time(NULL);}
if(truncate) {thefile->data->file.clear(); thefile->data->lastWrite=Date::DateTime::NowUTC();}
mtx->Unlock();
return new MemoryFilesystemStream(mtx,thefile->data,canRead,canWrite,canSeek);
}
@ -350,10 +350,10 @@ namespace Tesses::Framework::Filesystem
MemoryDirectory* dir2 = new MemoryDirectory();
dir2->name = part;
dir2->lastWrite=time(NULL);
dir2->lastWrite=Date::DateTime::NowUTC();
dir->entries.push_back(dir2);
dir->lastWrite=time(NULL);
dir->lastWrite=Date::DateTime::NowUTC();
dir=dir2;
}
@ -387,7 +387,7 @@ namespace Tesses::Framework::Filesystem
delete item;
dir->entries.erase(index);
dir->lastWrite=time(NULL);
dir->lastWrite=Date::DateTime::NowUTC();
}
break;
}
@ -450,7 +450,7 @@ namespace Tesses::Framework::Filesystem
{
delete item;
dir->entries.erase(index);
dir->lastWrite=time(NULL);
dir->lastWrite=Date::DateTime::NowUTC();
}
break;
}
@ -482,7 +482,7 @@ namespace Tesses::Framework::Filesystem
if(p != nullptr)
{
p->linkedTo = existingFile;
p->lastWrite = time(NULL);
p->lastWrite = Date::DateTime::NowUTC();
}
mtx->Unlock();
return;
@ -491,9 +491,9 @@ namespace Tesses::Framework::Filesystem
MemorySymlink* symlink = new MemorySymlink();
symlink->name = fname;
symlink->linkedTo = existingFile;
symlink->lastWrite = time(NULL);
symlink->lastWrite = Date::DateTime::NowUTC();
dir->entries.push_back(symlink);
dir->lastWrite = time(NULL);
dir->lastWrite = Date::DateTime::NowUTC();
mtx->Unlock();
}
@ -558,7 +558,7 @@ namespace Tesses::Framework::Filesystem
memFile->name = fname;
memFile->data = existing->data;
dir->entries.push_back(memFile);
dir->lastWrite=time(NULL);
dir->lastWrite=Date::DateTime::NowUTC();
mtx->Unlock();
}
@ -601,7 +601,7 @@ namespace Tesses::Framework::Filesystem
{
return path;
}
void MemoryFilesystem::GetDate(VFSPath path, time_t& lastWrite, time_t& lastAccess)
void MemoryFilesystem::GetDate(VFSPath path, Date::DateTime& lastWrite, Date::DateTime& lastAccess)
{
mtx->Lock();
@ -618,7 +618,7 @@ namespace Tesses::Framework::Filesystem
mtx->Unlock();
lastAccess = lastWrite;
}
void MemoryFilesystem::SetDate(VFSPath path, time_t lastWrite, time_t lastAccess)
void MemoryFilesystem::SetDate(VFSPath path, Date::DateTime lastWrite, Date::DateTime lastAccess)
{
mtx->Lock();
auto node = GetEntry(path,false);
@ -652,7 +652,7 @@ namespace Tesses::Framework::Filesystem
}
MemoryDirectory::MemoryDirectory()
{
this->lastWrite = time(NULL);
this->lastWrite = Date::DateTime::NowUTC();
}
MemoryDirectory::~MemoryDirectory()
{
@ -660,7 +660,7 @@ namespace Tesses::Framework::Filesystem
}
MemoryFileData::MemoryFileData()
{
this->lastWrite = time(NULL);
this->lastWrite = Date::DateTime::NowUTC();
this->canAccess=true;
this->readers=0;

View File

@ -288,7 +288,7 @@ namespace Tesses::Framework::Filesystem
vfs->DeleteFile(destPath);
}
void MountableFilesystem::GetDate(VFSPath path, time_t& lastWrite, time_t& lastAccess)
void MountableFilesystem::GetDate(VFSPath path, Date::DateTime& lastWrite, Date::DateTime& lastAccess)
{
path = path.CollapseRelativeParents();
@ -302,7 +302,7 @@ namespace Tesses::Framework::Filesystem
if(vfs != nullptr)
vfs->GetDate(destPath,lastWrite,lastAccess);
}
void MountableFilesystem::SetDate(VFSPath path, time_t lastWrite, time_t lastAccess)
void MountableFilesystem::SetDate(VFSPath path, Date::DateTime lastWrite, Date::DateTime lastAccess)
{
path = path.CollapseRelativeParents();

View File

@ -107,11 +107,11 @@ namespace Tesses::Framework::Filesystem
delete enumerator;
});
}
void SubdirFilesystem::GetDate(VFSPath path, time_t& lastWrite, time_t& lastAccess)
void SubdirFilesystem::GetDate(VFSPath path, Date::DateTime& lastWrite, Date::DateTime& lastAccess)
{
this->parent->GetDate(ToParent(path),lastWrite,lastAccess);
}
void SubdirFilesystem::SetDate(VFSPath path, time_t lastWrite, time_t lastAccess)
void SubdirFilesystem::SetDate(VFSPath path, Date::DateTime lastWrite, Date::DateTime lastAccess)
{
this->parent->SetDate(ToParent(path),lastWrite,lastAccess);
}

View File

@ -490,11 +490,11 @@ namespace Tesses::Framework::Filesystem
}
DeleteDirectory(path);
}
void VFS::GetDate(VFSPath path, time_t& lastWrite, time_t& lastAccess)
void VFS::GetDate(VFSPath path, Date::DateTime& lastWrite, Date::DateTime& lastAccess)
{
}
void VFS::SetDate(VFSPath path, time_t lastWrite, time_t lastAccess)
void VFS::SetDate(VFSPath path, Date::DateTime lastWrite, Date::DateTime lastAccess)
{
}