From 3cd245c54c25ab71be7d6b3b16ab51324e2173c5 Mon Sep 17 00:00:00 2001 From: "Valeriano A.R" Date: Sat, 8 Jul 2017 15:32:09 +0200 Subject: [PATCH] Fix timing issues on FileNode_Build. --- src/filenode.c | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/src/filenode.c b/src/filenode.c index bc1a4ad..79aaaa7 100644 --- a/src/filenode.c +++ b/src/filenode.c @@ -495,20 +495,24 @@ FileNode FileNode_Refresh(FileNode fileNode, char *filePath) { if (File_IsDirectory(filePath)) { FileNode fileNodeChild; - // Check directory data + // Check directory data + if (fileNode->status == FileStatus_Deleted) { + fileNode->status = FileStatus_Modified; + fileNode->fileTime = Time_GetCurrentTime(); + } if (!(fileNode->flags & FileFlag_Directory)) { fileNode->status = FileStatus_Modified; fileNode->flags |= FileFlag_Directory; fileNode->flags &= ~FileFlag_Normal; } fileTime = FileTime_Get(filePath); - if (fileNode->status == FileStatus_Deleted) { - fileNode->status = FileStatus_Modified; - fileNode->fileTime = fileTime; - } if (fileTime != fileNode->fileTime) { - fileNode->status = FileStatus_Modified; - fileNode->fileTime = fileTime; + fileNode->status = FileStatus_Modified; + if (fileTime < 0 || fileNode->fileTime > fileTime) { + fileNode->fileTime = Time_GetCurrentTime(); + }else{ + fileNode->fileTime = fileTime; + } } // Mark childs for review @@ -532,6 +536,10 @@ FileNode FileNode_Refresh(FileNode fileNode, char *filePath) { } } else { // Comprar datos de los ficheros + if (fileNode->status == FileStatus_Deleted) { + fileNode->status = FileStatus_Modified; + fileNode->fileTime = Time_GetCurrentTime(); + } if (!(fileNode->flags & FileFlag_Normal)) { fileNode->status = FileStatus_Modified; fileNode->flags |= FileFlag_Normal; @@ -542,13 +550,13 @@ FileNode FileNode_Refresh(FileNode fileNode, char *filePath) { fileNode->status = FileStatus_Modified; fileNode->size = size; } - if (fileNode->status == FileStatus_Deleted) { - fileNode->status = FileStatus_Modified; - fileNode->fileTime = fileTime; - } if (fileTime != fileNode->fileTime) { - fileNode->status = FileStatus_Modified; - fileNode->fileTime = fileTime; + fileNode->status = FileStatus_Modified; + if (fileTime < 0 || fileNode->fileTime > fileTime) { + fileNode->fileTime = Time_GetCurrentTime(); + }else{ + fileNode->fileTime = fileTime; + } } if (fileNode->status == FileStatus_Modified) { fileNode->flags &= ~FileFlag_HasCRC;