Code Cleanup

This commit is contained in:
2015-10-12 17:15:34 +02:00
parent 4d4b72f6be
commit 854b001cc2
7 changed files with 115 additions and 98 deletions

View File

@@ -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

View File

@@ -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);

View File

@@ -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);

View File

@@ -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) {

View File

@@ -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);

View File

@@ -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);
}
}

View File

@@ -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