Update the system to support display of 64 bits ans a single file... and some other things

This commit is contained in:
Edouard Dupin 2012-02-10 14:02:51 +01:00
parent 0bd46f72ba
commit f8a3ab2db8
5 changed files with 828 additions and 1211 deletions

549
display.c
View File

@ -75,130 +75,12 @@ void showConfiguration(void)
break; break;
} }
printf(COLOR_NORMAL"\n"); printf(COLOR_NORMAL"\n");
printf(COLOR_BOLD_GREEN"----------------------------------------------------------------------------------------------------------------------------\n"COLOR_NORMAL); 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" \r ");
switch(myType)
{
case SHOW_TYPE_DECIMAL_SIGNED:
switch(mySize)
{
case SHOW_TYPE_SIZE_8:
printf(" | ");
break;
case SHOW_TYPE_SIZE_16:
printf(" | ");
break;
case SHOW_TYPE_SIZE_32:
printf(" | ");
break;
default:
break;
}
break;
case SHOW_TYPE_DECIMAL_UNSIGNED:
switch(mySize)
{
case SHOW_TYPE_SIZE_8:
printf(" | ");
break;
case SHOW_TYPE_SIZE_16:
printf(" | ");
break;
case SHOW_TYPE_SIZE_32:
printf(" | ");
break;
default:
break;
}
break;
case SHOW_TYPE_HEX:
default :
switch(mySize)
{
case SHOW_TYPE_SIZE_8:
printf(" | ");
break;
case SHOW_TYPE_SIZE_16:
printf(" | ");
break;
case SHOW_TYPE_SIZE_32:
printf(" | ");
break;
default:
break;
}
break;
}
printf("file : %s\r", fileName[1]);
printf(" | file : %s", fileName[0]);
printf(COLOR_NORMAL"\n");
printf(COLOR_BOLD_GREEN"----------------------------------------------------------------------------------------------------------------------------\n"COLOR_NORMAL); printf(COLOR_BOLD_GREEN"----------------------------------------------------------------------------------------------------------------------------\n"COLOR_NORMAL);
} }
void showFile(FILE *filePointer ,I32 CurentFilePosition)
{
/*
U16 data[NB_DATA_PER_LINE];
U32 i;
U32 j;
showConfiguration();
// Display the main show
printf(COLOR_BOLD_YELLOW"Ofset : |");
for (i = 0; i< NB_DATA_PER_LINE; i++)
{
printf(" +%x",(unsigned int)i);
}
printf(COLOR_NORMAL"\n");
// Display the main show
printf(COLOR_BOLD_YELLOW"------------");
for (i = 0; i< NB_DATA_PER_LINE; i++)
{
printf("------");
}
printf(COLOR_NORMAL"\n");
for (j=0; j < NB_MAX_LINE; j++)
{
if (fread(data, sizeof(I8), NB_DATA_PER_LINE, filePointer) != NB_DATA_PER_LINE)
{
printf("No More Data in the file");
j = NB_MAX_LINE;
}
else
{
U32 lineNumber = 0;
lineNumber = (j ) * NB_DATA_PER_LINE + CurentFilePosition;
printf(COLOR_BOLD_YELLOW"0x%08x | "COLOR_NORMAL, (unsigned int)lineNumber);
for (i = 0; i< NB_DATA_PER_LINE; i++)
{
//printf("%04x ", data[i]);
printf("%5d ", data[i]);
}
}
printf(COLOR_NORMAL"\n");
}
*/
}
void print_U32(U32 data)
{
}
void print_I32(I32 data)
{
}
void printNoElement(showType_te localType, showTypeSize_te localSize) void printNoElement(showType_te localType, showTypeSize_te localSize)
{ {
switch(localType) switch(localType)
@ -216,12 +98,13 @@ void printNoElement(showType_te localType, showTypeSize_te localSize)
printf(" "); printf(" ");
break; break;
case SHOW_TYPE_SIZE_64: case SHOW_TYPE_SIZE_64:
//printf("%08x%08x"COLOR_NORMAL" ", (unsigned int)((U32)(data>>32)), (unsigned int)((U32)data)); printf(" ");
break; break;
default: default:
break; break;
} }
break; break;
case SHOW_TYPE_DECIMAL_UNSIGNED:
case SHOW_TYPE_DECIMAL_SIGNED: case SHOW_TYPE_DECIMAL_SIGNED:
switch(localSize) switch(localSize)
{ {
@ -235,28 +118,8 @@ void printNoElement(showType_te localType, showTypeSize_te localSize)
printf(" "); printf(" ");
break; break;
case SHOW_TYPE_SIZE_64: case SHOW_TYPE_SIZE_64:
//printf("%08x%08x"COLOR_NORMAL" ", (unsigned int)((U32)(data>>32)), (unsigned int)((U32)data));
break;
default:
break;
}
break;
case SHOW_TYPE_DECIMAL_UNSIGNED:
switch(localSize)
{
case SHOW_TYPE_SIZE_8:
printf(" "); printf(" ");
break; break;
case SHOW_TYPE_SIZE_16:
printf(" ");
break;
case SHOW_TYPE_SIZE_32:
printf(" ");
break;
case SHOW_TYPE_SIZE_64:
//printf("%08x%08x"COLOR_NORMAL" ", (unsigned int)((U32)(data>>32)), (unsigned int)((U32)data));
break;
default: default:
break; break;
} }
@ -267,10 +130,11 @@ void printNoElement(showType_te localType, showTypeSize_te localSize)
} }
void printElement(U64 data, showType_te localType, showTypeSize_te localSize, bool error) void printElement(uint64_t data, showType_te localType, showTypeSize_te localSize, bool error, bool outOfRange)
{
if (true == error)
{ {
if (false == outOfRange) {
printf(COLOR_CYAN);
} else if (true == error) {
printf(COLOR_BOLD_RED); printf(COLOR_BOLD_RED);
} }
switch(localType) switch(localType)
@ -279,16 +143,16 @@ void printElement(U64 data, showType_te localType, showTypeSize_te localSize, bo
switch(localSize) switch(localSize)
{ {
case SHOW_TYPE_SIZE_8: case SHOW_TYPE_SIZE_8:
printf("%02x"COLOR_NORMAL" ", (unsigned int)((U8)data)); printf("%02x"COLOR_NORMAL" ", (unsigned int)((uint8_t)data));
break; break;
case SHOW_TYPE_SIZE_16: case SHOW_TYPE_SIZE_16:
printf("%04x"COLOR_NORMAL" ", (unsigned int)((U16)data)); printf("%04x"COLOR_NORMAL" ", (unsigned int)((uint16_t)data));
break; break;
case SHOW_TYPE_SIZE_32: case SHOW_TYPE_SIZE_32:
printf("%08x"COLOR_NORMAL" ", (unsigned int)((U32)data)); printf("%08x"COLOR_NORMAL" ", (unsigned int)((uint32_t)data));
break; break;
case SHOW_TYPE_SIZE_64: case SHOW_TYPE_SIZE_64:
//printf("%08x%08x"COLOR_NORMAL" ", (unsigned int)((U32)(data>>32)), (unsigned int)((U32)data)); printf("%08x%08x"COLOR_NORMAL" ", (unsigned int)((uint32_t)(data>>32)), (unsigned int)((uint32_t)data));
break; break;
default: default:
break; break;
@ -298,16 +162,16 @@ void printElement(U64 data, showType_te localType, showTypeSize_te localSize, bo
switch(localSize) switch(localSize)
{ {
case SHOW_TYPE_SIZE_8: case SHOW_TYPE_SIZE_8:
printf("%4d"COLOR_NORMAL"", ((I8)data)); printf("%4d"COLOR_NORMAL" ", ((int8_t)data));
break; break;
case SHOW_TYPE_SIZE_16: case SHOW_TYPE_SIZE_16:
printf("%6d"COLOR_NORMAL" ", ((I16)data)); printf("%7d"COLOR_NORMAL" ", ((int16_t)data));
break; break;
case SHOW_TYPE_SIZE_32: case SHOW_TYPE_SIZE_32:
printf("%9d"COLOR_NORMAL" ", (int)((I32)data)); printf("%14d"COLOR_NORMAL" ", (int)((int32_t)data));
break; break;
case SHOW_TYPE_SIZE_64: case SHOW_TYPE_SIZE_64:
//printf("%08x%08x"COLOR_NORMAL" ", (unsigned int)((U32)(data>>32)), (unsigned int)((U32)data)); printf("%21lld"COLOR_NORMAL" ", (int64_t)data);
break; break;
default: default:
break; break;
@ -318,16 +182,16 @@ void printElement(U64 data, showType_te localType, showTypeSize_te localSize, bo
switch(localSize) switch(localSize)
{ {
case SHOW_TYPE_SIZE_8: case SHOW_TYPE_SIZE_8:
printf("%3d"COLOR_NORMAL" ", ((U8)data)); printf("%4u"COLOR_NORMAL" ", ((uint8_t)data));
break; break;
case SHOW_TYPE_SIZE_16: case SHOW_TYPE_SIZE_16:
printf("%5d"COLOR_NORMAL" ", ((U16)data)); printf("%7u"COLOR_NORMAL" ", ((uint16_t)data));
break; break;
case SHOW_TYPE_SIZE_32: case SHOW_TYPE_SIZE_32:
printf("%9d"COLOR_NORMAL" ", (unsigned int)((U32)data)); printf("%14u"COLOR_NORMAL" ", (unsigned int)((uint32_t)data));
break; break;
case SHOW_TYPE_SIZE_64: case SHOW_TYPE_SIZE_64:
//printf("%08x%08x"COLOR_NORMAL" ", (unsigned int)((U32)(data>>32)), (unsigned int)((U32)data)); printf("%21llu"COLOR_NORMAL" ", (uint64_t)data);
break; break;
default: default:
break; break;
@ -339,19 +203,18 @@ void printElement(U64 data, showType_te localType, showTypeSize_te localSize, bo
} }
typedef union { typedef union {
U8 data_8 [16]; uint8_t data_8 [16];
U16 data_16 [8]; uint16_t data_16 [8];
U32 data_32 [4]; uint32_t data_32 [4];
U64 data_64 [2]; uint64_t data_64 [2];
}inputData_tu; }inputData_tu;
void compareFile(FILE *filePointer1, FILE *filePointer2 ,I32 CurentFilePosition) void compareFile(FILE *filePointer1, FILE *filePointer2 ,int32_t CurentFilePosition)
{ {
inputData_tu data1; inputData_tu data1;
inputData_tu data2; inputData_tu data2;
U32 i; uint32_t i;
U32 j; uint32_t j;
showConfiguration(); showConfiguration();
@ -363,35 +226,6 @@ void compareFile(FILE *filePointer1, FILE *filePointer2 ,I32 CurentFilePosition)
switch(myType) switch(myType)
{ {
case SHOW_TYPE_DECIMAL_SIGNED: case SHOW_TYPE_DECIMAL_SIGNED:
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 | ");
}
break;
case SHOW_TYPE_SIZE_16:
for (j=0; j<2 ; j++ ) {
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 | ");
}
break;
default:
break;
}
if (i == 0)
{
printf(COLOR_NORMAL"\n");
printf(COLOR_BOLD_MAGENTA" | ofset | ");
}
}
break;
case SHOW_TYPE_DECIMAL_UNSIGNED: case SHOW_TYPE_DECIMAL_UNSIGNED:
for (i = 0 ; i<2 ; i++ ) for (i = 0 ; i<2 ; i++ )
{ {
@ -412,6 +246,11 @@ void compareFile(FILE *filePointer1, FILE *filePointer2 ,I32 CurentFilePosition)
printf(" +0 +4 +8 +C | "); printf(" +0 +4 +8 +C | ");
} }
break; break;
case SHOW_TYPE_SIZE_64:
for (j=0; j<2 ; j++ ) {
printf(" +0 +8 | ");
}
break;
default: default:
break; break;
} }
@ -424,8 +263,7 @@ void compareFile(FILE *filePointer1, FILE *filePointer2 ,I32 CurentFilePosition)
break; break;
case SHOW_TYPE_HEX: case SHOW_TYPE_HEX:
default : default :
for (i = 0 ; i<2 ; i++ ) for (i = 0 ; i<2 ; i++ ) {
{
switch(mySize) switch(mySize)
{ {
case SHOW_TYPE_SIZE_8: case SHOW_TYPE_SIZE_8:
@ -443,6 +281,11 @@ void compareFile(FILE *filePointer1, FILE *filePointer2 ,I32 CurentFilePosition)
printf(" +0 +4 +8 +C | "); printf(" +0 +4 +8 +C | ");
} }
break; break;
case SHOW_TYPE_SIZE_64:
for (j=0; j<2 ; j++ ) {
printf(" +0 +8 | ");
}
break;
default: default:
break; break;
} }
@ -458,45 +301,43 @@ void compareFile(FILE *filePointer1, FILE *filePointer2 ,I32 CurentFilePosition)
// Display the main show // Display the main show
printf(COLOR_BOLD_YELLOW"------------"); printf(COLOR_BOLD_YELLOW"----------------------------------------------------------------------------------------------------------------------------");
for (i = 0; i< 16; i++)
{
printf("---");
}
printf("---");
for (i = 0; i< 16; i++)
{
printf("---");
}
printf(COLOR_NORMAL"\n"); printf(COLOR_NORMAL"\n");
for (j=0; j < NB_MAX_LINE; j++) for (j=0; j < NB_MAX_LINE; j++) {
{ uint32_t readFile1 = 0;
U32 readFile1 = 0; uint32_t readFile2 = 0;
U32 readFile2 = 0; uint32_t lineNumber = 0;
U32 lineNumber = 0; uint32_t numberOfCycle;
U32 numberOfCycle;
// read data in files : // read data in files :
readFile1 = fread(data1.data_8, sizeof(U8), 16, filePointer1); memset(data1.data_8, 0, 16 * sizeof(uint8_t));
readFile2 = fread(data2.data_8, sizeof(U8), 16, filePointer2); memset(data2.data_8, 0, 16 * sizeof(uint8_t));
if (filePointer1 != NULL) {
readFile1 = fread(data1.data_8, sizeof(uint8_t), 16, filePointer1);
}
if (filePointer2 != NULL) {
readFile2 = fread(data2.data_8, sizeof(uint8_t), 16, filePointer2);
}
// display the line number // display the line number
lineNumber = j * (NB_DATA_PER_LINE*4) + CurentFilePosition; lineNumber = j * (NB_DATA_PER_LINE*4) + CurentFilePosition;
printf(COLOR_BOLD_YELLOW"0x%08x | "COLOR_NORMAL, (unsigned int)lineNumber); printf(COLOR_BOLD_YELLOW"0x%08x | "COLOR_NORMAL, (unsigned int)lineNumber);
switch(mySize) switch(mySize)
{ {
case SHOW_TYPE_SIZE_8: case SHOW_TYPE_SIZE_8:
printf(COLOR_BOLD_MAGENTA"%5d | "COLOR_NORMAL, (int)(lineNumber)); printf(COLOR_BOLD_MAGENTA"%7d | "COLOR_NORMAL, (int)(lineNumber));
break; break;
case SHOW_TYPE_SIZE_16: case SHOW_TYPE_SIZE_16:
printf(COLOR_BOLD_MAGENTA"%5d | "COLOR_NORMAL, (int)(lineNumber/2)); printf(COLOR_BOLD_MAGENTA"%7d | "COLOR_NORMAL, (int)(lineNumber/2));
break; break;
case SHOW_TYPE_SIZE_32: case SHOW_TYPE_SIZE_32:
printf(COLOR_BOLD_MAGENTA"%5d | "COLOR_NORMAL, (int)(lineNumber/4)); 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; break;
default: default:
break; break;
} }
if (readFile1 == 0) if (readFile1 == 0) {
{
switch(mySize) switch(mySize)
{ {
case SHOW_TYPE_SIZE_8: case SHOW_TYPE_SIZE_8:
@ -516,13 +357,11 @@ void compareFile(FILE *filePointer1, FILE *filePointer2 ,I32 CurentFilePosition)
break; break;
} }
//printf("no more data"); //printf("no more data");
for (i = 0; i< numberOfCycle; i++) for (i = 0; i< numberOfCycle; i++) {
{
printNoElement(myType, mySize); printNoElement(myType, mySize);
} }
} } else {
else // TODO : mettre les octet qui reste a la fin si ce n'est pas complet // TODO : mettre les octet qui reste a la fin si ce n'est pas complet
{
i = 0; i = 0;
numberOfCycle = 16; numberOfCycle = 16;
while (i< numberOfCycle) while (i< numberOfCycle)
@ -531,56 +370,48 @@ void compareFile(FILE *filePointer1, FILE *filePointer2 ,I32 CurentFilePosition)
{ {
case SHOW_TYPE_SIZE_8: case SHOW_TYPE_SIZE_8:
numberOfCycle = 16; numberOfCycle = 16;
for (i = 0; i< numberOfCycle; i++) for (i = 0; i< numberOfCycle; i++) {
{ if (readFile1 >= (i+1)) {
if (readFile1 >= (i+1)) bool OutOfRange = (readFile2 >= (i+1));
{ bool identic = (data1.data_8[i] != data2.data_8[i]);
printElement((U64)data1.data_8[i], myType, mySize, (data1.data_8[i] != data2.data_8[i])); printElement((uint64_t)data1.data_8[i], myType, mySize, identic, OutOfRange);
} } else {
else
{
printNoElement(myType, mySize); printNoElement(myType, mySize);
} }
} }
break; break;
case SHOW_TYPE_SIZE_16: case SHOW_TYPE_SIZE_16:
numberOfCycle = 8; numberOfCycle = 8;
for (i = 0; i< numberOfCycle; i++) for (i = 0; i< numberOfCycle; i++) {
{ if ((readFile1/2) >= (i+1)) {
if ((readFile1/2) >= (i+1)) bool OutOfRange = ((readFile2/2) >= (i+1));
{ bool identic = (data1.data_16[i] != data2.data_16[i]);
printElement((U64)data1.data_16[i], myType, mySize, (data1.data_16[i] != data2.data_16[i])); printElement((uint64_t)data1.data_16[i], myType, mySize, identic, OutOfRange);
} } else {
else
{
printNoElement(myType, mySize); printNoElement(myType, mySize);
} }
} }
break; break;
case SHOW_TYPE_SIZE_32: case SHOW_TYPE_SIZE_32:
numberOfCycle = 4; numberOfCycle = 4;
for (i = 0; i< numberOfCycle; i++) for (i = 0; i< numberOfCycle; i++) {
{ if ((readFile1/4) >= (i+1)) {
if ((readFile1/4) >= (i+1)) bool OutOfRange = ((readFile2/4) >= (i+1));
{ bool identic = (data1.data_32[i] != data2.data_32[i]);
printElement((U64)data1.data_32[i], myType, mySize, (data1.data_32[i] != data2.data_32[i])); printElement((uint64_t)data1.data_32[i], myType, mySize, identic, OutOfRange);
} } else {
else
{
printNoElement(myType, mySize); printNoElement(myType, mySize);
} }
} }
break; break;
case SHOW_TYPE_SIZE_64: case SHOW_TYPE_SIZE_64:
numberOfCycle = 2; numberOfCycle = 2;
for (i = 0; i< numberOfCycle; i++) for (i = 0; i< numberOfCycle; i++) {
{ if ((readFile1/8) >= (i+1)) {
if ((readFile1/8) >= (i+1)) bool OutOfRange = ((readFile2/8) >= (i+1));
{ bool identic = (data1.data_64[i] != data2.data_64[i]);
printElement((U64)data1.data_64[i], myType, mySize, (data1.data_8[i] != data2.data_64[i])); printElement((uint64_t)data1.data_64[i], myType, mySize, identic, OutOfRange);
} } else {
else
{
printNoElement(myType, mySize); printNoElement(myType, mySize);
} }
} }
@ -593,8 +424,7 @@ void compareFile(FILE *filePointer1, FILE *filePointer2 ,I32 CurentFilePosition)
} }
} }
printf(" | "); printf(" | ");
if (readFile2 == 0) if (readFile2 == 0) {
{
switch(mySize) switch(mySize)
{ {
case SHOW_TYPE_SIZE_8: case SHOW_TYPE_SIZE_8:
@ -614,13 +444,10 @@ void compareFile(FILE *filePointer1, FILE *filePointer2 ,I32 CurentFilePosition)
break; break;
} }
//printf("no more data"); //printf("no more data");
for (i = 0; i< numberOfCycle; i++) for (i = 0; i< numberOfCycle; i++) {
{
printNoElement(myType, mySize); printNoElement(myType, mySize);
} }
} } else {
else
{
i = 0; i = 0;
numberOfCycle = 16; numberOfCycle = 16;
while (i< numberOfCycle) while (i< numberOfCycle)
@ -629,56 +456,48 @@ void compareFile(FILE *filePointer1, FILE *filePointer2 ,I32 CurentFilePosition)
{ {
case SHOW_TYPE_SIZE_8: case SHOW_TYPE_SIZE_8:
numberOfCycle = 16; numberOfCycle = 16;
for (i = 0; i< numberOfCycle; i++) for (i = 0; i< numberOfCycle; i++) {
{ if (readFile2 >= (i+1)) {
if (readFile2 >= (i+1)) bool OutOfRange = (readFile1 >= (i+1));
{ bool identic = (data1.data_8[i] != data2.data_8[i]);
printElement((U64)data2.data_8[i], myType, mySize, (data1.data_8[i] != data2.data_8[i])); printElement((uint64_t)data2.data_8[i], myType, mySize, identic, OutOfRange);
} } else {
else
{
printNoElement(myType, mySize); printNoElement(myType, mySize);
} }
} }
break; break;
case SHOW_TYPE_SIZE_16: case SHOW_TYPE_SIZE_16:
numberOfCycle = 8; numberOfCycle = 8;
for (i = 0; i< numberOfCycle; i++) for (i = 0; i< numberOfCycle; i++) {
{ if ((readFile2/2) >= (i+1)) {
if ((readFile2/2) >= (i+1)) bool OutOfRange = ((readFile1/2) >= (i+1));
{ bool identic = (data1.data_16[i] != data2.data_16[i]);
printElement((U64)data2.data_16[i], myType, mySize, (data1.data_16[i] != data2.data_16[i])); printElement((uint64_t)data2.data_16[i], myType, mySize, identic, OutOfRange);
} } else {
else
{
printNoElement(myType, mySize); printNoElement(myType, mySize);
} }
} }
break; break;
case SHOW_TYPE_SIZE_32: case SHOW_TYPE_SIZE_32:
numberOfCycle = 4; numberOfCycle = 4;
for (i = 0; i< numberOfCycle; i++) for (i = 0; i< numberOfCycle; i++) {
{ if ((readFile2/4) >= (i+1)) {
if ((readFile2/4) >= (i+1)) bool OutOfRange = ((readFile1/4) >= (i+1));
{ bool identic = (data1.data_32[i] != data2.data_32[i]);
printElement((U64)data2.data_32[i], myType, mySize, (data1.data_32[i] != data2.data_32[i])); printElement((uint64_t)data2.data_32[i], myType, mySize, identic, OutOfRange);
} } else {
else
{
printNoElement(myType, mySize); printNoElement(myType, mySize);
} }
} }
break; break;
case SHOW_TYPE_SIZE_64: case SHOW_TYPE_SIZE_64:
numberOfCycle = 2; numberOfCycle = 2;
for (i = 0; i< numberOfCycle; i++) for (i = 0; i< numberOfCycle; i++) {
{ if ((readFile2/8) >= (i+1)) {
if ((readFile2/8) >= (i+1)) bool OutOfRange = ((readFile1/8) >= (i+1));
{ bool identic = (data1.data_64[i] != data2.data_64[i]);
printElement((U64)data2.data_64[i], myType, mySize, (data1.data_8[i] != data2.data_64[i])); printElement((uint64_t)data2.data_64[i], myType, mySize, identic, OutOfRange);
} } else {
else
{
printNoElement(myType, mySize); printNoElement(myType, mySize);
} }
} }
@ -690,121 +509,7 @@ void compareFile(FILE *filePointer1, FILE *filePointer2 ,I32 CurentFilePosition)
i++; i++;
} }
} }
printf(COLOR_NORMAL"\n"); printf(COLOR_NORMAL" |\n");
/*
if ( fread(data1.data_8, sizeof(U8), 16, filePointer1) != 16
|| fread(data2.data_8, sizeof(U8), 16, filePointer2) != 16)
{
printf("No More Data in the file \n");
for (;j < NB_MAX_LINE; j++)
{
printf(" \n");
}
}
else
{
U32 lineNumber = 0;
U32 numberOfCycle;
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"%5d | "COLOR_NORMAL, (int)(lineNumber));
break;
case SHOW_TYPE_SIZE_16:
printf(COLOR_BOLD_MAGENTA"%5d | "COLOR_NORMAL, (int)(lineNumber/2));
break;
case SHOW_TYPE_SIZE_32:
printf(COLOR_BOLD_MAGENTA"%5d | "COLOR_NORMAL, (int)(lineNumber/4));
break;
default:
break;
}
i = 0;
numberOfCycle = 16;
while (i< numberOfCycle)
{
switch(mySize)
{
case SHOW_TYPE_SIZE_8:
numberOfCycle = 16;
for (i = 0; i< numberOfCycle; i++)
{
printElement((U64)data1.data_8[i], myType, mySize, (data1.data_8[i] != data2.data_8[i]));
}
break;
case SHOW_TYPE_SIZE_16:
numberOfCycle = 8;
for (i = 0; i< numberOfCycle; i++)
{
printElement((U64)data1.data_16[i], myType, mySize, (data1.data_16[i] != data2.data_16[i]));
}
break;
case SHOW_TYPE_SIZE_32:
numberOfCycle = 4;
for (i = 0; i< numberOfCycle; i++)
{
printElement((U64)data1.data_32[i], myType, mySize, (data1.data_32[i] != data2.data_32[i]));
}
break;
case SHOW_TYPE_SIZE_64:
numberOfCycle = 2;
for (i = 0; i< numberOfCycle; i++)
{
printElement((U64)data1.data_64[i], myType, mySize, (data1.data_8[i] != data2.data_64[i]));
}
break;
default :
numberOfCycle = 0;
break;
}
i++;
}
printf(" | ");
i = 0;
numberOfCycle = 16;
while (i< numberOfCycle)
{
switch(mySize)
{
case SHOW_TYPE_SIZE_8:
numberOfCycle = 16;
for (i = 0; i< numberOfCycle; i++)
{
printElement((U64)data2.data_8[i], myType, mySize, (data1.data_8[i] != data2.data_8[i]));
}
break;
case SHOW_TYPE_SIZE_16:
numberOfCycle = 8;
for (i = 0; i< numberOfCycle; i++)
{
printElement((U64)data2.data_16[i], myType, mySize, (data1.data_16[i] != data2.data_16[i]));
}
break;
case SHOW_TYPE_SIZE_32:
numberOfCycle = 4;
for (i = 0; i< numberOfCycle; i++)
{
printElement((U64)data2.data_32[i], myType, mySize, (data1.data_32[i] != data2.data_32[i]));
}
break;
case SHOW_TYPE_SIZE_64:
numberOfCycle = 2;
for (i = 0; i< numberOfCycle; i++)
{
printElement((U64)data2.data_64[i], myType, mySize, (data1.data_8[i] != data2.data_64[i]));
}
break;
default :
numberOfCycle = 0;
break;
}
i++;
}
}
*/
} }
} }
@ -820,33 +525,19 @@ void * threadDisplay (void * p_data)
{ {
while (1) while (1)
{ {
if (getParamModification()) if (getParamModification()) {
{ uint32_t CurentFilePosition = getOfsetFile();
U32 CurentFilePosition = getOfsetFile(); if (filePointer[0] != NULL) {
fseek ( filePointer[0] , CurentFilePosition , SEEK_SET ); fseek ( filePointer[0] , CurentFilePosition , SEEK_SET );
if (NULL != filePointer[1]) }
{ if (NULL != filePointer[1]) {
fseek ( filePointer[1] , CurentFilePosition , SEEK_SET ); fseek ( filePointer[1] , CurentFilePosition , SEEK_SET );
} }
if ( NULL != filePointer[0]
&& NULL == filePointer[1] )
{
showFile(filePointer[0],CurentFilePosition);
}
else if ( NULL != filePointer[0]
&& NULL != filePointer[1] )
{
compareFile(filePointer[0],filePointer[1], CurentFilePosition); compareFile(filePointer[0],filePointer[1], CurentFilePosition);
} } else {
}
else
{
usleep(10000); usleep(10000);
} }
} }
return NULL; return NULL;
} }

View File

@ -32,16 +32,16 @@
#include <unistd.h> #include <unistd.h>
#include <string.h> #include <string.h>
typedef unsigned char U8; typedef unsigned char uint8_t;
typedef signed char I8; typedef signed char int8_t;
typedef unsigned short int U16; typedef unsigned short int uint16_t;
typedef signed short int I16; typedef signed short int int16_t;
typedef unsigned long int U32; typedef unsigned long int uint32_t;
typedef signed long int I32; //typedef signed long int int32_t;
typedef unsigned long long int U64; typedef unsigned long long int uint64_t;
typedef signed long long int I64; typedef signed long long int int64_t;
//typedef unsigned long long long int U128; //typedef unsigned long long long int uint128_t;
//typedef signed long long long int I128; //typedef signed long long long int int128_t;
//regular colors //regular colors
#define COLOR_BLACK "\e[0;30m" #define COLOR_BLACK "\e[0;30m"

201
main.c
View File

@ -31,7 +31,7 @@
FILE *filePointer[2] = {NULL, NULL}; FILE *filePointer[2] = {NULL, NULL};
U32 filesize[2] = {0, 0}; uint32_t filesize[2] = {0, 0};
char fileName[2][2096] = {"",""}; char fileName[2][2096] = {"",""};
void usage(void) void usage(void)
@ -79,13 +79,16 @@ void usage(void)
I32 findFirstDiff(void) int32_t findFirstDiff(void)
{ {
U8 data1, data2; uint8_t data1, data2;
I32 offset = 0; int32_t offset = 0;
if( NULL == filePointer[0]
while ( fread(&data1, sizeof(U8), 1, filePointer[0]) == 1 || NULL == filePointer[1] ) {
&& fread(&data2, sizeof(U8), 1, filePointer[1]) == 1) return 0;
}
while ( fread(&data1, sizeof(uint8_t), 1, filePointer[0]) == 1
&& fread(&data2, sizeof(uint8_t), 1, filePointer[1]) == 1)
{ {
offset ++; offset ++;
if (data1 != data2) if (data1 != data2)
@ -93,43 +96,60 @@ I32 findFirstDiff(void)
return offset; return offset;
} }
} }
return -1; return offset;
} }
int main (int argc, char**argv) int main (int argc, char**argv)
{ {
I32 first_Error = 0; int32_t first_Error = 0;
if (2 == argc) filePointer[0] = NULL;
{ filePointer[1] = NULL;
filePointer[0] = fopen(argv[1], "rb"); filesize[0] = 0;
strcpy(fileName[0], argv[1]); filesize[1] = 0;
if ( NULL == filePointer[0]) strcpy(fileName[0], "No-File");
{ strcpy(fileName[1], "No-File");
printf("Can not Open [File_1] = %s\n", argv[1]);
if (3 < argc || argc < 2) {
printf("You set more than 3 argument at the commande line\n");
usage(); usage();
return -1; return -1;
} }
}
else if (3 == argc) if (2 <= argc) {
{ // Open file 1
filePointer[0] = fopen(argv[1], "rb"); filePointer[0] = fopen(argv[1], "rb");
strcpy(fileName[0], argv[1]); 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;
}
}
if (3 <= argc) {
// open File 2
filePointer[1] = fopen(argv[2], "rb"); filePointer[1] = fopen(argv[2], "rb");
strcpy(fileName[1], argv[2]); strcpy(fileName[1], argv[2]);
fseek ( filePointer[0] , 0 , SEEK_END ); 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 ); fseek ( filePointer[1] , 0 , SEEK_END );
filesize[0] = ftell (filePointer[0]);
filesize[1] = ftell (filePointer[1]); filesize[1] = ftell (filePointer[1]);
fseek ( filePointer[0] , 0 , SEEK_SET );
fseek ( filePointer[1] , 0 , SEEK_SET ); fseek ( filePointer[1] , 0 , SEEK_SET );
} else {
filesize[1] = 0;
}
}
// try to find the first error...
first_Error = findFirstDiff(); first_Error = findFirstDiff();
}
else
{
usage();
return -1;
}
// rendre la lecture des données non canonique // rendre la lecture des données non canonique
system("stty -icanon"); system("stty -icanon");
@ -139,38 +159,15 @@ int main (int argc, char**argv)
system("clear"); system("clear");
/*
printf(GO_TOP);
if ( NULL != filePointer[0]
&& NULL == filePointer[1] )
{
showFile(filePointer[0] ,CurentFilePosition);
}
else if ( NULL != filePointer[0]
&& NULL != filePointer[1] )
{
compareFile(filePointer[0],filePointer[1] ,CurentFilePosition);
}
*/
int ret = 0; int ret = 0;
pthread_t HangleThreadDisplay; pthread_t HangleThreadDisplay;
// Creation du thread du magasin.
//printf ("Creation du thread du magasin !\n");
ret = pthread_create ( & HangleThreadDisplay, NULL, threadDisplay, NULL ); ret = pthread_create ( & HangleThreadDisplay, NULL, threadDisplay, NULL );
if (! ret) if (! ret)
{ {
while (1) while (1)
{ {
U32 inputValue; uint32_t inputValue;
inputValue = getc (stdin); inputValue = getc (stdin);
//printf("\n get data : 0x%08x ..... : \n", (unsigned int)inputValue); //printf("\n get data : 0x%08x ..... : \n", (unsigned int)inputValue);
switch(inputValue) switch(inputValue)
@ -192,20 +189,13 @@ int main (int argc, char**argv)
|| inputValue == 0x43 || inputValue == 0x43
|| inputValue == 0x44) || inputValue == 0x44)
{ {
if (inputValue == 0x41) if (inputValue == 0x41) {
{
upDownOfsetFile(-5); upDownOfsetFile(-5);
} } else if ( inputValue == 0x42) {
else if ( inputValue == 0x42)
{
upDownOfsetFile(5); upDownOfsetFile(5);
} } else if ( inputValue == 0x43) {
else if ( inputValue == 0x43)
{
upDownOfsetFile(NB_MAX_LINE); upDownOfsetFile(NB_MAX_LINE);
} } else if ( inputValue == 0x44) {
else if ( inputValue == 0x44)
{
upDownOfsetFile(-NB_MAX_LINE); upDownOfsetFile(-NB_MAX_LINE);
} }
} }
@ -236,13 +226,10 @@ int main (int argc, char**argv)
case 'Z': case 'Z':
{ {
static bool whichElement = false; static bool whichElement = false;
if (whichElement == false) if (whichElement == false) {
{
whichElement = true; whichElement = true;
setOfsetFile((filesize[0]/16)*16 - 256); setOfsetFile((filesize[0]/16)*16 - 256);
} } else {
else
{
whichElement = false; whichElement = false;
setOfsetFile((filesize[1]/16)*16 - 256); setOfsetFile((filesize[1]/16)*16 - 256);
} }
@ -250,19 +237,14 @@ int main (int argc, char**argv)
break; break;
} }
} }
} } else {
else
{
fprintf (stderr, "%s", strerror (ret)); fprintf (stderr, "%s", strerror (ret));
} }
exit_programme : exit_programme :
if (NULL != filePointer[0]) if (NULL != filePointer[0]) {
{
fclose(filePointer[0]); fclose(filePointer[0]);
} } if (NULL != filePointer[1]) {
if (NULL != filePointer[1])
{
fclose(filePointer[1]); fclose(filePointer[1]);
} }
@ -279,43 +261,6 @@ exit_programme :
void displayCouleurBash(void) void displayCouleurBash(void)
{ {
/* Initialise the main variables /* Initialise the main variables
@ -329,8 +274,7 @@ void displayCouleurBash(void)
/* Print the 16 first colours, known as colours system */ /* Print the 16 first colours, known as colours system */
printf("System colours:\n"); printf("System colours:\n");
for( ; colour < 16; colour++) for( ; colour < 16; colour++) {
{
printf("\e[48;5;%dm ", colour); printf("\e[48;5;%dm ", colour);
} }
printf("\e[0m\n\n"); printf("\e[0m\n\n");
@ -338,14 +282,11 @@ void displayCouleurBash(void)
/* The 216 colours */ /* The 216 colours */
printf("Color cube: 6x6x6\n"); printf("Color cube: 6x6x6\n");
for ( ; colour < 232; colour++, espace++) for ( ; colour < 232; colour++, espace++) {
{ if ((espace%6) == 0) {
if ((espace%6) == 0)
{
printf("\e[0m "); printf("\e[0m ");
} }
if ((espace%36 == 0)) if ((espace%36 == 0)) {
{
printf("\e[0m\n"); printf("\e[0m\n");
} }
printf("\e[48;5;%dm ", colour); printf("\e[48;5;%dm ", colour);
@ -355,8 +296,7 @@ void displayCouleurBash(void)
/* And the grey colours */ /* And the grey colours */
printf("Greyscale ramp\n"); printf("Greyscale ramp\n");
for ( ; colour < 256; colour++) for ( ; colour < 256; colour++) {
{
printf("\e[48;5;%dm ", colour); printf("\e[48;5;%dm ", colour);
} }
printf("\e[0m\n\n"); printf("\e[0m\n\n");
@ -370,8 +310,7 @@ void displayCouleurBash(void)
/* Print the 16 first colours, known as colours system */ /* Print the 16 first colours, known as colours system */
printf("System colours:\n"); printf("System colours:\n");
for( ; colour < 16; colour++) for( ; colour < 16; colour++) {
{
printf("\e[48;5;%dm ", colour); printf("\e[48;5;%dm ", colour);
} }
printf("\e[0m\n\n"); printf("\e[0m\n\n");
@ -379,14 +318,11 @@ void displayCouleurBash(void)
/* The 216 colours */ /* The 216 colours */
printf("Color cube: 6x6x6\n"); printf("Color cube: 6x6x6\n");
for ( ; colour < 232; colour++, espace++) for ( ; colour < 232; colour++, espace++) {
{ if ((espace%6) == 0) {
if ((espace%6) == 0)
{
printf("\e[0m "); printf("\e[0m ");
} }
if ((espace%36 == 0)) if ((espace%36 == 0)) {
{
printf("\e[0m\n"); printf("\e[0m\n");
} }
printf("\e[48;5;%dm ", colour); printf("\e[48;5;%dm ", colour);
@ -396,8 +332,7 @@ void displayCouleurBash(void)
/* And the grey colours */ /* And the grey colours */
printf("Greyscale ramp\n"); printf("Greyscale ramp\n");
for ( ; colour < 256; colour++) for ( ; colour < 256; colour++) {
{
printf("\e[48;5;%dm ", colour); printf("\e[48;5;%dm ", colour);
} }
printf("\e[0m\n\n"); printf("\e[0m\n\n");

View File

@ -26,7 +26,7 @@
#include "parameter.h" #include "parameter.h"
// Parameter Local Value : // Parameter Local Value :
static U32 fileOfset = 0; static uint32_t fileOfset = 0;
static bool parmamModifier = true; static bool parmamModifier = true;
@ -34,55 +34,46 @@ static showType_te curentType = SHOW_TYPE_HEX;
static showTypeSize_te curentTypeSize = SHOW_TYPE_SIZE_8; static showTypeSize_te curentTypeSize = SHOW_TYPE_SIZE_8;
extern U32 filesize[2]; extern uint32_t filesize[2];
void setOfsetFile(I32 offset) void setOfsetFile(int32_t offset)
{
if (0 > offset)
{ {
if (0 > offset) {
offset = 0; offset = 0;
} }
if ( offset > (I32)filesize[0] if( offset > (int32_t)filesize[0]
&& offset > (I32)filesize[1]) && offset > (int32_t)filesize[1]) {
{
// nothing to do // nothing to do
return; return;
} }
if (offset != (I32)fileOfset) if (offset != (int32_t)fileOfset) {
{ fileOfset = (uint32_t)offset;
fileOfset = (U32)offset;
parmamModifier = true; parmamModifier = true;
} }
} }
void upDownOfsetFile(I32 offset) void upDownOfsetFile(int32_t offset)
{ {
I32 tmp; int32_t tmp;
tmp = fileOfset + (16 * offset); tmp = fileOfset + (16 * offset);
if (0 > tmp) if (0 > tmp) {
{
setOfsetFile(0); setOfsetFile(0);
} } else {
else
{
setOfsetFile(tmp); setOfsetFile(tmp);
} }
} }
U32 getOfsetFile(void) uint32_t getOfsetFile(void)
{ {
return fileOfset; return fileOfset;
} }
bool getParamModification() bool getParamModification()
{ {
if (parmamModifier == true) if (parmamModifier == true) {
{
parmamModifier = false; parmamModifier = false;
return true; return true;
} } else {
else
{
return false; return false;
} }
} }
@ -126,7 +117,7 @@ void nextTypeSize(void)
curentTypeSize = SHOW_TYPE_SIZE_32; curentTypeSize = SHOW_TYPE_SIZE_32;
break; break;
case SHOW_TYPE_SIZE_32: case SHOW_TYPE_SIZE_32:
curentTypeSize = SHOW_TYPE_SIZE_8; curentTypeSize = SHOW_TYPE_SIZE_64;
break; break;
case SHOW_TYPE_SIZE_64: case SHOW_TYPE_SIZE_64:
curentTypeSize = SHOW_TYPE_SIZE_8; curentTypeSize = SHOW_TYPE_SIZE_8;

View File

@ -30,9 +30,9 @@
#include "generalDefine.h" #include "generalDefine.h"
void setOfsetFile(I32 offset); void setOfsetFile(int32_t offset);
void upDownOfsetFile(I32 offset); void upDownOfsetFile(int32_t offset);
U32 getOfsetFile(void); uint32_t getOfsetFile(void);
bool getParamModification(); bool getParamModification();