Offset available in the start of file ==> error while searchir error (no check of the ofset ...
This commit is contained in:
parent
f8a3ab2db8
commit
ef3750600d
268
display.c
268
display.c
@ -26,15 +26,69 @@
|
||||
|
||||
extern FILE *filePointer[2];
|
||||
extern char fileName[2][2096];
|
||||
|
||||
|
||||
void drawLine(void)
|
||||
{
|
||||
showTypeSize_te mySize = getTypeSize();
|
||||
showType_te myType = getType();
|
||||
switch(myType)
|
||||
{
|
||||
case SHOW_TYPE_DECIMAL_SIGNED:
|
||||
case SHOW_TYPE_DECIMAL_UNSIGNED:
|
||||
switch(mySize)
|
||||
{
|
||||
case SHOW_TYPE_SIZE_8:
|
||||
printf("-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\n"COLOR_NORMAL);
|
||||
break;
|
||||
case SHOW_TYPE_SIZE_16:
|
||||
printf("-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\n"COLOR_NORMAL);
|
||||
break;
|
||||
case SHOW_TYPE_SIZE_32:
|
||||
printf("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------\n"COLOR_NORMAL);
|
||||
break;
|
||||
case SHOW_TYPE_SIZE_64:
|
||||
printf("-------------------------------------------------------------------------------------------------------------------------------------------\n"COLOR_NORMAL);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case SHOW_TYPE_HEX:
|
||||
default :
|
||||
switch(mySize)
|
||||
{
|
||||
case SHOW_TYPE_SIZE_8:
|
||||
printf("---------------------------------------------------------------------------------------------------------------------------------------------------\n"COLOR_NORMAL);
|
||||
break;
|
||||
case SHOW_TYPE_SIZE_16:
|
||||
printf("-----------------------------------------------------------------------------------------------------------------------------------\n"COLOR_NORMAL);
|
||||
break;
|
||||
case SHOW_TYPE_SIZE_32:
|
||||
printf("---------------------------------------------------------------------------------------------------------------------------\n"COLOR_NORMAL);
|
||||
break;
|
||||
case SHOW_TYPE_SIZE_64:
|
||||
printf("-----------------------------------------------------------------------------------------------------------------------\n"COLOR_NORMAL);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void showConfiguration(void)
|
||||
{
|
||||
showType_te myType = getType();
|
||||
showTypeSize_te mySize = getTypeSize();
|
||||
|
||||
printf(GO_TOP);
|
||||
printf(COLOR_BOLD_GREEN"----------------------------------------------------------------------------------------------------------------------------\n"COLOR_NORMAL);
|
||||
printf(COLOR_BOLD_GREEN);
|
||||
drawLine();
|
||||
printf(COLOR_GREEN);
|
||||
printf("| hewViewer | ofset : %7d octets | ", (int)getOfsetFile());
|
||||
printf("| hexViewer | offset : %7d octets | ", (int)getOfsetFile());
|
||||
printf(" Type (t) : ");
|
||||
switch(myType)
|
||||
{
|
||||
@ -75,10 +129,11 @@ void showConfiguration(void)
|
||||
break;
|
||||
}
|
||||
printf(COLOR_NORMAL"\n");
|
||||
printf(COLOR_GREEN"| File Left << | " COLOR_BOLD_GREEN "%s\n" COLOR_NORMAL, fileName[0]);
|
||||
printf(COLOR_GREEN"| File Right >> | " COLOR_BOLD_GREEN "%s\n"COLOR_NORMAL, fileName[1]);
|
||||
printf(COLOR_GREEN"| File Left << | " COLOR_BOLD_GREEN "%s\n" COLOR_NORMAL, fileName[0]);
|
||||
printf(COLOR_GREEN"| File Right >> | " COLOR_BOLD_GREEN "%s\n"COLOR_NORMAL, fileName[1]);
|
||||
|
||||
printf(COLOR_BOLD_GREEN"----------------------------------------------------------------------------------------------------------------------------\n"COLOR_NORMAL);
|
||||
printf(COLOR_BOLD_GREEN);
|
||||
drawLine();
|
||||
}
|
||||
|
||||
void printNoElement(showType_te localType, showTypeSize_te localSize)
|
||||
@ -209,7 +264,8 @@ typedef union {
|
||||
uint64_t data_64 [2];
|
||||
}inputData_tu;
|
||||
|
||||
void compareFile(FILE *filePointer1, FILE *filePointer2 ,int32_t CurentFilePosition)
|
||||
|
||||
void compareFile(FILE *filePointer1, FILE *filePointer2 ,int32_t curentFilePosition, int32_t currentPadding)
|
||||
{
|
||||
inputData_tu data1;
|
||||
inputData_tu data2;
|
||||
@ -222,43 +278,29 @@ void compareFile(FILE *filePointer1, FILE *filePointer2 ,int32_t CurentFilePosit
|
||||
showType_te myType = getType();
|
||||
|
||||
// Display the main show
|
||||
printf(COLOR_BOLD_YELLOW"Ofset : | | ");
|
||||
printf(COLOR_BOLD_YELLOW" File offset | ");
|
||||
switch(myType)
|
||||
{
|
||||
case SHOW_TYPE_DECIMAL_SIGNED:
|
||||
case SHOW_TYPE_DECIMAL_UNSIGNED:
|
||||
for (i = 0 ; i<2 ; i++ )
|
||||
{
|
||||
for (i = 0 ; i<2 ; i++ ) {
|
||||
switch(mySize)
|
||||
{
|
||||
case SHOW_TYPE_SIZE_8:
|
||||
for (j=0; j<2 ; j++ ) {
|
||||
printf(" +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F | ");
|
||||
}
|
||||
printf(" +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F | ");
|
||||
break;
|
||||
case SHOW_TYPE_SIZE_16:
|
||||
for (j=0; j<2 ; j++ ) {
|
||||
printf(" +0 +2 +4 +6 +8 +A +C +E | ");
|
||||
}
|
||||
printf(" +0 +2 +4 +6 +8 +A +C +E | ");
|
||||
break;
|
||||
case SHOW_TYPE_SIZE_32:
|
||||
for (j=0; j<2 ; j++ ) {
|
||||
printf(" +0 +4 +8 +C | ");
|
||||
}
|
||||
printf(" +0 +4 +8 +C | ");
|
||||
break;
|
||||
case SHOW_TYPE_SIZE_64:
|
||||
for (j=0; j<2 ; j++ ) {
|
||||
printf(" +0 +8 | ");
|
||||
}
|
||||
printf(" +0 +8 | ");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if (i == 0)
|
||||
{
|
||||
printf(COLOR_NORMAL"\n");
|
||||
printf(COLOR_BOLD_MAGENTA" | ofset | ");
|
||||
}
|
||||
}
|
||||
break;
|
||||
case SHOW_TYPE_HEX:
|
||||
@ -267,75 +309,100 @@ void compareFile(FILE *filePointer1, FILE *filePointer2 ,int32_t CurentFilePosit
|
||||
switch(mySize)
|
||||
{
|
||||
case SHOW_TYPE_SIZE_8:
|
||||
for (j=0; j<2 ; j++ ) {
|
||||
printf("+0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F | ");
|
||||
}
|
||||
printf("+0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F | ");
|
||||
break;
|
||||
case SHOW_TYPE_SIZE_16:
|
||||
for (j=0; j<2 ; j++ ) {
|
||||
printf(" +0 +2 +4 +6 +8 +A +C +E | ");
|
||||
}
|
||||
printf(" +0 +2 +4 +6 +8 +A +C +E | ");
|
||||
break;
|
||||
case SHOW_TYPE_SIZE_32:
|
||||
for (j=0; j<2 ; j++ ) {
|
||||
printf(" +0 +4 +8 +C | ");
|
||||
}
|
||||
printf(" +0 +4 +8 +C | ");
|
||||
break;
|
||||
case SHOW_TYPE_SIZE_64:
|
||||
for (j=0; j<2 ; j++ ) {
|
||||
printf(" +0 +8 | ");
|
||||
}
|
||||
printf(" +0 +8 | ");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if (i == 0)
|
||||
{
|
||||
printf(COLOR_NORMAL"\n");
|
||||
printf(COLOR_BOLD_MAGENTA" | ofset | ");
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
printf(COLOR_BOLD_YELLOW" File offset | ");
|
||||
printf(COLOR_NORMAL"\n");
|
||||
|
||||
|
||||
// Display the main show
|
||||
printf(COLOR_BOLD_YELLOW"----------------------------------------------------------------------------------------------------------------------------");
|
||||
printf(COLOR_NORMAL"\n");
|
||||
printf(COLOR_BOLD_YELLOW);
|
||||
drawLine();
|
||||
for (j=0; j < NB_MAX_LINE; j++) {
|
||||
uint32_t readFile1 = 0;
|
||||
uint32_t readFile2 = 0;
|
||||
uint32_t lineNumber = 0;
|
||||
int32_t lineNumber = 0;
|
||||
uint32_t numberOfCycle;
|
||||
// read data in files :
|
||||
memset(data1.data_8, 0, 16 * sizeof(uint8_t));
|
||||
memset(data2.data_8, 0, 16 * sizeof(uint8_t));
|
||||
// Generate the ofset in the file
|
||||
int32_t positionStartDisplayFile1 = curentFilePosition + j*NB_DATA_PER_LINE*4;
|
||||
int32_t positionStartDisplayFile2 = curentFilePosition + j*NB_DATA_PER_LINE*4;
|
||||
if (currentPadding < 0) {
|
||||
positionStartDisplayFile1 += currentPadding;
|
||||
} else {
|
||||
positionStartDisplayFile2 -= currentPadding;
|
||||
}
|
||||
readFile1 = 0;
|
||||
int32_t readStartFile1 = 16;
|
||||
if (filePointer1 != NULL) {
|
||||
readFile1 = fread(data1.data_8, sizeof(uint8_t), 16, filePointer1);
|
||||
if (positionStartDisplayFile1 >= 0) {
|
||||
fseek(filePointer1 , positionStartDisplayFile1 , SEEK_SET );
|
||||
readFile1 = fread(data1.data_8, sizeof(uint8_t), 16, filePointer1);
|
||||
readStartFile1 = 0;
|
||||
} else if (positionStartDisplayFile1 > -NB_DATA_PER_LINE*4) {
|
||||
fseek(filePointer1 , 0 , SEEK_SET );
|
||||
// Special case of the partial display ...
|
||||
readFile1 = fread(data1.data_8 - positionStartDisplayFile1, sizeof(uint8_t), NB_DATA_PER_LINE*4 + positionStartDisplayFile1, filePointer1);
|
||||
readStartFile1 = NB_DATA_PER_LINE*4 - readFile1;
|
||||
readFile1 = 16;
|
||||
}
|
||||
}
|
||||
readFile2 = 0;
|
||||
int32_t readStartFile2 = 16;
|
||||
if (filePointer2 != NULL) {
|
||||
readFile2 = fread(data2.data_8, sizeof(uint8_t), 16, filePointer2);
|
||||
if (positionStartDisplayFile2 >= 0) {
|
||||
fseek(filePointer2 , positionStartDisplayFile2 , SEEK_SET );
|
||||
readFile2 = fread(data2.data_8, sizeof(uint8_t), 16, filePointer2);
|
||||
readStartFile2 = 0;
|
||||
} else if (positionStartDisplayFile2 > -NB_DATA_PER_LINE*4) {
|
||||
fseek(filePointer2 , 0 , SEEK_SET );
|
||||
// Special case of the partial display ...
|
||||
readFile2 = fread(data2.data_8 - positionStartDisplayFile2, sizeof(uint8_t), NB_DATA_PER_LINE*4 + positionStartDisplayFile2, filePointer2);
|
||||
readStartFile2 = NB_DATA_PER_LINE*4 - readFile2;
|
||||
readFile2 = 16;
|
||||
}
|
||||
}
|
||||
|
||||
// display the line number
|
||||
lineNumber = j * (NB_DATA_PER_LINE*4) + CurentFilePosition;
|
||||
printf(COLOR_BOLD_YELLOW"0x%08x | "COLOR_NORMAL, (unsigned int)lineNumber);
|
||||
switch(mySize)
|
||||
{
|
||||
case SHOW_TYPE_SIZE_8:
|
||||
printf(COLOR_BOLD_MAGENTA"%7d | "COLOR_NORMAL, (int)(lineNumber));
|
||||
break;
|
||||
case SHOW_TYPE_SIZE_16:
|
||||
printf(COLOR_BOLD_MAGENTA"%7d | "COLOR_NORMAL, (int)(lineNumber/2));
|
||||
break;
|
||||
case SHOW_TYPE_SIZE_32:
|
||||
printf(COLOR_BOLD_MAGENTA"%7d | "COLOR_NORMAL, (int)(lineNumber/4));
|
||||
break;
|
||||
case SHOW_TYPE_SIZE_64:
|
||||
printf(COLOR_BOLD_MAGENTA"%7d | "COLOR_NORMAL, (int)(lineNumber/8));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
lineNumber = positionStartDisplayFile1;
|
||||
if (lineNumber+NB_DATA_PER_LINE*4-1 >= 0) {
|
||||
printf(COLOR_BOLD_YELLOW"0x%08x | "COLOR_NORMAL, (unsigned int)lineNumber);
|
||||
switch(mySize)
|
||||
{
|
||||
case SHOW_TYPE_SIZE_8:
|
||||
printf(COLOR_BOLD_MAGENTA"%7d | "COLOR_NORMAL, (int)(lineNumber));
|
||||
break;
|
||||
case SHOW_TYPE_SIZE_16:
|
||||
printf(COLOR_BOLD_MAGENTA"%7d | "COLOR_NORMAL, (int)(lineNumber/2));
|
||||
break;
|
||||
case SHOW_TYPE_SIZE_32:
|
||||
printf(COLOR_BOLD_MAGENTA"%7d | "COLOR_NORMAL, (int)(lineNumber/4));
|
||||
break;
|
||||
case SHOW_TYPE_SIZE_64:
|
||||
printf(COLOR_BOLD_MAGENTA"%7d | "COLOR_NORMAL, (int)(lineNumber/8));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
printf(COLOR_BOLD_YELLOW" | "COLOR_BOLD_MAGENTA" | "COLOR_NORMAL);
|
||||
}
|
||||
if (readFile1 == 0) {
|
||||
switch(mySize)
|
||||
@ -371,8 +438,8 @@ void compareFile(FILE *filePointer1, FILE *filePointer2 ,int32_t CurentFilePosit
|
||||
case SHOW_TYPE_SIZE_8:
|
||||
numberOfCycle = 16;
|
||||
for (i = 0; i< numberOfCycle; i++) {
|
||||
if (readFile1 >= (i+1)) {
|
||||
bool OutOfRange = (readFile2 >= (i+1));
|
||||
if (readFile1 >= (i+1) && readStartFile1 <= (int32_t)i ) {
|
||||
bool OutOfRange = (readFile2 >= (i+1) && readStartFile2 <= (int32_t)i);
|
||||
bool identic = (data1.data_8[i] != data2.data_8[i]);
|
||||
printElement((uint64_t)data1.data_8[i], myType, mySize, identic, OutOfRange);
|
||||
} else {
|
||||
@ -383,8 +450,8 @@ void compareFile(FILE *filePointer1, FILE *filePointer2 ,int32_t CurentFilePosit
|
||||
case SHOW_TYPE_SIZE_16:
|
||||
numberOfCycle = 8;
|
||||
for (i = 0; i< numberOfCycle; i++) {
|
||||
if ((readFile1/2) >= (i+1)) {
|
||||
bool OutOfRange = ((readFile2/2) >= (i+1));
|
||||
if ((readFile1/2) >= (i+1) && readStartFile1/2 <= (int32_t)i) {
|
||||
bool OutOfRange = ((readFile2/2) >= (i+1) && readStartFile2/2 <= (int32_t)i);
|
||||
bool identic = (data1.data_16[i] != data2.data_16[i]);
|
||||
printElement((uint64_t)data1.data_16[i], myType, mySize, identic, OutOfRange);
|
||||
} else {
|
||||
@ -395,8 +462,8 @@ void compareFile(FILE *filePointer1, FILE *filePointer2 ,int32_t CurentFilePosit
|
||||
case SHOW_TYPE_SIZE_32:
|
||||
numberOfCycle = 4;
|
||||
for (i = 0; i< numberOfCycle; i++) {
|
||||
if ((readFile1/4) >= (i+1)) {
|
||||
bool OutOfRange = ((readFile2/4) >= (i+1));
|
||||
if ((readFile1/4) >= (i+1) && readStartFile1/4 <= (int32_t)i) {
|
||||
bool OutOfRange = ((readFile2/4) >= (i+1) && readStartFile2/4 <= (int32_t)i);
|
||||
bool identic = (data1.data_32[i] != data2.data_32[i]);
|
||||
printElement((uint64_t)data1.data_32[i], myType, mySize, identic, OutOfRange);
|
||||
} else {
|
||||
@ -407,8 +474,8 @@ void compareFile(FILE *filePointer1, FILE *filePointer2 ,int32_t CurentFilePosit
|
||||
case SHOW_TYPE_SIZE_64:
|
||||
numberOfCycle = 2;
|
||||
for (i = 0; i< numberOfCycle; i++) {
|
||||
if ((readFile1/8) >= (i+1)) {
|
||||
bool OutOfRange = ((readFile2/8) >= (i+1));
|
||||
if ((readFile1/8) >= (i+1) && readStartFile1/8 <= (int32_t)i) {
|
||||
bool OutOfRange = ((readFile2/8) >= (i+1) && readStartFile2/8 <= (int32_t)i);
|
||||
bool identic = (data1.data_64[i] != data2.data_64[i]);
|
||||
printElement((uint64_t)data1.data_64[i], myType, mySize, identic, OutOfRange);
|
||||
} else {
|
||||
@ -457,8 +524,8 @@ void compareFile(FILE *filePointer1, FILE *filePointer2 ,int32_t CurentFilePosit
|
||||
case SHOW_TYPE_SIZE_8:
|
||||
numberOfCycle = 16;
|
||||
for (i = 0; i< numberOfCycle; i++) {
|
||||
if (readFile2 >= (i+1)) {
|
||||
bool OutOfRange = (readFile1 >= (i+1));
|
||||
if (readFile2 >= (i+1) && readStartFile2 <= (int32_t)i ) {
|
||||
bool OutOfRange = (readFile1 >= (i+1) && readStartFile1 <= (int32_t)i);
|
||||
bool identic = (data1.data_8[i] != data2.data_8[i]);
|
||||
printElement((uint64_t)data2.data_8[i], myType, mySize, identic, OutOfRange);
|
||||
} else {
|
||||
@ -469,8 +536,8 @@ void compareFile(FILE *filePointer1, FILE *filePointer2 ,int32_t CurentFilePosit
|
||||
case SHOW_TYPE_SIZE_16:
|
||||
numberOfCycle = 8;
|
||||
for (i = 0; i< numberOfCycle; i++) {
|
||||
if ((readFile2/2) >= (i+1)) {
|
||||
bool OutOfRange = ((readFile1/2) >= (i+1));
|
||||
if ((readFile2/2) >= (i+1) && readStartFile2/2 <= (int32_t)i ) {
|
||||
bool OutOfRange = ((readFile1/2) >= (i+1) && readStartFile1/2 <= (int32_t)i);
|
||||
bool identic = (data1.data_16[i] != data2.data_16[i]);
|
||||
printElement((uint64_t)data2.data_16[i], myType, mySize, identic, OutOfRange);
|
||||
} else {
|
||||
@ -481,8 +548,8 @@ void compareFile(FILE *filePointer1, FILE *filePointer2 ,int32_t CurentFilePosit
|
||||
case SHOW_TYPE_SIZE_32:
|
||||
numberOfCycle = 4;
|
||||
for (i = 0; i< numberOfCycle; i++) {
|
||||
if ((readFile2/4) >= (i+1)) {
|
||||
bool OutOfRange = ((readFile1/4) >= (i+1));
|
||||
if ((readFile2/4) >= (i+1) && readStartFile2/4 <= (int32_t)i ) {
|
||||
bool OutOfRange = ((readFile1/4) >= (i+1) && readStartFile1/4 <= (int32_t)i);
|
||||
bool identic = (data1.data_32[i] != data2.data_32[i]);
|
||||
printElement((uint64_t)data2.data_32[i], myType, mySize, identic, OutOfRange);
|
||||
} else {
|
||||
@ -493,8 +560,8 @@ void compareFile(FILE *filePointer1, FILE *filePointer2 ,int32_t CurentFilePosit
|
||||
case SHOW_TYPE_SIZE_64:
|
||||
numberOfCycle = 2;
|
||||
for (i = 0; i< numberOfCycle; i++) {
|
||||
if ((readFile2/8) >= (i+1)) {
|
||||
bool OutOfRange = ((readFile1/8) >= (i+1));
|
||||
if ((readFile2/8) >= (i+1) && readStartFile2/8 <= (int32_t)i ) {
|
||||
bool OutOfRange = ((readFile1/8) >= (i+1) && readStartFile1/8 <= (int32_t)i);
|
||||
bool identic = (data1.data_64[i] != data2.data_64[i]);
|
||||
printElement((uint64_t)data2.data_64[i], myType, mySize, identic, OutOfRange);
|
||||
} else {
|
||||
@ -509,7 +576,31 @@ void compareFile(FILE *filePointer1, FILE *filePointer2 ,int32_t CurentFilePosit
|
||||
i++;
|
||||
}
|
||||
}
|
||||
printf(COLOR_NORMAL" |\n");
|
||||
|
||||
|
||||
lineNumber = positionStartDisplayFile2;
|
||||
if (lineNumber+NB_DATA_PER_LINE*4-1 >= 0) {
|
||||
switch(mySize)
|
||||
{
|
||||
case SHOW_TYPE_SIZE_8:
|
||||
printf(COLOR_BOLD_MAGENTA" | %7d ", (int)(lineNumber));
|
||||
break;
|
||||
case SHOW_TYPE_SIZE_16:
|
||||
printf(COLOR_BOLD_MAGENTA" | %7d ", (int)(lineNumber/2));
|
||||
break;
|
||||
case SHOW_TYPE_SIZE_32:
|
||||
printf(COLOR_BOLD_MAGENTA" | %7d ", (int)(lineNumber/4));
|
||||
break;
|
||||
case SHOW_TYPE_SIZE_64:
|
||||
printf(COLOR_BOLD_MAGENTA" | %7d ", (int)(lineNumber/8));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
printf(COLOR_BOLD_YELLOW"| 0x%08x"COLOR_NORMAL " |\n", (unsigned int)lineNumber);
|
||||
} else {
|
||||
printf(COLOR_BOLD_MAGENTA" | "COLOR_BOLD_YELLOW"| "COLOR_NORMAL " |\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -526,14 +617,9 @@ void * threadDisplay (void * p_data)
|
||||
while (1)
|
||||
{
|
||||
if (getParamModification()) {
|
||||
uint32_t CurentFilePosition = getOfsetFile();
|
||||
if (filePointer[0] != NULL) {
|
||||
fseek ( filePointer[0] , CurentFilePosition , SEEK_SET );
|
||||
}
|
||||
if (NULL != filePointer[1]) {
|
||||
fseek ( filePointer[1] , CurentFilePosition , SEEK_SET );
|
||||
}
|
||||
compareFile(filePointer[0],filePointer[1], CurentFilePosition);
|
||||
uint32_t curentFilePosition = getOfsetFile();
|
||||
uint32_t curentFilePadding = getPaddingOffsetFile();
|
||||
compareFile(filePointer[0],filePointer[1], curentFilePosition, curentFilePadding);
|
||||
} else {
|
||||
usleep(10000);
|
||||
}
|
||||
|
@ -82,7 +82,7 @@ typedef signed long long int int64_t;
|
||||
|
||||
|
||||
#define NB_DATA_PER_LINE (4)
|
||||
#define NB_MAX_LINE (50)
|
||||
#define NB_MAX_LINE (45)
|
||||
|
||||
|
||||
|
||||
|
140
main.c
140
main.c
@ -30,6 +30,7 @@
|
||||
|
||||
|
||||
|
||||
bool filePresent[2] = {false, false};
|
||||
FILE *filePointer[2] = {NULL, NULL};
|
||||
uint32_t filesize[2] = {0, 0};
|
||||
char fileName[2][2096] = {"",""};
|
||||
@ -52,6 +53,7 @@ void usage(void)
|
||||
printf("\t\t[LEFT] Go up 50 line in the view (one screen)\n");
|
||||
printf("\t\t[RIGHT] Go down 50 line in the view (one screen)\n");
|
||||
printf("\t\n");
|
||||
/*
|
||||
printf("\tTODO : \n");
|
||||
printf("\t\t- The print of 128 bytes\n");
|
||||
printf("\t\t- The print in Octal\n");
|
||||
@ -67,6 +69,7 @@ void usage(void)
|
||||
printf("\t\t- Add to the croling bar the differences in the two files\n");
|
||||
printf("\t\t- The research of a sequency in the two files ==> [R]\n");
|
||||
printf("\t\t- The jump to an offset directly ==> [J] \n");
|
||||
*/
|
||||
/*printf("\t\t- \n");*/
|
||||
}
|
||||
|
||||
@ -87,69 +90,99 @@ int32_t findFirstDiff(void)
|
||||
|| NULL == filePointer[1] ) {
|
||||
return 0;
|
||||
}
|
||||
if(NULL != filePointer[0]) {
|
||||
fseek ( filePointer[0] , 0 , SEEK_SET );
|
||||
}
|
||||
if(NULL != filePointer[1]) {
|
||||
fseek ( filePointer[1] , 0 , SEEK_SET );
|
||||
}
|
||||
while ( fread(&data1, sizeof(uint8_t), 1, filePointer[0]) == 1
|
||||
&& fread(&data2, sizeof(uint8_t), 1, filePointer[1]) == 1)
|
||||
{
|
||||
offset ++;
|
||||
if (data1 != data2)
|
||||
{
|
||||
if (data1 != data2) {
|
||||
return offset;
|
||||
}
|
||||
}
|
||||
return offset;
|
||||
}
|
||||
|
||||
void UpdateFilesSize(void)
|
||||
{
|
||||
// get size file 1
|
||||
if ( NULL != filePointer[0]) {
|
||||
fseek ( filePointer[0] , 0 , SEEK_END );
|
||||
filesize[0] = ftell (filePointer[0]);
|
||||
fseek ( filePointer[0] , 0 , SEEK_SET );
|
||||
}
|
||||
// get size file 2
|
||||
if ( NULL != filePointer[1]) {
|
||||
fseek ( filePointer[1] , 0 , SEEK_END );
|
||||
filesize[1] = ftell (filePointer[1]);
|
||||
fseek ( filePointer[1] , 0 , SEEK_SET );
|
||||
}
|
||||
}
|
||||
|
||||
void OpenFiles(void) {
|
||||
filePointer[0] = NULL;
|
||||
filePointer[1] = NULL;
|
||||
filesize[0] = 0;
|
||||
filesize[1] = 0;
|
||||
if (true == filePresent[0]) {
|
||||
// Open file 1
|
||||
filePointer[0] = fopen(fileName[0], "rb");
|
||||
if ( NULL == filePointer[0]) {
|
||||
printf("Can not Open [File_1] = %s\n", fileName[0]);
|
||||
}
|
||||
}
|
||||
if (true == filePresent[1]) {
|
||||
// open File 2
|
||||
filePointer[1] = fopen(fileName[1], "rb");
|
||||
if ( NULL == filePointer[1]) {
|
||||
printf("Can not Open [File_2] = %s\n", fileName[1]);
|
||||
}
|
||||
}
|
||||
UpdateFilesSize();
|
||||
}
|
||||
|
||||
|
||||
void CloseFiles(void) {
|
||||
if (NULL != filePointer[0]) {
|
||||
fclose(filePointer[0]);
|
||||
filePointer[0] = NULL;
|
||||
} if (NULL != filePointer[1]) {
|
||||
fclose(filePointer[1]);
|
||||
filePointer[1] = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int main (int argc, char**argv)
|
||||
{
|
||||
int32_t first_Error = 0;
|
||||
filePointer[0] = NULL;
|
||||
filePointer[1] = NULL;
|
||||
filesize[0] = 0;
|
||||
filesize[1] = 0;
|
||||
strcpy(fileName[0], "No-File");
|
||||
strcpy(fileName[1], "No-File");
|
||||
|
||||
// check error
|
||||
if (3 < argc || argc < 2) {
|
||||
printf("You set more than 3 argument at the commande line\n");
|
||||
usage();
|
||||
return -1;
|
||||
}
|
||||
|
||||
// one file
|
||||
if (2 <= argc) {
|
||||
// Open file 1
|
||||
filePointer[0] = fopen(argv[1], "rb");
|
||||
strcpy(fileName[0], argv[1]);
|
||||
if ( NULL == filePointer[0]) {
|
||||
printf("Can not Open [File_1] = %s\n", fileName[0]);
|
||||
}
|
||||
// get size file 1
|
||||
if ( NULL != filePointer[0]) {
|
||||
fseek ( filePointer[0] , 0 , SEEK_END );
|
||||
filesize[0] = ftell (filePointer[0]);
|
||||
fseek ( filePointer[0] , 0 , SEEK_SET );
|
||||
} else {
|
||||
filesize[0] = 0;
|
||||
}
|
||||
filePresent[0] = true;
|
||||
}
|
||||
// a second file
|
||||
if (3 <= argc) {
|
||||
// open File 2
|
||||
filePointer[1] = fopen(argv[2], "rb");
|
||||
strcpy(fileName[1], argv[2]);
|
||||
if ( NULL == filePointer[1]) {
|
||||
printf("Can not Open [File_2] = %s\n", fileName[1]);
|
||||
}
|
||||
// get size file 2
|
||||
if ( NULL != filePointer[1]) {
|
||||
fseek ( filePointer[1] , 0 , SEEK_END );
|
||||
filesize[1] = ftell (filePointer[1]);
|
||||
fseek ( filePointer[1] , 0 , SEEK_SET );
|
||||
} else {
|
||||
filesize[1] = 0;
|
||||
}
|
||||
filePresent[1] = true;
|
||||
}
|
||||
// try to find the first error...
|
||||
first_Error = findFirstDiff();
|
||||
// open the files
|
||||
OpenFiles();
|
||||
|
||||
// rendre la lecture des données non canonique
|
||||
system("stty -icanon");
|
||||
@ -214,7 +247,10 @@ int main (int argc, char**argv)
|
||||
// find the first ERROR
|
||||
case 'f':
|
||||
case 'F':
|
||||
setOfsetFile((first_Error/16)*16 - 256);
|
||||
// try to find the first error...
|
||||
first_Error = findFirstDiff();
|
||||
setOfsetFile((first_Error/16)*16 - 128);
|
||||
needRedraw();
|
||||
break;
|
||||
// find the first ERROR
|
||||
case 'a':
|
||||
@ -225,6 +261,7 @@ int main (int argc, char**argv)
|
||||
case 'z':
|
||||
case 'Z':
|
||||
{
|
||||
UpdateFilesSize();
|
||||
static bool whichElement = false;
|
||||
if (whichElement == false) {
|
||||
whichElement = true;
|
||||
@ -235,6 +272,35 @@ int main (int argc, char**argv)
|
||||
}
|
||||
}
|
||||
break;
|
||||
// Reload the 2 files
|
||||
case 'r':
|
||||
case 'R':
|
||||
CloseFiles();
|
||||
OpenFiles();
|
||||
needRedraw();
|
||||
break;
|
||||
// Add padding offset between left an right file
|
||||
case 'o':
|
||||
case 'O':
|
||||
displayPaddingOffset(1);
|
||||
break;
|
||||
case 'l':
|
||||
case 'L':
|
||||
displayPaddingOffset(-1);
|
||||
break;
|
||||
case 'p':
|
||||
case 'P':
|
||||
displayPaddingOffset(16);
|
||||
break;
|
||||
case 'm':
|
||||
case 'M':
|
||||
displayPaddingOffset(-16);
|
||||
break;
|
||||
// Clear the padding
|
||||
case 'k':
|
||||
case 'K':
|
||||
displayPaddingOffsetClear();
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@ -242,11 +308,7 @@ int main (int argc, char**argv)
|
||||
}
|
||||
|
||||
exit_programme :
|
||||
if (NULL != filePointer[0]) {
|
||||
fclose(filePointer[0]);
|
||||
} if (NULL != filePointer[1]) {
|
||||
fclose(filePointer[1]);
|
||||
}
|
||||
CloseFiles();
|
||||
|
||||
// remettre la lecture des données canonique
|
||||
system("stty icanon");
|
||||
|
27
parameter.c
27
parameter.c
@ -27,6 +27,7 @@
|
||||
// Parameter Local Value :
|
||||
|
||||
static uint32_t fileOfset = 0;
|
||||
static uint32_t paddingOffset = 0;
|
||||
static bool parmamModifier = true;
|
||||
|
||||
|
||||
@ -68,6 +69,24 @@ uint32_t getOfsetFile(void)
|
||||
return fileOfset;
|
||||
}
|
||||
|
||||
void displayPaddingOffset(int32_t size)
|
||||
{
|
||||
paddingOffset += size;
|
||||
parmamModifier = true;
|
||||
}
|
||||
|
||||
void displayPaddingOffsetClear(void)
|
||||
{
|
||||
paddingOffset = 0;
|
||||
parmamModifier = true;
|
||||
}
|
||||
|
||||
int32_t getPaddingOffsetFile(void)
|
||||
{
|
||||
return paddingOffset;
|
||||
}
|
||||
|
||||
|
||||
bool getParamModification()
|
||||
{
|
||||
if (parmamModifier == true) {
|
||||
@ -78,7 +97,9 @@ bool getParamModification()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void needRedraw(void) {
|
||||
parmamModifier = true;
|
||||
}
|
||||
|
||||
void nextType(void)
|
||||
{
|
||||
@ -137,3 +158,7 @@ showTypeSize_te getTypeSize(void)
|
||||
{
|
||||
return curentTypeSize;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -35,12 +35,15 @@ void upDownOfsetFile(int32_t offset);
|
||||
uint32_t getOfsetFile(void);
|
||||
|
||||
bool getParamModification();
|
||||
|
||||
void needRedraw(void);
|
||||
void nextType(void);
|
||||
showType_te getType(void);
|
||||
|
||||
void nextTypeSize(void);
|
||||
showTypeSize_te getTypeSize(void);
|
||||
|
||||
void displayPaddingOffset(int32_t size);
|
||||
void displayPaddingOffsetClear(void);
|
||||
int32_t getPaddingOffsetFile(void);
|
||||
#endif
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user