mirror of
https://github.com/winfsp/winfsp.git
synced 2025-04-23 17:03:12 -05:00
tst: memfs: update parent timestamp on create/delete
This commit is contained in:
parent
ff3436718c
commit
2d85c7bf73
@ -384,6 +384,21 @@ MEMFS_FILE_NODE *MemfsFileNodeMapGetParent(MEMFS_FILE_NODE_MAP *FileNodeMap, PWS
|
|||||||
return iter->second;
|
return iter->second;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline
|
||||||
|
VOID MemfsFileNodeMapTouchParent(MEMFS_FILE_NODE_MAP *FileNodeMap, MEMFS_FILE_NODE *FileNode)
|
||||||
|
{
|
||||||
|
NTSTATUS Result;
|
||||||
|
MEMFS_FILE_NODE *Parent;
|
||||||
|
if (L'\\' == FileNode->FileName[0] && L'\0' == FileNode->FileName[1])
|
||||||
|
return;
|
||||||
|
Parent = MemfsFileNodeMapGetParent(FileNodeMap, FileNode->FileName, &Result);
|
||||||
|
if (0 == Parent)
|
||||||
|
return;
|
||||||
|
Parent->FileInfo.LastAccessTime =
|
||||||
|
Parent->FileInfo.LastWriteTime =
|
||||||
|
Parent->FileInfo.ChangeTime = MemfsGetSystemTime();
|
||||||
|
}
|
||||||
|
|
||||||
static inline
|
static inline
|
||||||
NTSTATUS MemfsFileNodeMapInsert(MEMFS_FILE_NODE_MAP *FileNodeMap, MEMFS_FILE_NODE *FileNode,
|
NTSTATUS MemfsFileNodeMapInsert(MEMFS_FILE_NODE_MAP *FileNodeMap, MEMFS_FILE_NODE *FileNode,
|
||||||
PBOOLEAN PInserted)
|
PBOOLEAN PInserted)
|
||||||
@ -393,7 +408,10 @@ NTSTATUS MemfsFileNodeMapInsert(MEMFS_FILE_NODE_MAP *FileNodeMap, MEMFS_FILE_NOD
|
|||||||
{
|
{
|
||||||
*PInserted = FileNodeMap->insert(MEMFS_FILE_NODE_MAP::value_type(FileNode->FileName, FileNode)).second;
|
*PInserted = FileNodeMap->insert(MEMFS_FILE_NODE_MAP::value_type(FileNode->FileName, FileNode)).second;
|
||||||
if (*PInserted)
|
if (*PInserted)
|
||||||
|
{
|
||||||
MemfsFileNodeReference(FileNode);
|
MemfsFileNodeReference(FileNode);
|
||||||
|
MemfsFileNodeMapTouchParent(FileNodeMap, FileNode);
|
||||||
|
}
|
||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
catch (...)
|
catch (...)
|
||||||
@ -406,8 +424,11 @@ static inline
|
|||||||
VOID MemfsFileNodeMapRemove(MEMFS_FILE_NODE_MAP *FileNodeMap, MEMFS_FILE_NODE *FileNode)
|
VOID MemfsFileNodeMapRemove(MEMFS_FILE_NODE_MAP *FileNodeMap, MEMFS_FILE_NODE *FileNode)
|
||||||
{
|
{
|
||||||
if (FileNodeMap->erase(FileNode->FileName))
|
if (FileNodeMap->erase(FileNode->FileName))
|
||||||
|
{
|
||||||
|
MemfsFileNodeMapTouchParent(FileNodeMap, FileNode);
|
||||||
MemfsFileNodeDereference(FileNode);
|
MemfsFileNodeDereference(FileNode);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static inline
|
static inline
|
||||||
BOOLEAN MemfsFileNodeMapHasChild(MEMFS_FILE_NODE_MAP *FileNodeMap, MEMFS_FILE_NODE *FileNode)
|
BOOLEAN MemfsFileNodeMapHasChild(MEMFS_FILE_NODE_MAP *FileNodeMap, MEMFS_FILE_NODE *FileNode)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user