Offset available in the start of file ==> error while searchir error (no check of the ofset ...

This commit is contained in:
Edouard Dupin 2012-02-10 18:06:39 +01:00
parent f8a3ab2db8
commit ef3750600d
5 changed files with 309 additions and 133 deletions

268
display.c
View File

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

View File

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

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

View File

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

View File

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