Convert FileNode and ActionFileNode to pointer types.

This commit is contained in:
2015-10-15 00:45:53 +02:00
parent 10e537947d
commit d10efa6642
6 changed files with 133 additions and 126 deletions

View File

@@ -7,17 +7,17 @@
#include "fileutil.h" #include "fileutil.h"
#include "filenode.h" #include "filenode.h"
FileNode *_freeFileNode = NULL; FileNode _freeFileNode = NULL;
int _n_filenode = 0; int _n_filenode = 0;
#define FileNode_Block 1024 #define FileNode_Block 1024
FileNode *FileNode_Create() { FileNode FileNode_Create() {
FileNode *fileNode; FileNode fileNode;
if (_freeFileNode == NULL) { if (_freeFileNode == NULL) {
FileNode *nodes; FileNode nodes;
int i; int i;
// Allocate a block // Allocate a block
nodes = malloc(sizeof(FileNode) * FileNode_Block); nodes = malloc(sizeof(TFileNode) * FileNode_Block);
if (nodes == NULL) { if (nodes == NULL) {
return NULL; return NULL;
} }
@@ -49,8 +49,8 @@ FileNode *FileNode_Create() {
return (fileNode); return (fileNode);
} }
FileNode *FileNode_Copy(FileNode *fileNode) { FileNode FileNode_Copy(FileNode fileNode) {
FileNode *fileNodeNew; FileNode fileNodeNew;
fileNodeNew = FileNode_Create(); fileNodeNew = FileNode_Create();
@@ -65,10 +65,10 @@ FileNode *FileNode_Copy(FileNode *fileNode) {
return fileNodeNew; return fileNodeNew;
} }
void FileNode_Delete(FileNode *fn) { void FileNode_Delete(FileNode fn) {
// Delete childs // Delete childs
FileNode *fileNodeChildAux = fn->child; FileNode fileNodeChildAux = fn->child;
FileNode *fileNodeChild = fn->child; FileNode fileNodeChild = fn->child;
while (fileNodeChild) { while (fileNodeChild) {
fn->childCount--; fn->childCount--;
fileNodeChildAux = fileNodeChild; fileNodeChildAux = fileNodeChild;
@@ -86,7 +86,7 @@ void FileNode_Delete(FileNode *fn) {
_n_filenode--; _n_filenode--;
} }
void FileNode_AddChild(FileNode *fileNode, FileNode *fileNodeChild) { void FileNode_AddChild(FileNode fileNode, FileNode fileNodeChild) {
if (!fileNodeChild || !fileNode) if (!fileNodeChild || !fileNode)
return; return;
fileNodeChild->next = fileNode->child; fileNodeChild->next = fileNode->child;
@@ -95,8 +95,8 @@ void FileNode_AddChild(FileNode *fileNode, FileNode *fileNodeChild) {
fileNodeChild->parent = fileNode; fileNodeChild->parent = fileNode;
} }
void FileNode_SetStatusRec(FileNode *fileNode, FileStatus status) { void FileNode_SetStatusRec(FileNode fileNode, FileStatus status) {
FileNode *fileNodeChild; FileNode fileNodeChild;
fileNode->status = status; fileNode->status = status;
fileNodeChild = fileNode->child; fileNodeChild = fileNode->child;
while (fileNodeChild != NULL) { while (fileNodeChild != NULL) {
@@ -105,7 +105,7 @@ void FileNode_SetStatusRec(FileNode *fileNode, FileStatus status) {
} }
} }
void FileNode_GetPath_Rec(FileNode *fileNode, char **pathNode) { void FileNode_GetPath_Rec(FileNode fileNode, char **pathNode) {
if (fileNode->parent) { if (fileNode->parent) {
pathNode[0] = fileNode->parent->name; pathNode[0] = fileNode->parent->name;
FileNode_GetPath_Rec(fileNode->parent, pathNode + 1); FileNode_GetPath_Rec(fileNode->parent, pathNode + 1);
@@ -115,7 +115,7 @@ void FileNode_GetPath_Rec(FileNode *fileNode, char **pathNode) {
} }
} }
char tempPath[MaxPath]; char tempPath[MaxPath];
char *FileNode_GetPath(FileNode *fileNode, char *path) { char *FileNode_GetPath(FileNode fileNode, char *path) {
char *pathNodes[MaxPathNodes]; char *pathNodes[MaxPathNodes];
int levels, i; int levels, i;
char *pathPtr = tempPath; char *pathPtr = tempPath;
@@ -135,7 +135,7 @@ char *FileNode_GetPath(FileNode *fileNode, char *path) {
return tempPath; return tempPath;
} }
char *FileNode_GetFullPath(FileNode *fileNode, char *basePath, char *path) { char *FileNode_GetFullPath(FileNode fileNode, char *basePath, char *path) {
char *pathNodes[MaxPath]; char *pathNodes[MaxPath];
int levels, i; int levels, i;
char *pathPtr = tempPath; char *pathPtr = tempPath;
@@ -157,22 +157,22 @@ char *FileNode_GetFullPath(FileNode *fileNode, char *basePath, char *path) {
return tempPath; return tempPath;
} }
void FileNode_LoadSize(FileNode *fileNode, char *file) { void FileNode_LoadSize(FileNode fileNode, char *file) {
fileNode->flags |= FileFlag_HasSize; fileNode->flags |= FileFlag_HasSize;
fileNode->size = File_GetSize(file); fileNode->size = File_GetSize(file);
} }
void FileNode_LoadTime(FileNode *fileNode, char *file) { void FileNode_LoadTime(FileNode fileNode, char *file) {
fileNode->flags |= FileFlag_HasTime; fileNode->flags |= FileFlag_HasTime;
fileNode->fileTime = FileTime_Get(file); fileNode->fileTime = FileTime_Get(file);
} }
void FileNode_LoadSizeAndTime(FileNode *fileNode, char *file) { void FileNode_LoadSizeAndTime(FileNode fileNode, char *file) {
fileNode->flags |= FileFlag_HasSize | FileFlag_HasTime; fileNode->flags |= FileFlag_HasSize | FileFlag_HasTime;
File_GetSizeAndTime(file, &fileNode->size, &fileNode->fileTime); File_GetSizeAndTime(file, &fileNode->size, &fileNode->fileTime);
} }
void FileNode_LoadCRC(FileNode *fileNode, char *filePath) { void FileNode_LoadCRC(FileNode fileNode, char *filePath) {
FILE *file; FILE *file;
file = fopen(filePath, "rb"); file = fopen(filePath, "rb");
if (!file) { if (!file) {
@@ -183,7 +183,7 @@ void FileNode_LoadCRC(FileNode *fileNode, char *filePath) {
fclose(file); fclose(file);
} }
void FileNode_SaveNode(FileNode *fileNode, FILE *file) { void FileNode_SaveNode(FileNode fileNode, FILE *file) {
short nameLen; short nameLen;
// Write name // Write name
@@ -219,7 +219,7 @@ void FileNode_SaveNode(FileNode *fileNode, FILE *file) {
// Write files of directory // Write files of directory
if (fileNode->flags & FileFlag_Directory) { if (fileNode->flags & FileFlag_Directory) {
FileNode *fileNodeChild; FileNode fileNodeChild;
fwrite((void *)&fileNode->childCount, sizeof(fileNode->childCount), 1, file); fwrite((void *)&fileNode->childCount, sizeof(fileNode->childCount), 1, file);
fileNodeChild = fileNode->child; fileNodeChild = fileNode->child;
int cnt = 0; int cnt = 0;
@@ -234,7 +234,7 @@ void FileNode_SaveNode(FileNode *fileNode, FILE *file) {
} }
} }
void FileNode_Save(FileNode *fileNode, char *filePath) { void FileNode_Save(FileNode fileNode, char *filePath) {
FILE *file; FILE *file;
char mark[5]; char mark[5];
int version; int version;
@@ -255,9 +255,9 @@ void FileNode_Save(FileNode *fileNode, char *filePath) {
fclose(file); fclose(file);
} }
FileNode *FileNode_LoadNode(FILE *file) { FileNode FileNode_LoadNode(FILE *file) {
short nameLen; short nameLen;
FileNode *fileNode; FileNode fileNode;
int i; int i;
fileNode = FileNode_Create(); fileNode = FileNode_Create();
@@ -297,7 +297,8 @@ FileNode *FileNode_LoadNode(FILE *file) {
// Read files on directory // Read files on directory
if (fileNode->flags & FileFlag_Directory) { if (fileNode->flags & FileFlag_Directory) {
FileNode *fileNodeChildAux = NULL, *fileNodeChild; FileNode fileNodeChildAux = NULL;
FileNode fileNodeChild;
fread((void *)&fileNode->childCount, sizeof(fileNode->childCount), 1, file); fread((void *)&fileNode->childCount, sizeof(fileNode->childCount), 1, file);
for (i = 0; i < fileNode->childCount; i++) { for (i = 0; i < fileNode->childCount; i++) {
fileNodeChild = FileNode_LoadNode(file); fileNodeChild = FileNode_LoadNode(file);
@@ -319,9 +320,9 @@ FileNode *FileNode_LoadNode(FILE *file) {
return (fileNode); return (fileNode);
} }
FileNode *FileNode_Load(char *filePath) { FileNode FileNode_Load(char *filePath) {
FILE *file; FILE *file;
FileNode *fileNode; FileNode fileNode;
char mark[5]; char mark[5];
int version; int version;
@@ -350,7 +351,7 @@ FileNode *FileNode_Load(char *filePath) {
return (fileNode); return (fileNode);
} }
void FileNode_PrintNode(FileNode *fileNode) { void FileNode_PrintNode(FileNode fileNode) {
printff(FileNode_GetPath(fileNode, NULL)); printff(FileNode_GetPath(fileNode, NULL));
if (fileNode->flags & FileFlag_Normal) { if (fileNode->flags & FileFlag_Normal) {
printff(" File"); printff(" File");
@@ -382,8 +383,8 @@ void FileNode_PrintNode(FileNode *fileNode) {
} }
void FileNode_Print(FileNode *fileNode) { void FileNode_Print(FileNode fileNode) {
FileNode *fileNodeAux = fileNode; FileNode fileNodeAux = fileNode;
int end = 0; int end = 0;
while (fileNodeAux != NULL && !end) { while (fileNodeAux != NULL && !end) {
@@ -413,8 +414,8 @@ void FileNode_Print(FileNode *fileNode) {
int FileNode_Build_Iterate(char *path, char *name, void *d); int FileNode_Build_Iterate(char *path, char *name, void *d);
FileNode *FileNode_Build(char *path) { FileNode FileNode_Build(char *path) {
FileNode *fileNode; FileNode fileNode;
if (!File_ExistsPath(path)) if (!File_ExistsPath(path))
return (NULL); return (NULL);
@@ -439,7 +440,8 @@ FileNode *FileNode_Build(char *path) {
} }
int FileNode_Build_Iterate(char *path, char *name, void *d) { int FileNode_Build_Iterate(char *path, char *name, void *d) {
FileNode *fileNode, *fileNodeParent = d; FileNode fileNode;
FileNode fileNodeParent = d;
if (!strcmp(name, FileNode_Filename)) { if (!strcmp(name, FileNode_Filename)) {
return (0); return (0);
@@ -453,7 +455,7 @@ int FileNode_Build_Iterate(char *path, char *name, void *d) {
int FileNode_Refresh_Iterate(char *path, char *name, void *d); int FileNode_Refresh_Iterate(char *path, char *name, void *d);
FileNode *FileNode_Refresh(FileNode *fileNode, char *filePath) { FileNode FileNode_Refresh(FileNode fileNode, char *filePath) {
if (!File_ExistsPath(filePath)) { if (!File_ExistsPath(filePath)) {
// The file/directory has been deleted // The file/directory has been deleted
if (!fileNode) { if (!fileNode) {
@@ -478,7 +480,7 @@ FileNode *FileNode_Refresh(FileNode *fileNode, char *filePath) {
fileNode->flags &= ~FileFlag_MarkerForReview; fileNode->flags &= ~FileFlag_MarkerForReview;
if (File_IsDirectory(filePath)) { if (File_IsDirectory(filePath)) {
FileNode *fileNodeChild; FileNode fileNodeChild;
// Check directory data // Check directory data
if (!(fileNode->flags & FileFlag_Directory)) { if (!(fileNode->flags & FileFlag_Directory)) {
@@ -537,8 +539,8 @@ FileNode *FileNode_Refresh(FileNode *fileNode, char *filePath) {
} }
int FileNode_Refresh_Iterate(char *path, char *name, void *d) { int FileNode_Refresh_Iterate(char *path, char *name, void *d) {
FileNode *fileNode = d; FileNode fileNode = d;
FileNode *fileNodeChild; FileNode fileNodeChild;
if (!strcmp(name, FileNode_Filename)) { if (!strcmp(name, FileNode_Filename)) {
return (0); return (0);

View File

@@ -21,7 +21,8 @@ typedef enum {
FileStatus_Deleted FileStatus_Deleted
} FileStatus; } FileStatus;
typedef struct SFileNode { typedef struct TFileNode TFileNode, *FileNode;
struct TFileNode {
char name[MaxFilename]; char name[MaxFilename];
int flags; int flags;
FileStatus status; FileStatus status;
@@ -30,33 +31,33 @@ typedef struct SFileNode {
unsigned long crc; unsigned long crc;
FileTime fileTime; FileTime fileTime;
struct SFileNode *child; FileNode child;
int childCount; int childCount;
struct SFileNode *next; FileNode next;
struct SFileNode *parent; FileNode parent;
} FileNode; };
FileNode *FileNode_Create(); FileNode FileNode_Create();
FileNode *FileNode_Copy(FileNode *fileNode); FileNode FileNode_Copy(FileNode fileNode);
void FileNode_Delete(FileNode *fileNode); void FileNode_Delete(FileNode fileNode);
void FileNode_AddChild(FileNode *file, FileNode *file2); void FileNode_AddChild(FileNode file, FileNode file2);
char *FileNode_GetFullPath(FileNode *fileNode, char *basePath, char *path); char *FileNode_GetFullPath(FileNode fileNode, char *basePath, char *path);
void FileNode_LoadSize(FileNode *fileNode, char *file); void FileNode_LoadSize(FileNode fileNode, char *file);
void FileNode_LoadTime(FileNode *fileNode, char *file); void FileNode_LoadTime(FileNode fileNode, char *file);
void FileNode_LoadSizeAndTime(FileNode *fileNode, char *file); void FileNode_LoadSizeAndTime(FileNode fileNode, char *file);
void FileNode_LoadCRC(FileNode *fileNode, char *file); void FileNode_LoadCRC(FileNode fileNode, char *file);
void FileNode_Save(FileNode *fileNode, char *fichero); void FileNode_Save(FileNode fileNode, char *fichero);
FileNode *FileNode_Load(char *fichero); FileNode FileNode_Load(char *fichero);
void FileNode_PrintNode(FileNode *fileNode); void FileNode_PrintNode(FileNode fileNode);
void FileNode_Print(FileNode *fileNode); void FileNode_Print(FileNode fileNode);
FileNode *FileNode_Build(char *path); FileNode FileNode_Build(char *path);
FileNode *FileNode_Refresh(FileNode *file, char *path); FileNode FileNode_Refresh(FileNode file, char *path);
#endif #endif

View File

@@ -10,19 +10,19 @@
int maxDeltaTime = 4000; int maxDeltaTime = 4000;
#define QueueNode(queue,node) (queue)->next = node; (queue) = node; #define QueueNode(queue,node) (queue)->next = (node); (queue) = (node);
ActionFileNode *_actionFileNodeFree = NULL; ActionFileNode _actionFileNodeFree = NULL;
#define AccionFileNode_Block 1024 #define AccionFileNode_Block 1024
ActionFileNode *ActionFileNode_Create() { ActionFileNode ActionFileNode_Create() {
ActionFileNode *actionFileNode; ActionFileNode actionFileNode;
if (_actionFileNodeFree == NULL) { if (_actionFileNodeFree == NULL) {
ActionFileNode *actionFileNodeFreeAux; ActionFileNode actionFileNodeFreeAux;
int i; int i;
// Allocate block // Allocate block
actionFileNodeFreeAux = malloc( actionFileNodeFreeAux = malloc(
sizeof(ActionFileNode) * AccionFileNode_Block); sizeof(TActionFileNode) * AccionFileNode_Block);
if (actionFileNodeFreeAux == NULL) { if (actionFileNodeFreeAux == NULL) {
return NULL; return NULL;
} }
@@ -46,15 +46,15 @@ ActionFileNode *ActionFileNode_Create() {
return (actionFileNode); return (actionFileNode);
} }
void AccionFileNode_Destroy(ActionFileNode *actionFileNode) { void AccionFileNode_Destroy(ActionFileNode actionFileNode) {
actionFileNode->next = _actionFileNodeFree; actionFileNode->next = _actionFileNodeFree;
_actionFileNodeFree = actionFileNode; _actionFileNodeFree = actionFileNode;
} }
ActionFileNode *ActionFileNode_CreateNormal(FileNode *fileNodeLeft, ActionFileNode ActionFileNode_CreateNormal(FileNode fileNodeLeft,
FileNode *fileNodeRight) FileNode fileNodeRight)
{ {
ActionFileNode *actionFileNode; ActionFileNode actionFileNode;
actionFileNode = ActionFileNode_Create(); actionFileNode = ActionFileNode_Create();
actionFileNode->action = ActionFileCmp_Nothing; actionFileNode->action = ActionFileCmp_Nothing;
actionFileNode->left = fileNodeLeft; actionFileNode->left = fileNodeLeft;
@@ -63,16 +63,16 @@ ActionFileNode *ActionFileNode_CreateNormal(FileNode *fileNodeLeft,
} }
void AccionFileNode_CompareChilds(ActionFileNode *actionFileNodeRoot, void AccionFileNode_CompareChilds(ActionFileNode actionFileNodeRoot,
ActionFileNode **actionFileNodeQueue, ActionFileNode *actionFileNodeQueue,
void(*CheckPair)(FileNode *fileNodeLeft, FileNode *fileNodeRight, void(*CheckPair)(FileNode fileNodeLeft, FileNode fileNodeRight,
ActionFileNode **actionFileNodeQueue)) ActionFileNode *actionFileNodeQueue))
{ {
FileNode *fileNodeLeft; FileNode fileNodeLeft;
FileNode *fileNodeRight; FileNode fileNodeRight;
FileNode *fileNodeRightQueue; FileNode fileNodeRightQueue;
FileNode *fileNodeRightProcessed; FileNode fileNodeRightProcessed;
FileNode *fileNodeRightPrevious; FileNode fileNodeRightPrevious;
// Check if there is something to do // Check if there is something to do
if (!actionFileNodeRoot->left && !actionFileNodeRoot->right) { if (!actionFileNodeRoot->left && !actionFileNodeRoot->right) {
@@ -152,10 +152,10 @@ void AccionFileNode_CompareChilds(ActionFileNode *actionFileNodeRoot,
} }
void AccionFileNode_DeletePair(FileNode *fileNodeLeft, FileNode *fileNodeRight, void AccionFileNode_DeletePair(FileNode fileNodeLeft, FileNode fileNodeRight,
ActionFileNode **actionFileNodeQueue) ActionFileNode *actionFileNodeQueue)
{ {
ActionFileNode *actionFileNodeNew = ActionFileNode_CreateNormal( ActionFileNode actionFileNodeNew = ActionFileNode_CreateNormal(
fileNodeLeft, fileNodeRight); fileNodeLeft, fileNodeRight);
if (!fileNodeLeft && !fileNodeRight) { if (!fileNodeLeft && !fileNodeRight) {
@@ -226,10 +226,10 @@ void AccionFileNode_DeletePair(FileNode *fileNodeLeft, FileNode *fileNodeRight,
} }
} }
void AccionFileNode_CheckPair(FileNode *fileNodeLeft, FileNode *fileNodeRight, void AccionFileNode_CheckPair(FileNode fileNodeLeft, FileNode fileNodeRight,
ActionFileNode **actionFileNodeQueue) ActionFileNode *actionFileNodeQueue)
{ {
ActionFileNode *actionFileNodeNew = ActionFileNode_CreateNormal( ActionFileNode actionFileNodeNew = ActionFileNode_CreateNormal(
fileNodeLeft, fileNodeRight); fileNodeLeft, fileNodeRight);
if (!fileNodeLeft && !fileNodeRight) { if (!fileNodeLeft && !fileNodeRight) {
@@ -421,19 +421,19 @@ void AccionFileNode_CheckPair(FileNode *fileNodeLeft, FileNode *fileNodeRight,
} }
} }
ActionFileNode *ActionFileNode_BuildSync(FileNode *izquierda, FileNode *derecha) { ActionFileNode ActionFileNode_BuildSync(FileNode izquierda, FileNode derecha) {
ActionFileNode *actionFileNodeRoot = ActionFileNode_CreateNormal(izquierda, ActionFileNode actionFileNodeRoot = ActionFileNode_CreateNormal(izquierda,
derecha); derecha);
ActionFileNode *actionFileNodeQueue = actionFileNodeRoot; ActionFileNode actionFileNodeQueue = actionFileNodeRoot;
AccionFileNode_CompareChilds(actionFileNodeRoot, &actionFileNodeQueue, AccionFileNode_CompareChilds(actionFileNodeRoot, &actionFileNodeQueue,
AccionFileNode_CheckPair); AccionFileNode_CheckPair);
return actionFileNodeRoot; return actionFileNodeRoot;
} }
void AccionFileNode_Copy(FileNode *fileNodeLeft, FileNode *fileNodeRight, void AccionFileNode_Copy(FileNode fileNodeLeft, FileNode fileNodeRight,
ActionFileNode **actionFileNodeQueue) ActionFileNode *actionFileNodeQueue)
{ {
ActionFileNode *actionFileNodeNew = ActionFileNode_CreateNormal( ActionFileNode actionFileNodeNew = ActionFileNode_CreateNormal(
fileNodeLeft, fileNodeRight); fileNodeLeft, fileNodeRight);
if (!fileNodeLeft && !fileNodeRight) { if (!fileNodeLeft && !fileNodeRight) {
@@ -519,17 +519,17 @@ void AccionFileNode_Copy(FileNode *fileNodeLeft, FileNode *fileNodeRight,
} }
} }
ActionFileNode *ActionFileNode_BuildCopy(FileNode *fileNodeLeft, ActionFileNode ActionFileNode_BuildCopy(FileNode fileNodeLeft,
FileNode *fileNodeRight) { FileNode fileNodeRight) {
ActionFileNode *actionFileNodeRoot = ActionFileNode_CreateNormal( ActionFileNode actionFileNodeRoot = ActionFileNode_CreateNormal(
fileNodeLeft, fileNodeRight); fileNodeLeft, fileNodeRight);
ActionFileNode *actionFileNodeQueue = actionFileNodeRoot; ActionFileNode actionFileNodeQueue = actionFileNodeRoot;
AccionFileNode_CompareChilds(actionFileNodeRoot, &actionFileNodeQueue, AccionFileNode_CompareChilds(actionFileNodeRoot, &actionFileNodeQueue,
AccionFileNode_Copy); AccionFileNode_Copy);
return actionFileNodeRoot; return actionFileNodeRoot;
} }
void ActionFileNode_Statistics(ActionFileNode *actionFileNode, void ActionFileNode_Statistics(ActionFileNode actionFileNode,
ActionQueueStatistics *statistics) ActionQueueStatistics *statistics)
{ {
statistics->readLeft = 0; statistics->readLeft = 0;
@@ -584,7 +584,7 @@ void ActionFileNode_Statistics(ActionFileNode *actionFileNode,
} }
} }
void ActionFileNode_Print(ActionFileNode *actionFileNode) { void ActionFileNode_Print(ActionFileNode actionFileNode) {
char showPath[MaxPath]; char showPath[MaxPath];
while (actionFileNode != NULL) { while (actionFileNode != NULL) {
if (actionFileNode->left) { if (actionFileNode->left) {
@@ -654,7 +654,7 @@ void AccionFileNodeAux_MakeDir(char *pathOrig, char *pathDest) {
File_MakeDirectory(pathDest); File_MakeDirectory(pathDest);
} }
void ActionFileNode_RunList(ActionFileNode *actionFileNode, char *pathLeft, void ActionFileNode_RunList(ActionFileNode actionFileNode, char *pathLeft,
char *pathRight) char *pathRight)
{ {
char fullPathLeft[MaxPath], fullPathRight[MaxPath], showPath[MaxPath]; char fullPathLeft[MaxPath], fullPathRight[MaxPath], showPath[MaxPath];

View File

@@ -15,22 +15,23 @@ typedef enum {
ActionFileCmp_MakeLeftDirectory ActionFileCmp_MakeLeftDirectory
} ActionFileCmp; } ActionFileCmp;
typedef struct SActionFileNode { typedef struct TActionFileNode TActionFileNode, *ActionFileNode;
struct TActionFileNode {
ActionFileCmp action; ActionFileCmp action;
FileNode *left; FileNode left;
FileNode *right; FileNode right;
struct SActionFileNode *next; ActionFileNode next;
} ActionFileNode; };
ActionFileNode *ActionFileNode_Create(); ActionFileNode ActionFileNode_Create();
void AccionFileNode_Destroy(ActionFileNode *actionFileNode); void AccionFileNode_Destroy(ActionFileNode actionFileNode);
ActionFileNode *ActionFileNode_CreateNormal(FileNode *fileNodeLeft, ActionFileNode ActionFileNode_CreateNormal(FileNode fileNodeLeft,
FileNode *fileNodeRight); FileNode fileNodeRight);
ActionFileNode *ActionFileNode_BuildSync(FileNode *fileNodeLeft, ActionFileNode ActionFileNode_BuildSync(FileNode fileNodeLeft,
FileNode *fileNodeRight); FileNode fileNodeRight);
ActionFileNode *ActionFileNode_BuildCopy(FileNode *fileNodeLeft, ActionFileNode ActionFileNode_BuildCopy(FileNode fileNodeLeft,
FileNode *fileNodeRight); FileNode fileNodeRight);
typedef struct SActionQueueStatistics { typedef struct SActionQueueStatistics {
long long readLeft; long long readLeft;
@@ -45,12 +46,12 @@ typedef struct SActionQueueStatistics {
long long deleteRight; long long deleteRight;
} ActionQueueStatistics; } ActionQueueStatistics;
void ActionFileNode_Statistics(ActionFileNode *actionFileNode, void ActionFileNode_Statistics(ActionFileNode actionFileNode,
ActionQueueStatistics *statistics); ActionQueueStatistics *statistics);
void ActionFileNode_Print(ActionFileNode *actionFileNode); void ActionFileNode_Print(ActionFileNode actionFileNode);
void ActionFileNode_RunList(ActionFileNode *actionFileNode, char *pathLeft, void ActionFileNode_RunList(ActionFileNode actionFileNode, char *pathLeft,
char *pathRight); char *pathRight);
#endif #endif

View File

@@ -327,7 +327,8 @@ void File_DeleteDirectory(char *path) {
#define MaxBuffer 16384 #define MaxBuffer 16384
int File_Copy(const char *pathOrig, const char *pathDest) { int File_Copy(const char *pathOrig, const char *pathDest) {
FILE *fOrig, *fDest; FILE *fOrig;
FILE *fDest;
char *buffer = NULL; char *buffer = NULL;
int readLen = 0; int readLen = 0;
int writeLen = 0; int writeLen = 0;

View File

@@ -29,7 +29,7 @@ void Help(char *exe) {
printff(" %s recopytest [dirIzquierda] [dirDerecha]\n", exeFilename); printff(" %s recopytest [dirIzquierda] [dirDerecha]\n", exeFilename);
} }
FileNode *CheckDir(char *path, int recheck); FileNode CheckDir(char *path, int recheck);
int Sync(char *pathLeft, char *pathRight, int recheck, int dryRun); int Sync(char *pathLeft, char *pathRight, int recheck, int dryRun);
int Copy(char *pathLeft, char *pathRight, int reCheck, int dryRun); int Copy(char *pathLeft, char *pathRight, int reCheck, int dryRun);
@@ -44,7 +44,7 @@ int main(int argc, char *argv[]) {
int i; int i;
for (i = 2; i < argc; i++) { for (i = 2; i < argc; i++) {
if (File_ExistsPath(argv[i])) { if (File_ExistsPath(argv[i])) {
FileNode *fileNode = FileNode_Build(argv[i]); FileNode fileNode = FileNode_Build(argv[i]);
FileNode_LoadCRC(fileNode, argv[i]); FileNode_LoadCRC(fileNode, argv[i]);
FileNode_PrintNode(fileNode); FileNode_PrintNode(fileNode);
} }
@@ -53,7 +53,7 @@ int main(int argc, char *argv[]) {
else if (!strcmp(argv[1], "scan") && argc == 4) { else if (!strcmp(argv[1], "scan") && argc == 4) {
// Scan directory information tree and save // Scan directory information tree and save
long long tScan = Time_GetTime(); long long tScan = Time_GetTime();
FileNode *fileNode; FileNode fileNode;
printff("Building FileNode..\n"); printff("Building FileNode..\n");
fileNode = FileNode_Build(argv[2]); fileNode = FileNode_Build(argv[2]);
tScan = Time_GetTime() - tScan; tScan = Time_GetTime() - tScan;
@@ -62,7 +62,7 @@ int main(int argc, char *argv[]) {
} }
else if (!strcmp(argv[1], "rescan") && argc == 4) { else if (!strcmp(argv[1], "rescan") && argc == 4) {
// Scan directory information and save tree // Scan directory information and save tree
FileNode *fileNode; FileNode fileNode;
printff("Loading FileNode..\n"); printff("Loading FileNode..\n");
fileNode = FileNode_Load(argv[3]); fileNode = FileNode_Load(argv[3]);
if (fileNode) { if (fileNode) {
@@ -84,7 +84,7 @@ int main(int argc, char *argv[]) {
} }
else if (!strcmp(argv[1], "read") && argc == 3) { else if (!strcmp(argv[1], "read") && argc == 3) {
// Read information tree from file // Read information tree from file
FileNode *fileNode; FileNode fileNode;
fileNode = FileNode_Load(argv[2]); fileNode = FileNode_Load(argv[2]);
if (fileNode) if (fileNode)
FileNode_Print(fileNode); FileNode_Print(fileNode);
@@ -92,7 +92,7 @@ int main(int argc, char *argv[]) {
else if (!strcmp(argv[1], "dir") && argc == 3) { else if (!strcmp(argv[1], "dir") && argc == 3) {
// Read directory information tree // Read directory information tree
char *path = argv[2]; char *path = argv[2];
FileNode *fileNode; FileNode fileNode;
fileNode = CheckDir(path, 1); fileNode = CheckDir(path, 1);
if (fileNode) { if (fileNode) {
@@ -135,9 +135,9 @@ int main(int argc, char *argv[]) {
return (0); return (0);
} }
FileNode *CheckDir(char *path, int recheck) { FileNode CheckDir(char *path, int recheck) {
char dirNodesFile[MaxPath]; char dirNodesFile[MaxPath];
FileNode *fileNode; FileNode fileNode;
// Check directory // Check directory
snprintf(dirNodesFile, MaxPath, "%s/"FileNode_Filename, path); snprintf(dirNodesFile, MaxPath, "%s/"FileNode_Filename, path);
@@ -166,7 +166,7 @@ FileNode *CheckDir(char *path, int recheck) {
return fileNode; return fileNode;
} }
void PrintStatistics(ActionFileNode *actionFileNode) { void PrintStatistics(ActionFileNode actionFileNode) {
ActionQueueStatistics statistics; ActionQueueStatistics statistics;
ActionFileNode_Statistics(actionFileNode, &statistics); ActionFileNode_Statistics(actionFileNode, &statistics);
printff("Statistics\n"); printff("Statistics\n");
@@ -183,7 +183,8 @@ void PrintStatistics(ActionFileNode *actionFileNode) {
} }
int Sync(char *pathLeft, char *pathRight, int recheck, int dryRun) { int Sync(char *pathLeft, char *pathRight, int recheck, int dryRun) {
FileNode *fileNodeLeft, *fileNodeRight; FileNode fileNodeLeft;
FileNode fileNodeRight;
// Check and load directories // Check and load directories
if (!File_ExistsPath(pathLeft) || !File_IsDirectory(pathLeft)) { if (!File_ExistsPath(pathLeft) || !File_IsDirectory(pathLeft)) {
@@ -206,7 +207,7 @@ int Sync(char *pathLeft, char *pathRight, int recheck, int dryRun) {
// Build actions // Build actions
long long tBuild = Time_GetTime(); long long tBuild = Time_GetTime();
printff("Building action list.. \n"); printff("Building action list.. \n");
ActionFileNode *actionFileNode = NULL; ActionFileNode actionFileNode = NULL;
actionFileNode = ActionFileNode_BuildSync(fileNodeLeft, fileNodeRight); actionFileNode = ActionFileNode_BuildSync(fileNodeLeft, fileNodeRight);
tBuild = Time_GetTime() - tBuild; tBuild = Time_GetTime() - tBuild;
printff("tBuild: %9lldus\n", tBuild); printff("tBuild: %9lldus\n", tBuild);
@@ -225,7 +226,8 @@ int Sync(char *pathLeft, char *pathRight, int recheck, int dryRun) {
} }
int Copy(char *pathLeft, char *pathRight, int reCheck, int dryRun) { int Copy(char *pathLeft, char *pathRight, int reCheck, int dryRun) {
FileNode *fileNodeLeft, *fileNodeRight; FileNode fileNodeLeft;
FileNode fileNodeRight;
// Check and load directories // Check and load directories
if (!File_ExistsPath(pathLeft) || !File_IsDirectory(pathLeft)) { if (!File_ExistsPath(pathLeft) || !File_IsDirectory(pathLeft)) {
@@ -248,7 +250,7 @@ int Copy(char *pathLeft, char *pathRight, int reCheck, int dryRun) {
// Build actions // Build actions
long long tBuild = Time_GetTime(); long long tBuild = Time_GetTime();
printff("Building action list.. \n"); printff("Building action list.. \n");
ActionFileNode *actionFileNode = NULL; ActionFileNode actionFileNode = NULL;
actionFileNode = ActionFileNode_BuildCopy(fileNodeLeft, fileNodeRight); actionFileNode = ActionFileNode_BuildCopy(fileNodeLeft, fileNodeRight);
tBuild = Time_GetTime() - tBuild; tBuild = Time_GetTime() - tBuild;
printff("tBuild: %9lldus\n", tBuild); printff("tBuild: %9lldus\n", tBuild);