diff --git a/src/crc.c b/src/crc.c index c618510..b0cbbb7 100644 --- a/src/crc.c +++ b/src/crc.c @@ -28,7 +28,8 @@ void CRCTable_Init() { } unsigned long CRC_BufferInternal(unsigned char *buffer, int len, - unsigned long crc) { + unsigned long crc) +{ unsigned char *p; // Calculate CRC from buffer diff --git a/src/filenode.c b/src/filenode.c index d83608e..cdbe799 100644 --- a/src/filenode.c +++ b/src/filenode.c @@ -7,30 +7,30 @@ #include "fileutil.h" #include "filenode.h" -FileNode *_free_filenode = NULL; +FileNode *_freeFileNode = NULL; int _n_filenode = 0; #define FileNode_Block 1024 FileNode *FileNode_Create() { FileNode *fileNode; - if (_free_filenode == NULL) { - FileNode *nodos; + if (_freeFileNode == NULL) { + FileNode *nodes; int i; // Allocate a block - nodos = malloc(sizeof(FileNode) * FileNode_Block); - if (nodos == NULL) { + nodes = malloc(sizeof(FileNode) * FileNode_Block); + if (nodes == NULL) { return NULL; } for (i = 0; i < FileNode_Block - 1; i++) { - nodos[i].next = &nodos[i + 1]; + nodes[i].next = &nodes[i + 1]; } - nodos[FileNode_Block - 1].next = NULL; - _free_filenode = &nodos[0]; + nodes[FileNode_Block - 1].next = NULL; + _freeFileNode = &nodes[0]; } // Get first free - fileNode = _free_filenode; - _free_filenode = fileNode->next; + fileNode = _freeFileNode; + _freeFileNode = fileNode->next; fileNode->next = NULL; _n_filenode++; @@ -50,7 +50,7 @@ FileNode *FileNode_Create() { } void FileNode_Delete(FileNode *fn) { - + // Delete childs FileNode *fileNodeChildAux = fn->child; FileNode *fileNodeChild = fn->child; while (fileNodeChild) { @@ -64,98 +64,99 @@ void FileNode_Delete(FileNode *fn) { } } - fn->next = _free_filenode; - _free_filenode = fn; + // Queue freed node + fn->next = _freeFileNode; + _freeFileNode = fn; _n_filenode--; } -void FileNode_AddChild(FileNode *fileNode, FileNode *file2) { - if (!file2 || !fileNode) +void FileNode_AddChild(FileNode *fileNode, FileNode *fileNodeChild) { + if (!fileNodeChild || !fileNode) return; - file2->next = fileNode->child; - fileNode->child = file2; + fileNodeChild->next = fileNode->child; + fileNode->child = fileNodeChild; fileNode->childCount++; - file2->parent = fileNode; + fileNodeChild->parent = fileNode; } void FileNode_SetStatusRec(FileNode *fileNode, FileStatus status) { - FileNode *fn_child; + FileNode *fileNodeChild; fileNode->status = status; - fn_child = fileNode->child; - while (fn_child != NULL) { - FileNode_SetStatusRec(fn_child, status); - fn_child = fn_child->next; + fileNodeChild = fileNode->child; + while (fileNodeChild != NULL) { + FileNode_SetStatusRec(fileNodeChild, status); + fileNodeChild = fileNodeChild->next; } } -void FileNode_GetPath_Rec(FileNode *fileNode, char **pathnode) { +void FileNode_GetPath_Rec(FileNode *fileNode, char **pathNode) { if (fileNode->parent) { - pathnode[0] = fileNode->parent->name; - FileNode_GetPath_Rec(fileNode->parent, pathnode + 1); + pathNode[0] = fileNode->parent->name; + FileNode_GetPath_Rec(fileNode->parent, pathNode + 1); } else { - pathnode[0] = NULL; + pathNode[0] = NULL; } } -char temppath[MaxPath]; +char tempPath[MaxPath]; char *FileNode_GetPath(FileNode *fileNode, char *path) { - char *pathnodes[MaxPath]; + char *pathNodes[MaxPathNodes]; int levels, i; - char *pathptr = temppath; - if (path) { pathptr = path; } + char *pathPtr = tempPath; + if (path) { pathPtr = path; } - FileNode_GetPath_Rec(fileNode, pathnodes); + FileNode_GetPath_Rec(fileNode, pathNodes); levels = 0; - while (pathnodes[levels]) { + while (pathNodes[levels]) { levels++; } - strcpy(pathptr, ""); + strcpy(pathPtr, ""); for (i = levels - 1; i >= 0; i--) { - strcat(pathptr, pathnodes[i]); - strcat(pathptr, "/"); + strcat(pathPtr, pathNodes[i]); + strcat(pathPtr, "/"); } - strcat(pathptr, fileNode->name); - return temppath; + strcat(pathPtr, fileNode->name); + return tempPath; } char *FileNode_GetFullPath(FileNode *fileNode, char *basePath, char *path) { - char *pathnodes[MaxPath]; + char *pathNodes[MaxPath]; int levels, i; - char *pathptr = temppath; + char *pathPtr = tempPath; if (path) - pathptr = path; + pathPtr = path; - FileNode_GetPath_Rec(fileNode, pathnodes); + FileNode_GetPath_Rec(fileNode, pathNodes); levels = 0; - while (pathnodes[levels]) { + while (pathNodes[levels]) { levels++; } - strcpy(pathptr, basePath); - strcat(pathptr, "/"); + strcpy(pathPtr, basePath); + strcat(pathPtr, "/"); for (i = levels - 2; i >= 0; i--) { - strcat(pathptr, pathnodes[i]); - strcat(pathptr, "/"); + strcat(pathPtr, pathNodes[i]); + strcat(pathPtr, "/"); } - strcat(pathptr, fileNode->name); - return temppath; + strcat(pathPtr, fileNode->name); + return tempPath; } -void FileNode_GetSize(FileNode *fileNode, char *file) { +void FileNode_LoadSize(FileNode *fileNode, char *file) { fileNode->flags |= FileFlag_HasSize; fileNode->size = File_GetSize(file); } -void FileNode_GetTime(FileNode *fileNode, char *file) { +void FileNode_LoadTime(FileNode *fileNode, char *file) { fileNode->flags |= FileFlag_HasTime; fileNode->fileTime = FileTime_Get(file); } -void FileNode_GetSizeAndTime(FileNode *fileNode, char *file) { +void FileNode_LoadSizeAndTime(FileNode *fileNode, char *file) { fileNode->flags |= FileFlag_HasSize | FileFlag_HasTime; File_GetSizeAndTime(file, &fileNode->size, &fileNode->fileTime); } -void FileNode_GetCRC(FileNode *fileNode, char *filePath) { +void FileNode_LoadCRC(FileNode *fileNode, char *filePath) { FILE *file; file = fopen(filePath, "rb"); if (!file) { @@ -172,9 +173,10 @@ void FileNode_SaveNode(FileNode *fileNode, FILE *file) { // Write name nameLen = (short)strlen(fileNode->name); fwrite((void *)&nameLen, sizeof(nameLen), 1, file); - if (nameLen>0 && nameLen 0 && nameLen < MaxFilename) { fputs(fileNode->name, file); - } else { + } + else { return; } @@ -408,13 +410,13 @@ FileNode *FileNode_Build(char *path) { if (File_IsDirectory(path)) { // Get information data from directories, and child files fileNode->flags |= FileFlag_Directory; - FileNode_GetTime(fileNode, path); + FileNode_LoadTime(fileNode, path); File_IterateDir(path, FileNode_Build_Iterate, fileNode); } else { // Get information data from files fileNode->flags |= FileFlag_Normal; - FileNode_GetSizeAndTime(fileNode, path); + FileNode_LoadSizeAndTime(fileNode, path); } return (fileNode); diff --git a/src/filenode.h b/src/filenode.h index 24d950f..a19e331 100644 --- a/src/filenode.h +++ b/src/filenode.h @@ -11,6 +11,7 @@ #define FileFlag_HasSize 8 #define FileFlag_HasTime 16 #define FileFlag_HasCRC 32 +#define FileFlag_PlaceHolder 512 #define FileFlag_MarkerForReview 1024 typedef enum { @@ -42,10 +43,10 @@ void FileNode_AddChild(FileNode *file, FileNode *file2); char *FileNode_GetFullPath(FileNode *fileNode, char *basePath, char *path); -void FileNode_GetSize(FileNode *fileNode, char *file); -void FileNode_GetTime(FileNode *fileNode, char *file); -void FileNode_GetSizeAndTime(FileNode *fileNode, char *file); -void FileNode_GetCRC(FileNode *fileNode, char *file); +void FileNode_LoadSize(FileNode *fileNode, char *file); +void FileNode_LoadTime(FileNode *fileNode, char *file); +void FileNode_LoadSizeAndTime(FileNode *fileNode, char *file); +void FileNode_LoadCRC(FileNode *fileNode, char *file); void FileNode_Save(FileNode *fileNode, char *fichero); FileNode *FileNode_Load(char *fichero); diff --git a/src/filenodecmp.c b/src/filenodecmp.c index b012204..988d7f6 100644 --- a/src/filenodecmp.c +++ b/src/filenodecmp.c @@ -52,7 +52,8 @@ void AccionFileNode_Destroy(ActionFileNode *actionFileNode) { } ActionFileNode *ActionFileNode_CreateNormal(FileNode *fileNodeLeft, - FileNode *fileNodeRight) { + FileNode *fileNodeRight) +{ ActionFileNode *actionFileNode; actionFileNode = ActionFileNode_Create(); actionFileNode->action = ActionFileCmp_Nothing; @@ -65,7 +66,8 @@ ActionFileNode *ActionFileNode_CreateNormal(FileNode *fileNodeLeft, void AccionFileNode_CompareChilds(ActionFileNode *actionFileNodeRoot, ActionFileNode **actionFileNodeQueue, void(*CheckPair)(FileNode *fileNodeLeft, FileNode *fileNodeRight, - ActionFileNode **actionFileNodeQueue)) { + ActionFileNode **actionFileNodeQueue)) +{ FileNode *fileNodeLeft; FileNode *fileNodeRight; FileNode *fileNodeRightQueue; @@ -151,7 +153,8 @@ void AccionFileNode_CompareChilds(ActionFileNode *actionFileNodeRoot, } void AccionFileNode_DeletePair(FileNode *fileNodeLeft, FileNode *fileNodeRight, - ActionFileNode **actionFileNodeQueue) { + ActionFileNode **actionFileNodeQueue) +{ ActionFileNode *actionFileNodeNew = ActionFileNode_CreateNormal( fileNodeLeft, fileNodeRight); @@ -224,7 +227,8 @@ void AccionFileNode_DeletePair(FileNode *fileNodeLeft, FileNode *fileNodeRight, } void AccionFileNode_CheckPair(FileNode *fileNodeLeft, FileNode *fileNodeRight, - ActionFileNode **actionFileNodeQueue) { + ActionFileNode **actionFileNodeQueue) +{ ActionFileNode *actionFileNodeNew = ActionFileNode_CreateNormal( fileNodeLeft, fileNodeRight); @@ -300,11 +304,12 @@ void AccionFileNode_CheckPair(FileNode *fileNodeLeft, FileNode *fileNodeRight, } if (fileNodeLeft && fileNodeRight) { if ((fileNodeLeft->flags & FileFlag_Directory) - && (fileNodeRight->flags & FileFlag_Directory)) { + && (fileNodeRight->flags & FileFlag_Directory)) + { // Directory // Prepare action for directory pair - if (abs((int)(fileNodeLeft->fileTime - fileNodeRight->fileTime)) <= maxDeltaTime) { // appoximadamente iguales + if (abs((int)(fileNodeLeft->fileTime - fileNodeRight->fileTime)) <= maxDeltaTime) { // aprox. equal if (fileNodeRight->status == FileStatus_Deleted && fileNodeLeft->status == FileStatus_Deleted) { actionFileNodeNew->action = ActionFileCmp_Nothing; @@ -360,7 +365,8 @@ void AccionFileNode_CheckPair(FileNode *fileNodeLeft, FileNode *fileNodeRight, QueueNode(*actionFileNodeQueue, actionFileNodeNew); } else if ((fileNodeLeft->flags & FileFlag_Normal) - && (fileNodeRight->flags & FileFlag_Normal)) { + && (fileNodeRight->flags & FileFlag_Normal)) + { // Files // Prepare action for file pair @@ -425,7 +431,8 @@ ActionFileNode *ActionFileNode_BuildSync(FileNode *izquierda, FileNode *derecha) } void AccionFileNode_Copy(FileNode *fileNodeLeft, FileNode *fileNodeRight, - ActionFileNode **actionFileNodeQueue) { + ActionFileNode **actionFileNodeQueue) +{ ActionFileNode *actionFileNodeNew = ActionFileNode_CreateNormal( fileNodeLeft, fileNodeRight); @@ -470,7 +477,8 @@ void AccionFileNode_Copy(FileNode *fileNodeLeft, FileNode *fileNodeRight, } if (fileNodeLeft && fileNodeRight) { if ((fileNodeLeft->flags & FileFlag_Directory) - || (fileNodeRight->flags & FileFlag_Directory)) { + || (fileNodeRight->flags & FileFlag_Directory)) + { if (fileNodeLeft->status != FileStatus_Deleted) { AccionFileNode_CompareChilds(actionFileNodeNew, actionFileNodeQueue, AccionFileNode_Copy); @@ -493,7 +501,8 @@ void AccionFileNode_Copy(FileNode *fileNodeLeft, FileNode *fileNodeRight, else { if (fileNodeLeft->status != FileStatus_Deleted) { if (abs((int)(fileNodeLeft->fileTime - fileNodeRight->fileTime)) - <= maxDeltaTime) { // appox. equal + <= maxDeltaTime) + { actionFileNodeNew->action = ActionFileCmp_Nothing; } else { @@ -521,7 +530,8 @@ ActionFileNode *ActionFileNode_BuildCopy(FileNode *fileNodeLeft, } void ActionFileNode_Statistics(ActionFileNode *actionFileNode, - ActionQueueStatistics *statistics) { + ActionQueueStatistics *statistics) +{ statistics->readLeft = 0; statistics->writeLeft = 0; statistics->readRight = 0; @@ -645,7 +655,8 @@ void AccionFileNodeAux_MakeDir(char *pathOrig, char *pathDest) { } void ActionFileNode_RunList(ActionFileNode *actionFileNode, char *pathLeft, - char *pathRight) { + char *pathRight) +{ char fullPathLeft[MaxPath], fullPathRight[MaxPath], showPath[MaxPath]; while (actionFileNode != NULL) { if (actionFileNode->left) { diff --git a/src/fileutil.h b/src/fileutil.h index 4a24858..4c82b4f 100644 --- a/src/fileutil.h +++ b/src/fileutil.h @@ -12,8 +12,9 @@ void FileTime_Print(FileTime t); /////////////////////////////////////////////// // File -#define MaxPath 4096 #define MaxFilename 2048 +#define MaxPath 4096 +#define MaxPathNodes 512 void File_GetName(char *path, char *name); diff --git a/src/main.c b/src/main.c index 0111aec..1531cc3 100644 --- a/src/main.c +++ b/src/main.c @@ -45,7 +45,7 @@ int main(int argc, char *argv[]) { for (i = 2; i < argc; i++) { if (File_ExistsPath(argv[i])) { FileNode *fileNode = FileNode_Build(argv[i]); - FileNode_GetCRC(fileNode, argv[i]); + FileNode_LoadCRC(fileNode, argv[i]); FileNode_PrintNode(fileNode); } } diff --git a/src/util.c b/src/util.c index d4ffc0e..7b7a470 100644 --- a/src/util.c +++ b/src/util.c @@ -23,14 +23,14 @@ char *String_Copy(char *str) { // Time_GetTime // // Gets the current time in usecs. WIN32 version. -long long Time_GetTime(){ +long long Time_GetTime() { LARGE_INTEGER freq; LARGE_INTEGER tim; long long int microt; QueryPerformanceFrequency(&freq); QueryPerformanceCounter(&tim); - microt=(tim.QuadPart*1000000)/freq.QuadPart; + microt = (tim.QuadPart * 1000000) / freq.QuadPart; return(microt); } @@ -38,31 +38,32 @@ long long Time_GetTime(){ // Time_Pause // // Pauses the execution for t usecs. WIN32 version. -void Time_Pause(int pausa){ - long long tend,t,diff; +void Time_Pause(int pausa) { + long long tend, t, diff; - t=Time_GetTime(); - tend=t+pausa; - do{ - diff=tend-t; - if(diff>1000){ - Sleep((int)diff/1000); - }else{ + t = Time_GetTime(); + tend = t + pausa; + do { + diff = tend - t; + if (diff > 1000) { + Sleep((int)diff / 1000); + } + else { Sleep(0); } - t=Time_GetTime(); - }while(tend>=t); + t = Time_GetTime(); + } while (tend >= t); } #else ///////////////////////////// // Time_GetTime // // Gets the current time in usecs. UNIX version. -long long Time_GetTime(){ +long long Time_GetTime() { struct timeval t; long long usecs; - gettimeofday(&t,NULL); - usecs=(t.tv_sec*1000000ll)+(t.tv_usec); + gettimeofday(&t, NULL); + usecs = (t.tv_sec * 1000000ll) + (t.tv_usec); return(usecs); } @@ -70,22 +71,22 @@ long long Time_GetTime(){ // Time_Pause // // Pauses the execution for t usecs. UNIX version. -void Time_Pause(int pausa){ +void Time_Pause(int pausa) { struct timeval tv; - tv.tv_sec=(long long)pausa/1000000; - tv.tv_usec=(long long)pausa%1000000; + tv.tv_sec = (long long)pausa / 1000000; + tv.tv_usec = (long long)pausa % 1000000; select(0, NULL, NULL, NULL, &tv); } #endif // if WIN32 -int printff(char *fmt, ...){ +int printff(char *fmt, ...) { va_list ap; int n; // Print - va_start(ap,fmt); - n=vprintf(fmt,ap); + va_start(ap, fmt); + n = vprintf(fmt, ap); va_end(ap); // Flush