From 265e2769e0df8d415129d0af3f1df9947d44af37 Mon Sep 17 00:00:00 2001 From: Edouard Dupin Date: Wed, 6 Jun 2012 12:57:02 +0200 Subject: [PATCH] Automatic calibration of the delta between files --- Makefile | 4 ++-- main.c | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 64 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 0594825..b186278 100755 --- a/Makefile +++ b/Makefile @@ -91,8 +91,8 @@ package: all # copy licence and information : @cp README package/$(PROG_NAME)/usr/share/doc/README @cp licence.txt package/$(PROG_NAME)/usr/share/doc/copyright - @echo "First generation in progress" >> package/$(PROG_NAME)/usr/share/doc/changelog - @#cp -vf $(PROG_NAME) package/$(PROG_NAME)/usr/bin/ + @echo "First generation in progress" > package/$(PROG_NAME)/usr/share/doc/changelog + @cp -vf $(PROG_NAME) package/$(PROG_NAME)/usr/bin/ @#cp -vf data/*.xml package/$(PROG_NAME)/usr/share/edn/ @cd package; dpkg-deb --build $(PROG_NAME) diff --git a/main.c b/main.c index 488dd5f..b4b4ef7 100755 --- a/main.c +++ b/main.c @@ -42,6 +42,7 @@ void usage(void) printf("\t\t[s] Change the view of the propram of the size of interpretation (8/16/32/64 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[c] Calibrate the delta between the 2 file (fist element !=0)\n"); printf("\t\t[UP] Go up (5 lines)\n"); printf("\t\t[DOWN] Go down (5 lines)\n"); printf("\t\t[LEFT] Go up (one screen)\n"); @@ -68,11 +69,21 @@ int32_t findFirstDiff(void) || NULL == filePointer[1] ) { return 0; } + int32_t paddingFile = getPaddingOffsetFile(); + int32_t pad1 = 0; + int32_t pad2 = 0; + if (paddingFile>0) { + pad1 = paddingFile; + pad2 = 0; + } else { + pad1 = 0; + pad2 = -1*paddingFile; + } if(NULL != filePointer[0]) { - fseek ( filePointer[0] , 0 , SEEK_SET ); + fseek ( filePointer[0] , pad1 , SEEK_SET ); } if(NULL != filePointer[1]) { - fseek ( filePointer[1] , 0 , SEEK_SET ); + fseek ( filePointer[1] , pad2 , SEEK_SET ); } while ( fread(&data1, sizeof(uint8_t), 1, filePointer[0]) == 1 && fread(&data2, sizeof(uint8_t), 1, filePointer[1]) == 1) @@ -85,6 +96,51 @@ int32_t findFirstDiff(void) return offset; } +void AutoSetPadding(void) +{ + displayPaddingOffset(0); + if( NULL == filePointer[0] + || NULL == filePointer[1] ) { + return; + } + + if(NULL != filePointer[0]) { + fseek ( filePointer[0] , 0 , SEEK_SET ); + } + int32_t offset1 = 0; + char data; + while(fread(&data, sizeof(uint8_t), 1, filePointer[0]) == 1) + { + if (data != 0) { + break; + } + offset1 ++; + } + if(NULL != filePointer[1]) { + fseek ( filePointer[1] , 0 , SEEK_SET ); + } + int32_t offset2 = 0; + while(fread(&data, sizeof(uint8_t), 1, filePointer[1]) == 1) + { + if (data != 0) { + break; + } + offset2 ++; + } + if (offset1 == offset2) { + return; + } + if (offset1 == 0) { + return; + } + if (0 == offset2) { + return; + } + displayPaddingOffset(offset1 - offset2); +} + + + void UpdateFilesSize(void) { // get size file 1 @@ -317,6 +373,10 @@ int main (int argc, char**argv) case 'M': displayPaddingOffsetClear(); break; + case 'c': + case 'C': + AutoSetPadding(); + break; } } } else {