From f8a3ab2db854ae63bd156a003b4f9ca03d1a24f3 Mon Sep 17 00:00:00 2001 From: Edouard Dupin Date: Fri, 10 Feb 2012 14:02:51 +0100 Subject: [PATCH] Update the system to support display of 64 bits ans a single file... and some other things --- display.c | 1279 ++++++++++++++++++----------------------------- generalDefine.h | 20 +- main.c | 579 ++++++++++----------- parameter.c | 155 +++--- parameter.h | 6 +- 5 files changed, 828 insertions(+), 1211 deletions(-) diff --git a/display.c b/display.c index c0d7087..78e8bd0 100755 --- a/display.c +++ b/display.c @@ -28,784 +28,489 @@ extern FILE *filePointer[2]; extern char fileName[2][2096]; void showConfiguration(void) { - showType_te myType = getType(); - showTypeSize_te mySize = getTypeSize(); - - printf(GO_TOP); - printf(COLOR_BOLD_GREEN"----------------------------------------------------------------------------------------------------------------------------\n"COLOR_NORMAL); - printf(COLOR_GREEN); - printf("| hewViewer | ofset : %7d octets | ", (int)getOfsetFile()); - printf(" Type (t) : "); - switch(myType) - { - case SHOW_TYPE_HEX: - printf("Hexadecimal "); - break; - case SHOW_TYPE_DECIMAL_SIGNED: - printf("Decimal Signed "); - break; - case SHOW_TYPE_DECIMAL_UNSIGNED: - printf("Decimal Unsigned"); - break; - default : - printf("? "); - break; - } - printf(" | "); - printf(" Size (s) : "); - switch(mySize) - { - case SHOW_TYPE_SIZE_8: - printf(" 8 bits "); - break; - case SHOW_TYPE_SIZE_16: - printf(" 16 bits "); - break; - case SHOW_TYPE_SIZE_32: - printf(" 32 bits "); - break; - case SHOW_TYPE_SIZE_64: - printf(" 64 bits "); - break; - case SHOW_TYPE_SIZE_128: - printf("128 bits "); - break; - default : - printf(" ? bits "); - break; - } - printf(COLOR_NORMAL"\n"); - printf(COLOR_BOLD_GREEN"----------------------------------------------------------------------------------------------------------------------------\n"COLOR_NORMAL); + showType_te myType = getType(); + showTypeSize_te mySize = getTypeSize(); + + printf(GO_TOP); + printf(COLOR_BOLD_GREEN"----------------------------------------------------------------------------------------------------------------------------\n"COLOR_NORMAL); + printf(COLOR_GREEN); + printf("| hewViewer | ofset : %7d octets | ", (int)getOfsetFile()); + printf(" Type (t) : "); + switch(myType) + { + case SHOW_TYPE_HEX: + printf("Hexadecimal "); + break; + case SHOW_TYPE_DECIMAL_SIGNED: + printf("Decimal Signed "); + break; + case SHOW_TYPE_DECIMAL_UNSIGNED: + printf("Decimal Unsigned"); + break; + default : + printf("? "); + break; + } + printf(" | "); + printf(" Size (s) : "); + switch(mySize) + { + case SHOW_TYPE_SIZE_8: + printf(" 8 bits "); + break; + case SHOW_TYPE_SIZE_16: + printf(" 16 bits "); + break; + case SHOW_TYPE_SIZE_32: + printf(" 32 bits "); + break; + case SHOW_TYPE_SIZE_64: + printf(" 64 bits "); + break; + case SHOW_TYPE_SIZE_128: + printf("128 bits "); + break; + default : + printf(" ? bits "); + 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_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) { - switch(localType) - { - case SHOW_TYPE_HEX: - switch(localSize) - { - case SHOW_TYPE_SIZE_8: - printf(" "); - 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: - break; - } - break; - case SHOW_TYPE_DECIMAL_SIGNED: - switch(localSize) - { - case SHOW_TYPE_SIZE_8: - printf(" "); - 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: - break; - } - - break; - case SHOW_TYPE_DECIMAL_UNSIGNED: - switch(localSize) - { - case SHOW_TYPE_SIZE_8: - printf(" "); - 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: - break; - } - break; - default: - break; - } - + switch(localType) + { + case SHOW_TYPE_HEX: + switch(localSize) + { + case SHOW_TYPE_SIZE_8: + printf(" "); + break; + case SHOW_TYPE_SIZE_16: + printf(" "); + break; + case SHOW_TYPE_SIZE_32: + printf(" "); + break; + case SHOW_TYPE_SIZE_64: + printf(" "); + break; + default: + break; + } + break; + case SHOW_TYPE_DECIMAL_UNSIGNED: + case SHOW_TYPE_DECIMAL_SIGNED: + switch(localSize) + { + case SHOW_TYPE_SIZE_8: + printf(" "); + break; + case SHOW_TYPE_SIZE_16: + printf(" "); + break; + case SHOW_TYPE_SIZE_32: + printf(" "); + break; + case SHOW_TYPE_SIZE_64: + printf(" "); + break; + default: + break; + } + break; + default: + break; + } + } -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) - { - printf(COLOR_BOLD_RED); - } - switch(localType) - { - case SHOW_TYPE_HEX: - switch(localSize) - { - case SHOW_TYPE_SIZE_8: - printf("%02x"COLOR_NORMAL" ", (unsigned int)((U8)data)); - break; - case SHOW_TYPE_SIZE_16: - printf("%04x"COLOR_NORMAL" ", (unsigned int)((U16)data)); - break; - case SHOW_TYPE_SIZE_32: - printf("%08x"COLOR_NORMAL" ", (unsigned int)((U32)data)); - break; - 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_SIGNED: - switch(localSize) - { - case SHOW_TYPE_SIZE_8: - printf("%4d"COLOR_NORMAL"", ((I8)data)); - break; - case SHOW_TYPE_SIZE_16: - printf("%6d"COLOR_NORMAL" ", ((I16)data)); - break; - case SHOW_TYPE_SIZE_32: - printf("%9d"COLOR_NORMAL" ", (int)((I32)data)); - break; - case SHOW_TYPE_SIZE_64: - //printf("%08x%08x"COLOR_NORMAL" ", (unsigned int)((U32)(data>>32)), (unsigned int)((U32)data)); - break; - default: - break; - } + if (false == outOfRange) { + printf(COLOR_CYAN); + } else if (true == error) { + printf(COLOR_BOLD_RED); + } + switch(localType) + { + case SHOW_TYPE_HEX: + switch(localSize) + { + case SHOW_TYPE_SIZE_8: + printf("%02x"COLOR_NORMAL" ", (unsigned int)((uint8_t)data)); + break; + case SHOW_TYPE_SIZE_16: + printf("%04x"COLOR_NORMAL" ", (unsigned int)((uint16_t)data)); + break; + case SHOW_TYPE_SIZE_32: + printf("%08x"COLOR_NORMAL" ", (unsigned int)((uint32_t)data)); + break; + case SHOW_TYPE_SIZE_64: + printf("%08x%08x"COLOR_NORMAL" ", (unsigned int)((uint32_t)(data>>32)), (unsigned int)((uint32_t)data)); + break; + default: + break; + } + break; + case SHOW_TYPE_DECIMAL_SIGNED: + switch(localSize) + { + case SHOW_TYPE_SIZE_8: + printf("%4d"COLOR_NORMAL" ", ((int8_t)data)); + break; + case SHOW_TYPE_SIZE_16: + printf("%7d"COLOR_NORMAL" ", ((int16_t)data)); + break; + case SHOW_TYPE_SIZE_32: + printf("%14d"COLOR_NORMAL" ", (int)((int32_t)data)); + break; + case SHOW_TYPE_SIZE_64: + printf("%21lld"COLOR_NORMAL" ", (int64_t)data); + break; + default: + break; + } - break; - case SHOW_TYPE_DECIMAL_UNSIGNED: - switch(localSize) - { - case SHOW_TYPE_SIZE_8: - printf("%3d"COLOR_NORMAL" ", ((U8)data)); - break; - case SHOW_TYPE_SIZE_16: - printf("%5d"COLOR_NORMAL" ", ((U16)data)); - break; - case SHOW_TYPE_SIZE_32: - printf("%9d"COLOR_NORMAL" ", (unsigned int)((U32)data)); - break; - case SHOW_TYPE_SIZE_64: - //printf("%08x%08x"COLOR_NORMAL" ", (unsigned int)((U32)(data>>32)), (unsigned int)((U32)data)); - break; - default: - break; - } - break; - default: - break; - } - + break; + case SHOW_TYPE_DECIMAL_UNSIGNED: + switch(localSize) + { + case SHOW_TYPE_SIZE_8: + printf("%4u"COLOR_NORMAL" ", ((uint8_t)data)); + break; + case SHOW_TYPE_SIZE_16: + printf("%7u"COLOR_NORMAL" ", ((uint16_t)data)); + break; + case SHOW_TYPE_SIZE_32: + printf("%14u"COLOR_NORMAL" ", (unsigned int)((uint32_t)data)); + break; + case SHOW_TYPE_SIZE_64: + printf("%21llu"COLOR_NORMAL" ", (uint64_t)data); + break; + default: + break; + } + break; + default: + break; + } + } typedef union { - U8 data_8 [16]; - U16 data_16 [8]; - U32 data_32 [4]; - U64 data_64 [2]; + uint8_t data_8 [16]; + uint16_t data_16 [8]; + uint32_t data_32 [4]; + uint64_t data_64 [2]; }inputData_tu; -void compareFile(FILE *filePointer1, FILE *filePointer2 ,I32 CurentFilePosition) +void compareFile(FILE *filePointer1, FILE *filePointer2 ,int32_t CurentFilePosition) { - inputData_tu data1; - inputData_tu data2; - U32 i; - U32 j; - - - showConfiguration(); - - showTypeSize_te mySize = getTypeSize(); - showType_te myType = getType(); - - // Display the main show - printf(COLOR_BOLD_YELLOW"Ofset : | | "); - switch(myType) - { - 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: - 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_HEX: - default : - 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; - } - printf(COLOR_NORMAL"\n"); - - - // Display the main show - printf(COLOR_BOLD_YELLOW"------------"); - for (i = 0; i< 16; i++) - { - printf("---"); - } - printf("---"); - for (i = 0; i< 16; i++) - { - printf("---"); - } - printf(COLOR_NORMAL"\n"); - for (j=0; j < NB_MAX_LINE; j++) - { - U32 readFile1 = 0; - U32 readFile2 = 0; - U32 lineNumber = 0; - U32 numberOfCycle; - // read data in files : - readFile1 = fread(data1.data_8, sizeof(U8), 16, filePointer1); - readFile2 = fread(data2.data_8, sizeof(U8), 16, filePointer2); - // 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"%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; - } - if (readFile1 == 0) - { - switch(mySize) - { - case SHOW_TYPE_SIZE_8: - numberOfCycle = 16; - break; - case SHOW_TYPE_SIZE_16: - numberOfCycle = 8; - break; - case SHOW_TYPE_SIZE_32: - numberOfCycle = 4; - break; - case SHOW_TYPE_SIZE_64: - numberOfCycle = 2; - break; - default : - numberOfCycle = 0; - break; - } - //printf("no more data"); - for (i = 0; i< numberOfCycle; i++) - { - printNoElement(myType, mySize); - } - } - else // TODO : mettre les octet qui reste a la fin si ce n'est pas complet - { - i = 0; - numberOfCycle = 16; - while (i< numberOfCycle) - { - switch(mySize) - { - case SHOW_TYPE_SIZE_8: - numberOfCycle = 16; - for (i = 0; i< numberOfCycle; i++) - { - if (readFile1 >= (i+1)) - { - printElement((U64)data1.data_8[i], myType, mySize, (data1.data_8[i] != data2.data_8[i])); - } - else - { - printNoElement(myType, mySize); - } - } - break; - case SHOW_TYPE_SIZE_16: - numberOfCycle = 8; - for (i = 0; i< numberOfCycle; i++) - { - if ((readFile1/2) >= (i+1)) - { - printElement((U64)data1.data_16[i], myType, mySize, (data1.data_16[i] != data2.data_16[i])); - } - else - { - printNoElement(myType, mySize); - } - } - break; - case SHOW_TYPE_SIZE_32: - numberOfCycle = 4; - for (i = 0; i< numberOfCycle; i++) - { - if ((readFile1/4) >= (i+1)) - { - printElement((U64)data1.data_32[i], myType, mySize, (data1.data_32[i] != data2.data_32[i])); - } - else - { - printNoElement(myType, mySize); - } - } - break; - case SHOW_TYPE_SIZE_64: - numberOfCycle = 2; - for (i = 0; i< numberOfCycle; i++) - { - if ((readFile1/8) >= (i+1)) - { - printElement((U64)data1.data_64[i], myType, mySize, (data1.data_8[i] != data2.data_64[i])); - } - else - { - printNoElement(myType, mySize); - } - } - break; - default : - numberOfCycle = 0; - break; - } - i++; - } - } - printf(" | "); - if (readFile2 == 0) - { - switch(mySize) - { - case SHOW_TYPE_SIZE_8: - numberOfCycle = 16; - break; - case SHOW_TYPE_SIZE_16: - numberOfCycle = 8; - break; - case SHOW_TYPE_SIZE_32: - numberOfCycle = 4; - break; - case SHOW_TYPE_SIZE_64: - numberOfCycle = 2; - break; - default : - numberOfCycle = 0; - break; - } - //printf("no more data"); - for (i = 0; i< numberOfCycle; i++) - { - printNoElement(myType, mySize); - } - } - else - { - i = 0; - numberOfCycle = 16; - while (i< numberOfCycle) - { - switch(mySize) - { - case SHOW_TYPE_SIZE_8: - numberOfCycle = 16; - for (i = 0; i< numberOfCycle; i++) - { - if (readFile2 >= (i+1)) - { - printElement((U64)data2.data_8[i], myType, mySize, (data1.data_8[i] != data2.data_8[i])); - } - else - { - printNoElement(myType, mySize); - } - } - break; - case SHOW_TYPE_SIZE_16: - numberOfCycle = 8; - for (i = 0; i< numberOfCycle; i++) - { - if ((readFile2/2) >= (i+1)) - { - printElement((U64)data2.data_16[i], myType, mySize, (data1.data_16[i] != data2.data_16[i])); - } - else - { - printNoElement(myType, mySize); - } - } - break; - case SHOW_TYPE_SIZE_32: - numberOfCycle = 4; - for (i = 0; i< numberOfCycle; i++) - { - if ((readFile2/4) >= (i+1)) - { - printElement((U64)data2.data_32[i], myType, mySize, (data1.data_32[i] != data2.data_32[i])); - } - else - { - printNoElement(myType, mySize); - } - } - break; - case SHOW_TYPE_SIZE_64: - numberOfCycle = 2; - for (i = 0; i< numberOfCycle; i++) - { - if ((readFile2/8) >= (i+1)) - { - printElement((U64)data2.data_64[i], myType, mySize, (data1.data_8[i] != data2.data_64[i])); - } - else - { - printNoElement(myType, mySize); - } - } - break; - default : - numberOfCycle = 0; - break; - } - i++; - } - } - 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++; - } - } - */ - } + inputData_tu data1; + inputData_tu data2; + uint32_t i; + uint32_t j; + + showConfiguration(); + + showTypeSize_te mySize = getTypeSize(); + showType_te myType = getType(); + + // Display the main show + printf(COLOR_BOLD_YELLOW"Ofset : | | "); + switch(myType) + { + case SHOW_TYPE_DECIMAL_SIGNED: + case SHOW_TYPE_DECIMAL_UNSIGNED: + 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; + case SHOW_TYPE_SIZE_64: + for (j=0; j<2 ; j++ ) { + printf(" +0 +8 | "); + } + break; + default: + break; + } + if (i == 0) + { + printf(COLOR_NORMAL"\n"); + printf(COLOR_BOLD_MAGENTA" | ofset | "); + } + } + break; + case SHOW_TYPE_HEX: + default : + 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; + case SHOW_TYPE_SIZE_64: + for (j=0; j<2 ; j++ ) { + printf(" +0 +8 | "); + } + break; + default: + break; + } + if (i == 0) + { + printf(COLOR_NORMAL"\n"); + printf(COLOR_BOLD_MAGENTA" | ofset | "); + } + } + break; + } + printf(COLOR_NORMAL"\n"); + + + // Display the main show + printf(COLOR_BOLD_YELLOW"----------------------------------------------------------------------------------------------------------------------------"); + printf(COLOR_NORMAL"\n"); + for (j=0; j < NB_MAX_LINE; j++) { + uint32_t readFile1 = 0; + uint32_t readFile2 = 0; + uint32_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)); + 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 + 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; + } + if (readFile1 == 0) { + switch(mySize) + { + case SHOW_TYPE_SIZE_8: + numberOfCycle = 16; + break; + case SHOW_TYPE_SIZE_16: + numberOfCycle = 8; + break; + case SHOW_TYPE_SIZE_32: + numberOfCycle = 4; + break; + case SHOW_TYPE_SIZE_64: + numberOfCycle = 2; + break; + default : + numberOfCycle = 0; + break; + } + //printf("no more data"); + for (i = 0; i< numberOfCycle; i++) { + printNoElement(myType, mySize); + } + } else { + // TODO : mettre les octet qui reste a la fin si ce n'est pas complet + i = 0; + numberOfCycle = 16; + while (i< numberOfCycle) + { + switch(mySize) + { + case SHOW_TYPE_SIZE_8: + numberOfCycle = 16; + for (i = 0; i< numberOfCycle; i++) { + if (readFile1 >= (i+1)) { + bool OutOfRange = (readFile2 >= (i+1)); + bool identic = (data1.data_8[i] != data2.data_8[i]); + printElement((uint64_t)data1.data_8[i], myType, mySize, identic, OutOfRange); + } else { + printNoElement(myType, mySize); + } + } + break; + case SHOW_TYPE_SIZE_16: + numberOfCycle = 8; + for (i = 0; i< numberOfCycle; i++) { + if ((readFile1/2) >= (i+1)) { + bool OutOfRange = ((readFile2/2) >= (i+1)); + bool identic = (data1.data_16[i] != data2.data_16[i]); + printElement((uint64_t)data1.data_16[i], myType, mySize, identic, OutOfRange); + } else { + printNoElement(myType, mySize); + } + } + break; + case SHOW_TYPE_SIZE_32: + numberOfCycle = 4; + for (i = 0; i< numberOfCycle; i++) { + if ((readFile1/4) >= (i+1)) { + bool OutOfRange = ((readFile2/4) >= (i+1)); + bool identic = (data1.data_32[i] != data2.data_32[i]); + printElement((uint64_t)data1.data_32[i], myType, mySize, identic, OutOfRange); + } else { + printNoElement(myType, mySize); + } + } + break; + case SHOW_TYPE_SIZE_64: + numberOfCycle = 2; + for (i = 0; i< numberOfCycle; i++) { + if ((readFile1/8) >= (i+1)) { + bool OutOfRange = ((readFile2/8) >= (i+1)); + bool identic = (data1.data_64[i] != data2.data_64[i]); + printElement((uint64_t)data1.data_64[i], myType, mySize, identic, OutOfRange); + } else { + printNoElement(myType, mySize); + } + } + break; + default : + numberOfCycle = 0; + break; + } + i++; + } + } + printf(" | "); + if (readFile2 == 0) { + switch(mySize) + { + case SHOW_TYPE_SIZE_8: + numberOfCycle = 16; + break; + case SHOW_TYPE_SIZE_16: + numberOfCycle = 8; + break; + case SHOW_TYPE_SIZE_32: + numberOfCycle = 4; + break; + case SHOW_TYPE_SIZE_64: + numberOfCycle = 2; + break; + default : + numberOfCycle = 0; + break; + } + //printf("no more data"); + for (i = 0; i< numberOfCycle; i++) { + printNoElement(myType, mySize); + } + } else { + i = 0; + numberOfCycle = 16; + while (i< numberOfCycle) + { + switch(mySize) + { + case SHOW_TYPE_SIZE_8: + numberOfCycle = 16; + for (i = 0; i< numberOfCycle; i++) { + if (readFile2 >= (i+1)) { + bool OutOfRange = (readFile1 >= (i+1)); + bool identic = (data1.data_8[i] != data2.data_8[i]); + printElement((uint64_t)data2.data_8[i], myType, mySize, identic, OutOfRange); + } else { + printNoElement(myType, mySize); + } + } + break; + case SHOW_TYPE_SIZE_16: + numberOfCycle = 8; + for (i = 0; i< numberOfCycle; i++) { + if ((readFile2/2) >= (i+1)) { + bool OutOfRange = ((readFile1/2) >= (i+1)); + bool identic = (data1.data_16[i] != data2.data_16[i]); + printElement((uint64_t)data2.data_16[i], myType, mySize, identic, OutOfRange); + } else { + printNoElement(myType, mySize); + } + } + break; + case SHOW_TYPE_SIZE_32: + numberOfCycle = 4; + for (i = 0; i< numberOfCycle; i++) { + if ((readFile2/4) >= (i+1)) { + bool OutOfRange = ((readFile1/4) >= (i+1)); + bool identic = (data1.data_32[i] != data2.data_32[i]); + printElement((uint64_t)data2.data_32[i], myType, mySize, identic, OutOfRange); + } else { + printNoElement(myType, mySize); + } + } + break; + case SHOW_TYPE_SIZE_64: + numberOfCycle = 2; + for (i = 0; i< numberOfCycle; i++) { + if ((readFile2/8) >= (i+1)) { + bool OutOfRange = ((readFile1/8) >= (i+1)); + bool identic = (data1.data_64[i] != data2.data_64[i]); + printElement((uint64_t)data2.data_64[i], myType, mySize, identic, OutOfRange); + } else { + printNoElement(myType, mySize); + } + } + break; + default : + numberOfCycle = 0; + break; + } + i++; + } + } + printf(COLOR_NORMAL" |\n"); + } } @@ -818,36 +523,22 @@ void compareFile(FILE *filePointer1, FILE *filePointer2 ,I32 CurentFilePosition) /* Fonction pour le thread du magasin. */ void * threadDisplay (void * p_data) { - while (1) - { - if (getParamModification()) - { - U32 CurentFilePosition = getOfsetFile(); - fseek ( filePointer[0] , CurentFilePosition , SEEK_SET ); - if (NULL != filePointer[1]) - { - 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); - } - } - else - { - usleep(10000); - } - } - - return NULL; + 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); + } else { + usleep(10000); + } + } + return NULL; } diff --git a/generalDefine.h b/generalDefine.h index f317180..9be62e9 100755 --- a/generalDefine.h +++ b/generalDefine.h @@ -32,16 +32,16 @@ #include #include -typedef unsigned char U8; -typedef signed char I8; -typedef unsigned short int U16; -typedef signed short int I16; -typedef unsigned long int U32; -typedef signed long int I32; -typedef unsigned long long int U64; -typedef signed long long int I64; -//typedef unsigned long long long int U128; -//typedef signed long long long int I128; +typedef unsigned char uint8_t; +typedef signed char int8_t; +typedef unsigned short int uint16_t; +typedef signed short int int16_t; +typedef unsigned long int uint32_t; +//typedef signed long int int32_t; +typedef unsigned long long int uint64_t; +typedef signed long long int int64_t; +//typedef unsigned long long long int uint128_t; +//typedef signed long long long int int128_t; //regular colors #define COLOR_BLACK "\e[0;30m" diff --git a/main.c b/main.c index 720800b..419d7d4 100755 --- a/main.c +++ b/main.c @@ -31,43 +31,43 @@ FILE *filePointer[2] = {NULL, NULL}; -U32 filesize[2] = {0, 0}; +uint32_t filesize[2] = {0, 0}; char fileName[2][2096] = {"",""}; void usage(void) { - printf("usage : hexViwer [file_1] [file_2]\n"); - printf("\t[file_1] : Show the first file only\n"); - printf("\t[file_2] : if it was precise : Show the comparaison with the first file\n"); - printf("\t\n"); - printf("\tInside Usage : \n"); - printf("\t\t[a] Go to the start of the files\n"); - printf("\t\t[z] Go to the end of the files (the first push is the File 1, the second push is the file 2) \n"); - printf("\t\t[q] Quit the curent program\n"); - printf("\t\t[s] Change the view of the propram of the size of interpretation (8 bits, 16 bits, 32 bits)\n"); - printf("\t\t[t] Change the interpretation of Data (hexedecimal, Signed Decimal, Unigned Decimal)\n"); - printf("\t\t[f] Find the first Error when comparing the two files\n"); - printf("\t\t[UP] Go up 5 line in the view\n"); - printf("\t\t[DOWN] Go down 5 line in the view\n"); - 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"); - printf("\t\t- The print in Binary\n"); - printf("\t\t- The Modification of the file\n"); - printf("\t\t- The Saving of the file\n"); - printf("\t\t- The information that one of the files has been update\n"); - printf("\t\t- To reload the two files ==> [U]\n"); - printf("\t\t- The windows scroling with the mouse\n"); - printf("\t\t- The selection with the mouse\n"); - printf("\t\t- The display on char view\n"); - printf("\t\t- The scroling Bar on the right\n"); - 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");*/ + printf("usage : hexViwer [file_1] [file_2]\n"); + printf("\t[file_1] : Show the first file only\n"); + printf("\t[file_2] : if it was precise : Show the comparaison with the first file\n"); + printf("\t\n"); + printf("\tInside Usage : \n"); + printf("\t\t[a] Go to the start of the files\n"); + printf("\t\t[z] Go to the end of the files (the first push is the File 1, the second push is the file 2) \n"); + printf("\t\t[q] Quit the curent program\n"); + printf("\t\t[s] Change the view of the propram of the size of interpretation (8 bits, 16 bits, 32 bits)\n"); + printf("\t\t[t] Change the interpretation of Data (hexedecimal, Signed Decimal, Unigned Decimal)\n"); + printf("\t\t[f] Find the first Error when comparing the two files\n"); + printf("\t\t[UP] Go up 5 line in the view\n"); + printf("\t\t[DOWN] Go down 5 line in the view\n"); + 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"); + printf("\t\t- The print in Binary\n"); + printf("\t\t- The Modification of the file\n"); + printf("\t\t- The Saving of the file\n"); + printf("\t\t- The information that one of the files has been update\n"); + printf("\t\t- To reload the two files ==> [U]\n"); + printf("\t\t- The windows scroling with the mouse\n"); + printf("\t\t- The selection with the mouse\n"); + printf("\t\t- The display on char view\n"); + printf("\t\t- The scroling Bar on the right\n"); + 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");*/ } @@ -79,198 +79,180 @@ void usage(void) -I32 findFirstDiff(void) +int32_t findFirstDiff(void) { - U8 data1, data2; - I32 offset = 0; - - while ( fread(&data1, sizeof(U8), 1, filePointer[0]) == 1 - && fread(&data2, sizeof(U8), 1, filePointer[1]) == 1) - { - offset ++; - if (data1 != data2) - { - return offset; - } - } - return -1; + uint8_t data1, data2; + int32_t offset = 0; + if( NULL == filePointer[0] + || NULL == filePointer[1] ) { + return 0; + } + while ( fread(&data1, sizeof(uint8_t), 1, filePointer[0]) == 1 + && fread(&data2, sizeof(uint8_t), 1, filePointer[1]) == 1) + { + offset ++; + if (data1 != data2) + { + return offset; + } + } + return offset; } int main (int argc, char**argv) { - I32 first_Error = 0; - if (2 == argc) - { - filePointer[0] = fopen(argv[1], "rb"); - strcpy(fileName[0], argv[1]); - if ( NULL == filePointer[0]) - { - printf("Can not Open [File_1] = %s\n", argv[1]); - usage(); - return -1; - } - } - else if (3 == argc) - { - filePointer[0] = fopen(argv[1], "rb"); - strcpy(fileName[0], argv[1]); - filePointer[1] = fopen(argv[2], "rb"); - strcpy(fileName[1], argv[2]); - fseek ( filePointer[0] , 0 , SEEK_END ); - fseek ( filePointer[1] , 0 , SEEK_END ); - filesize[0] = ftell (filePointer[0]); - filesize[1] = ftell (filePointer[1]); - fseek ( filePointer[0] , 0 , SEEK_SET ); - fseek ( filePointer[1] , 0 , SEEK_SET ); - first_Error = findFirstDiff(); - } - else - { - usage(); - return -1; - } - - // rendre la lecture des données non canonique - system("stty -icanon"); - // supression de l'écho des caractères - system("stty -echo"); - - 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); - } - */ - - - - + 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"); + + if (3 < argc || argc < 2) { + printf("You set more than 3 argument at the commande line\n"); + usage(); + return -1; + } + + 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; + } + } + 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; + } + } + // try to find the first error... + first_Error = findFirstDiff(); + + // rendre la lecture des données non canonique + system("stty -icanon"); + // supression de l'écho des caractères + system("stty -echo"); + + system("clear"); + + + int ret = 0; + pthread_t HangleThreadDisplay; - int ret = 0; - pthread_t HangleThreadDisplay; - - - // Creation du thread du magasin. - //printf ("Creation du thread du magasin !\n"); - ret = pthread_create ( & HangleThreadDisplay, NULL, threadDisplay, NULL ); - if (! ret) - { - while (1) - { - U32 inputValue; - inputValue = getc (stdin); - //printf("\n get data : 0x%08x ..... : \n", (unsigned int)inputValue); - switch(inputValue) - { - case 'q': - case 'Q': - goto exit_programme; - break; - //case 0x1B: - case '\e': - inputValue = getc (stdin); - //printf("\n get data : 0x%08x ..... : \n", (unsigned int)inputValue); - if (inputValue == 0x5B) - { - inputValue = getc (stdin); - //printf("\n get data : 0x%08x ..... : \n", (unsigned int)inputValue); - if ( inputValue == 0x41 - || inputValue == 0x42 - || inputValue == 0x43 - || inputValue == 0x44) - { - if (inputValue == 0x41) - { - upDownOfsetFile(-5); - } - else if ( inputValue == 0x42) - { - upDownOfsetFile(5); - } - else if ( inputValue == 0x43) - { - upDownOfsetFile(NB_MAX_LINE); - } - else if ( inputValue == 0x44) - { - upDownOfsetFile(-NB_MAX_LINE); - } - } - } - break; - // change the type of interpretation the file - case 't': - case 'T': - nextType(); - break; - // change the size of showing the file - case 's': - case 'S': - nextTypeSize(); - break; - // find the first ERROR - case 'f': - case 'F': - setOfsetFile((first_Error/16)*16 - 256); - break; - // find the first ERROR - case 'a': - case 'A': - setOfsetFile(0); - break; - // go to the end of the file (File 1 and next File 2) - case 'z': - case 'Z': - { - static bool whichElement = false; - if (whichElement == false) - { - whichElement = true; - setOfsetFile((filesize[0]/16)*16 - 256); - } - else - { - whichElement = false; - setOfsetFile((filesize[1]/16)*16 - 256); - } - } - break; - } - } - } - else - { - fprintf (stderr, "%s", strerror (ret)); - } - + ret = pthread_create ( & HangleThreadDisplay, NULL, threadDisplay, NULL ); + if (! ret) + { + while (1) + { + uint32_t inputValue; + inputValue = getc (stdin); + //printf("\n get data : 0x%08x ..... : \n", (unsigned int)inputValue); + switch(inputValue) + { + case 'q': + case 'Q': + goto exit_programme; + break; + //case 0x1B: + case '\e': + inputValue = getc (stdin); + //printf("\n get data : 0x%08x ..... : \n", (unsigned int)inputValue); + if (inputValue == 0x5B) + { + inputValue = getc (stdin); + //printf("\n get data : 0x%08x ..... : \n", (unsigned int)inputValue); + if ( inputValue == 0x41 + || inputValue == 0x42 + || inputValue == 0x43 + || inputValue == 0x44) + { + if (inputValue == 0x41) { + upDownOfsetFile(-5); + } else if ( inputValue == 0x42) { + upDownOfsetFile(5); + } else if ( inputValue == 0x43) { + upDownOfsetFile(NB_MAX_LINE); + } else if ( inputValue == 0x44) { + upDownOfsetFile(-NB_MAX_LINE); + } + } + } + break; + // change the type of interpretation the file + case 't': + case 'T': + nextType(); + break; + // change the size of showing the file + case 's': + case 'S': + nextTypeSize(); + break; + // find the first ERROR + case 'f': + case 'F': + setOfsetFile((first_Error/16)*16 - 256); + break; + // find the first ERROR + case 'a': + case 'A': + setOfsetFile(0); + break; + // go to the end of the file (File 1 and next File 2) + case 'z': + case 'Z': + { + static bool whichElement = false; + if (whichElement == false) { + whichElement = true; + setOfsetFile((filesize[0]/16)*16 - 256); + } else { + whichElement = false; + setOfsetFile((filesize[1]/16)*16 - 256); + } + } + break; + } + } + } else { + fprintf (stderr, "%s", strerror (ret)); + } + exit_programme : - if (NULL != filePointer[0]) - { - fclose(filePointer[0]); - } - if (NULL != filePointer[1]) - { - fclose(filePointer[1]); - } - - // remettre la lecture des données canonique - system("stty icanon"); - // repositionnement de l'écho des caractères - system("stty echo"); - return 0; + if (NULL != filePointer[0]) { + fclose(filePointer[0]); + } if (NULL != filePointer[1]) { + fclose(filePointer[1]); + } + + // remettre la lecture des données canonique + system("stty icanon"); + // repositionnement de l'écho des caractères + system("stty echo"); + return 0; } @@ -279,128 +261,81 @@ exit_programme : - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void displayCouleurBash(void) { - /* Initialise the main variables - * colour: for the 256 colours (0-255) - * space: to insert space or newline - */ + /* Initialise the main variables + * colour: for the 256 colours (0-255) + * space: to insert space or newline + */ - int colour = 0; - int espace = 0; + int colour = 0; + int espace = 0; - /* Print the 16 first colours, known as colours system */ + /* Print the 16 first colours, known as colours system */ - printf("System colours:\n"); - for( ; colour < 16; colour++) - { - printf("\e[48;5;%dm ", colour); - } - printf("\e[0m\n\n"); + printf("System colours:\n"); + for( ; colour < 16; colour++) { + printf("\e[48;5;%dm ", colour); + } + printf("\e[0m\n\n"); - /* The 216 colours */ + /* The 216 colours */ - printf("Color cube: 6x6x6\n"); - for ( ; colour < 232; colour++, espace++) - { - if ((espace%6) == 0) - { - printf("\e[0m "); - } - if ((espace%36 == 0)) - { - printf("\e[0m\n"); - } - printf("\e[48;5;%dm ", colour); - } - printf("\e[0m\n\n"); + printf("Color cube: 6x6x6\n"); + for ( ; colour < 232; colour++, espace++) { + if ((espace%6) == 0) { + printf("\e[0m "); + } + if ((espace%36 == 0)) { + printf("\e[0m\n"); + } + printf("\e[48;5;%dm ", colour); + } + printf("\e[0m\n\n"); - /* And the grey colours */ + /* And the grey colours */ - printf("Greyscale ramp\n"); - for ( ; colour < 256; colour++) - { - printf("\e[48;5;%dm ", colour); - } - printf("\e[0m\n\n"); + printf("Greyscale ramp\n"); + for ( ; colour < 256; colour++) { + printf("\e[48;5;%dm ", colour); + } + printf("\e[0m\n\n"); - /* Initialise the main variables - * colour: for the 256 colours (0-255) - * space: to insert space or newline - */ + /* Initialise the main variables + * colour: for the 256 colours (0-255) + * space: to insert space or newline + */ - /* Print the 16 first colours, known as colours system */ + /* Print the 16 first colours, known as colours system */ - printf("System colours:\n"); - for( ; colour < 16; colour++) - { - printf("\e[48;5;%dm ", colour); - } - printf("\e[0m\n\n"); + printf("System colours:\n"); + for( ; colour < 16; colour++) { + printf("\e[48;5;%dm ", colour); + } + printf("\e[0m\n\n"); - /* The 216 colours */ + /* The 216 colours */ - printf("Color cube: 6x6x6\n"); - for ( ; colour < 232; colour++, espace++) - { - if ((espace%6) == 0) - { - printf("\e[0m "); - } - if ((espace%36 == 0)) - { - printf("\e[0m\n"); - } - printf("\e[48;5;%dm ", colour); - } - printf("\e[0m\n\n"); + printf("Color cube: 6x6x6\n"); + for ( ; colour < 232; colour++, espace++) { + if ((espace%6) == 0) { + printf("\e[0m "); + } + if ((espace%36 == 0)) { + printf("\e[0m\n"); + } + printf("\e[48;5;%dm ", colour); + } + printf("\e[0m\n\n"); - /* And the grey colours */ + /* And the grey colours */ - printf("Greyscale ramp\n"); - for ( ; colour < 256; colour++) - { - printf("\e[48;5;%dm ", colour); - } - printf("\e[0m\n\n"); + printf("Greyscale ramp\n"); + for ( ; colour < 256; colour++) { + printf("\e[48;5;%dm ", colour); + } + printf("\e[0m\n\n"); } diff --git a/parameter.c b/parameter.c index 2c97fd8..bcadb9c 100755 --- a/parameter.c +++ b/parameter.c @@ -26,7 +26,7 @@ #include "parameter.h" // Parameter Local Value : -static U32 fileOfset = 0; +static uint32_t fileOfset = 0; static bool parmamModifier = true; @@ -34,115 +34,106 @@ static showType_te curentType = SHOW_TYPE_HEX; 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) - { - offset = 0; - } - if ( offset > (I32)filesize[0] - && offset > (I32)filesize[1]) - { - // nothing to do - return; - } - if (offset != (I32)fileOfset) - { - fileOfset = (U32)offset; - parmamModifier = true; - } + if (0 > offset) { + offset = 0; + } + if( offset > (int32_t)filesize[0] + && offset > (int32_t)filesize[1]) { + // nothing to do + return; + } + if (offset != (int32_t)fileOfset) { + fileOfset = (uint32_t)offset; + parmamModifier = true; + } } -void upDownOfsetFile(I32 offset) +void upDownOfsetFile(int32_t offset) { - I32 tmp; - tmp = fileOfset + (16 * offset); - if (0 > tmp) - { - setOfsetFile(0); - } - else - { - setOfsetFile(tmp); - } + int32_t tmp; + tmp = fileOfset + (16 * offset); + if (0 > tmp) { + setOfsetFile(0); + } else { + setOfsetFile(tmp); + } } -U32 getOfsetFile(void) +uint32_t getOfsetFile(void) { - return fileOfset; + return fileOfset; } bool getParamModification() { - if (parmamModifier == true) - { - parmamModifier = false; - return true; - } - else - { - return false; - } + if (parmamModifier == true) { + parmamModifier = false; + return true; + } else { + return false; + } } void nextType(void) { - switch(curentType) - { - case SHOW_TYPE_HEX: - curentType = SHOW_TYPE_DECIMAL_SIGNED; - break; - case SHOW_TYPE_DECIMAL_SIGNED: - curentType = SHOW_TYPE_DECIMAL_UNSIGNED; - break; - case SHOW_TYPE_DECIMAL_UNSIGNED: - curentType = SHOW_TYPE_HEX; - break; - default : - curentType = SHOW_TYPE_HEX; - break; - } - system("clear"); - parmamModifier = true; + switch(curentType) + { + case SHOW_TYPE_HEX: + curentType = SHOW_TYPE_DECIMAL_SIGNED; + break; + case SHOW_TYPE_DECIMAL_SIGNED: + curentType = SHOW_TYPE_DECIMAL_UNSIGNED; + break; + case SHOW_TYPE_DECIMAL_UNSIGNED: + curentType = SHOW_TYPE_HEX; + break; + default : + curentType = SHOW_TYPE_HEX; + break; + } + system("clear"); + parmamModifier = true; } showType_te getType(void) { - return curentType; + return curentType; } void nextTypeSize(void) { - switch(curentTypeSize) - { - case SHOW_TYPE_SIZE_8: - curentTypeSize = SHOW_TYPE_SIZE_16; - break; - case SHOW_TYPE_SIZE_16: - curentTypeSize = SHOW_TYPE_SIZE_32; - break; - case SHOW_TYPE_SIZE_32: - curentTypeSize = SHOW_TYPE_SIZE_8; - break; - case SHOW_TYPE_SIZE_64: - curentTypeSize = SHOW_TYPE_SIZE_8; - break; - case SHOW_TYPE_SIZE_128: - curentTypeSize = SHOW_TYPE_SIZE_8; - break; - default : - curentTypeSize = SHOW_TYPE_SIZE_8; - break; - } - system("clear"); - parmamModifier = true; + switch(curentTypeSize) + { + case SHOW_TYPE_SIZE_8: + curentTypeSize = SHOW_TYPE_SIZE_16; + break; + case SHOW_TYPE_SIZE_16: + curentTypeSize = SHOW_TYPE_SIZE_32; + break; + case SHOW_TYPE_SIZE_32: + curentTypeSize = SHOW_TYPE_SIZE_64; + break; + case SHOW_TYPE_SIZE_64: + curentTypeSize = SHOW_TYPE_SIZE_8; + break; + case SHOW_TYPE_SIZE_128: + curentTypeSize = SHOW_TYPE_SIZE_8; + break; + default : + curentTypeSize = SHOW_TYPE_SIZE_8; + break; + } + system("clear"); + parmamModifier = true; } showTypeSize_te getTypeSize(void) { - return curentTypeSize; + return curentTypeSize; } diff --git a/parameter.h b/parameter.h index 2234138..0babd89 100755 --- a/parameter.h +++ b/parameter.h @@ -30,9 +30,9 @@ #include "generalDefine.h" -void setOfsetFile(I32 offset); -void upDownOfsetFile(I32 offset); -U32 getOfsetFile(void); +void setOfsetFile(int32_t offset); +void upDownOfsetFile(int32_t offset); +uint32_t getOfsetFile(void); bool getParamModification();