Code Cleanup
This commit is contained in:
@@ -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
|
||||
|
||||
116
src/filenode.c
116
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<MaxFilename) {
|
||||
if (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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
45
src/util.c
45
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
|
||||
|
||||
Reference in New Issue
Block a user