FileNode: Add Undeleted state. This fixes test_MoveToSubdirAndRestore.
This commit is contained in:
@@ -2,12 +2,12 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include "util.h"
|
|
||||||
#include "crc.h"
|
|
||||||
#include "fileutil.h"
|
|
||||||
#include "filenode.h"
|
|
||||||
#include "actionfilenode.h"
|
#include "actionfilenode.h"
|
||||||
#include "actionfilenodesync.h"
|
#include "actionfilenodesync.h"
|
||||||
|
#include "crc.h"
|
||||||
|
#include "filenode.h"
|
||||||
|
#include "fileutil.h"
|
||||||
|
#include "util.h"
|
||||||
|
|
||||||
#define MaxDeltaTime 0
|
#define MaxDeltaTime 0
|
||||||
|
|
||||||
@@ -96,6 +96,12 @@ void AccionFileNode_SyncPair(FileNode fileNodeLeft, FileNode fileNodeRight,
|
|||||||
if (fileNodeRight->status == FileStatus_Deleted &&
|
if (fileNodeRight->status == FileStatus_Deleted &&
|
||||||
fileNodeLeft->status == FileStatus_Deleted) {
|
fileNodeLeft->status == FileStatus_Deleted) {
|
||||||
actionFileNodeNew->action = ActionFileCmp_Nothing;
|
actionFileNodeNew->action = ActionFileCmp_Nothing;
|
||||||
|
} else if (fileNodeLeft->status == FileStatus_Undeleted &&
|
||||||
|
fileNodeRight->status == FileStatus_Deleted) {
|
||||||
|
actionFileNodeNew->action = ActionFileCmp_LeftToRight;
|
||||||
|
} else if (fileNodeLeft->status == FileStatus_Deleted &&
|
||||||
|
fileNodeRight->status == FileStatus_Undeleted) {
|
||||||
|
actionFileNodeNew->action = ActionFileCmp_RightToLeft;
|
||||||
} else if (fileNodeRight->status == FileStatus_Deleted) {
|
} else if (fileNodeRight->status == FileStatus_Deleted) {
|
||||||
actionFileNodeNew->action = ActionFileCmp_DeleteLeft;
|
actionFileNodeNew->action = ActionFileCmp_DeleteLeft;
|
||||||
} else if (fileNodeLeft->status == FileStatus_Deleted) {
|
} else if (fileNodeLeft->status == FileStatus_Deleted) {
|
||||||
@@ -161,6 +167,12 @@ void AccionFileNode_SyncPair(FileNode fileNodeLeft, FileNode fileNodeRight,
|
|||||||
if (fileNodeRight->status == FileStatus_Deleted &&
|
if (fileNodeRight->status == FileStatus_Deleted &&
|
||||||
fileNodeLeft->status == FileStatus_Deleted) {
|
fileNodeLeft->status == FileStatus_Deleted) {
|
||||||
actionFileNodeNew->action = ActionFileCmp_Nothing;
|
actionFileNodeNew->action = ActionFileCmp_Nothing;
|
||||||
|
} else if (fileNodeLeft->status == FileStatus_Undeleted &&
|
||||||
|
fileNodeRight->status == FileStatus_Deleted) {
|
||||||
|
actionFileNodeNew->action = ActionFileCmp_LeftToRight;
|
||||||
|
} else if (fileNodeLeft->status == FileStatus_Deleted &&
|
||||||
|
fileNodeRight->status == FileStatus_Undeleted) {
|
||||||
|
actionFileNodeNew->action = ActionFileCmp_RightToLeft;
|
||||||
} else if (fileNodeRight->status == FileStatus_Deleted) {
|
} else if (fileNodeRight->status == FileStatus_Deleted) {
|
||||||
actionFileNodeNew->action = ActionFileCmp_DeleteLeft;
|
actionFileNodeNew->action = ActionFileCmp_DeleteLeft;
|
||||||
} else if (fileNodeLeft->status == FileStatus_Deleted) {
|
} else if (fileNodeLeft->status == FileStatus_Deleted) {
|
||||||
|
|||||||
@@ -105,12 +105,7 @@ FileNode FileNode_GetRoot(FileNode fileNode) {
|
|||||||
|
|
||||||
void FileNode_SetStatusRec(FileNode fileNode, FileStatus status) {
|
void FileNode_SetStatusRec(FileNode fileNode, FileStatus status) {
|
||||||
FileNode fileNodeChild;
|
FileNode fileNodeChild;
|
||||||
if (status == FileStatus_Deleted && fileNode->status != status) {
|
|
||||||
FileNode fileNodeRoot = FileNode_GetRoot(fileNode);
|
|
||||||
fileNode->fileTime = fileNodeRoot->fileTime;
|
|
||||||
;
|
|
||||||
fileNode->flags |= FileFlag_HasTime;
|
|
||||||
}
|
|
||||||
fileNode->status = status;
|
fileNode->status = status;
|
||||||
fileNodeChild = fileNode->child;
|
fileNodeChild = fileNode->child;
|
||||||
while (fileNodeChild) {
|
while (fileNodeChild) {
|
||||||
@@ -384,7 +379,10 @@ void FileNode_PrintNode(FileNode fileNode) {
|
|||||||
Print(" Modified");
|
Print(" Modified");
|
||||||
}
|
}
|
||||||
if (fileNode->status == FileStatus_Deleted) {
|
if (fileNode->status == FileStatus_Deleted) {
|
||||||
Print(" Deleted!!!");
|
Print(" Deleted");
|
||||||
|
}
|
||||||
|
if (fileNode->status == FileStatus_Undeleted) {
|
||||||
|
Print(" Undeleted");
|
||||||
}
|
}
|
||||||
Print("\n");
|
Print("\n");
|
||||||
|
|
||||||
@@ -497,7 +495,7 @@ FileNode FileNode_Refresh(FileNode fileNode, char *filePath) {
|
|||||||
// Check directory data
|
// Check directory data
|
||||||
fileTime = FileTime_Get(filePath);
|
fileTime = FileTime_Get(filePath);
|
||||||
if (fileNode->status == FileStatus_Deleted) {
|
if (fileNode->status == FileStatus_Deleted) {
|
||||||
fileNode->status = FileStatus_Modified;
|
fileNode->status = FileStatus_Undeleted;
|
||||||
fileNode->fileTime = fileTime;
|
fileNode->fileTime = fileTime;
|
||||||
}
|
}
|
||||||
if (!(fileNode->flags & FileFlag_Directory)) {
|
if (!(fileNode->flags & FileFlag_Directory)) {
|
||||||
@@ -533,7 +531,7 @@ FileNode FileNode_Refresh(FileNode fileNode, char *filePath) {
|
|||||||
// Comprar datos de los ficheros
|
// Comprar datos de los ficheros
|
||||||
File_GetSizeAndTime(filePath, &size, &fileTime);
|
File_GetSizeAndTime(filePath, &size, &fileTime);
|
||||||
if (fileNode->status == FileStatus_Deleted) {
|
if (fileNode->status == FileStatus_Deleted) {
|
||||||
fileNode->status = FileStatus_Modified;
|
fileNode->status = FileStatus_Undeleted;
|
||||||
fileNode->fileTime = fileTime;
|
fileNode->fileTime = fileTime;
|
||||||
}
|
}
|
||||||
if (!(fileNode->flags & FileFlag_Normal)) {
|
if (!(fileNode->flags & FileFlag_Normal)) {
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
#define FileNode_Filename "nodesFile.fs"
|
#define FileNode_Filename "nodesFile.fs"
|
||||||
|
|
||||||
#define FileNode_Version 4
|
#define FileNode_Version 5
|
||||||
|
|
||||||
#define FileFlag_Root 1
|
#define FileFlag_Root 1
|
||||||
#define FileFlag_Normal 2
|
#define FileFlag_Normal 2
|
||||||
@@ -20,7 +20,8 @@ typedef enum EFileStatus {
|
|||||||
FileStatus_None,
|
FileStatus_None,
|
||||||
FileStatus_New,
|
FileStatus_New,
|
||||||
FileStatus_Modified,
|
FileStatus_Modified,
|
||||||
FileStatus_Deleted
|
FileStatus_Deleted,
|
||||||
|
FileStatus_Undeleted
|
||||||
} FileStatus;
|
} FileStatus;
|
||||||
|
|
||||||
typedef struct TFileNode TFileNode, *FileNode;
|
typedef struct TFileNode TFileNode, *FileNode;
|
||||||
|
|||||||
Reference in New Issue
Block a user