diff options
author | Christophe Grenier <[email protected]> | 2014-07-26 22:35:09 +0200 |
---|---|---|
committer | Christophe Grenier <[email protected]> | 2014-07-26 22:35:09 +0200 |
commit | 23c4c598f497cb074209f5030cc4f5543e848c1b (patch) | |
tree | d1408f132767374ac7f222dc747652afa6a8563a | |
parent | 43c7045c0b583f1c9a3d38e7e5ebf678681b5318 (diff) |
PhotoRec: code clean in src/file_qbb.c
-rw-r--r-- | src/file_qbb.c | 75 |
1 files changed, 38 insertions, 37 deletions
diff --git a/src/file_qbb.c b/src/file_qbb.c index d387e078..b579ab24 100644 --- a/src/file_qbb.c +++ b/src/file_qbb.c @@ -32,9 +32,6 @@ static void register_header_check_qbb(file_stat_t *file_stat); -static int header_check_qbb(const unsigned char *buffer, const unsigned int buffer_size, const unsigned int safe_header_only, const file_recovery_t *file_recovery, file_recovery_t *file_recovery_new); -static data_check_t data_check_qbb(const unsigned char *buffer, const unsigned int buffer_size, file_recovery_t *file_recovery); -static void file_check_qbb(file_recovery_t *file_recovery); const file_hint_t file_hint_qbb= { .extension="qbb", @@ -43,35 +40,39 @@ const file_hint_t file_hint_qbb= { .max_filesize=PHOTOREC_MAX_FILE_SIZE, .recover=1, .enable_by_default=1, - .register_header_check=®ister_header_check_qbb + .register_header_check=®ister_header_check_qbb }; -static const unsigned char qbb_header[10]= {0x45, 0x86, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00, 0x01, 0x00}; -static const unsigned char qbw_header[4]= {0x56, 0x00, 0x00, 0x00}; -static const unsigned char qbw2_header[4]= {0x5e, 0xba, 0x7a, 0xda}; +static data_check_t data_check_qbb(const unsigned char *buffer, const unsigned int buffer_size, file_recovery_t *file_recovery) +{ + if(file_recovery->file_size + buffer_size / 2 > file_recovery->calculated_file_size+512) + { + return DC_STOP; + } + return DC_CONTINUE; +} -static void register_header_check_qbb(file_stat_t *file_stat) +static void file_check_qbb(file_recovery_t *file_recovery) { - register_header_check(0, qbb_header,sizeof(qbb_header), &header_check_qbb, file_stat); - register_header_check(4, qbw_header,sizeof(qbw_header), &header_check_qbb, file_stat); - register_header_check(0x14, qbw2_header,sizeof(qbw2_header), &header_check_qbb, file_stat); + if(file_recovery->file_size < file_recovery->calculated_file_size) + file_recovery->file_size=0; } static int header_check_qbb(const unsigned char *buffer, const unsigned int buffer_size, const unsigned int safe_header_only, const file_recovery_t *file_recovery, file_recovery_t *file_recovery_new) { - if(memcmp(buffer, qbb_header, sizeof(qbb_header))==0) - { - reset_file_recovery(file_recovery_new); - /* The filesize is bigger */ - file_recovery_new->calculated_file_size=(uint64_t)buffer[0x37] + (((uint64_t)buffer[0x37+1])<<8)+ - (((uint64_t)buffer[0x37+2])<<16) + (((uint64_t)buffer[0x37+3])<<24); - file_recovery_new->extension=file_hint_qbb.extension; - file_recovery_new->data_check=&data_check_qbb; - file_recovery_new->file_check=&file_check_qbb; - return 1; - } - if(buffer[4]==0x56 && buffer[5]==0x00 && buffer[6]==0x00 && buffer[7]==0x00 && - buffer[0x60]=='M' && buffer[0x61]=='A' && buffer[0x62]=='U' && buffer[0x63]=='I') + reset_file_recovery(file_recovery_new); + /* The filesize is bigger */ + file_recovery_new->calculated_file_size=(uint64_t)buffer[0x37] + (((uint64_t)buffer[0x37+1])<<8)+ + (((uint64_t)buffer[0x37+2])<<16) + (((uint64_t)buffer[0x37+3])<<24); + file_recovery_new->extension=file_hint_qbb.extension; + file_recovery_new->data_check=&data_check_qbb; + file_recovery_new->file_check=&file_check_qbb; + return 1; +} + +static int header_check_qbw(const unsigned char *buffer, const unsigned int buffer_size, const unsigned int safe_header_only, const file_recovery_t *file_recovery, file_recovery_t *file_recovery_new) +{ + if(buffer[0x60]=='M' && buffer[0x61]=='A' && buffer[0x62]=='U' && buffer[0x63]=='I') { reset_file_recovery(file_recovery_new); file_recovery_new->extension="qbw"; @@ -81,8 +82,12 @@ static int header_check_qbb(const unsigned char *buffer, const unsigned int buff file_recovery_new->file_check=&file_check_size; return 1; } - if(memcmp(&buffer[0x14], qbw2_header, sizeof(qbw2_header))==0 && - memcmp(&buffer[0x87A], "Sybase", 6)==0) + return 0; +} + +static int header_check_qbw2(const unsigned char *buffer, const unsigned int buffer_size, const unsigned int safe_header_only, const file_recovery_t *file_recovery, file_recovery_t *file_recovery_new) +{ + if(memcmp(&buffer[0x87A], "Sybase", 6)==0) { reset_file_recovery(file_recovery_new); file_recovery_new->extension="qbw"; @@ -91,17 +96,13 @@ static int header_check_qbb(const unsigned char *buffer, const unsigned int buff return 0; } -static data_check_t data_check_qbb(const unsigned char *buffer, const unsigned int buffer_size, file_recovery_t *file_recovery) -{ - if(file_recovery->file_size + buffer_size / 2 > file_recovery->calculated_file_size+512) - { - return DC_STOP; - } - return DC_CONTINUE; -} -static void file_check_qbb(file_recovery_t *file_recovery) +static void register_header_check_qbb(file_stat_t *file_stat) { - if(file_recovery->file_size < file_recovery->calculated_file_size) - file_recovery->file_size=0; + static const unsigned char qbb_header[10]= {0x45, 0x86, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00, 0x01, 0x00}; + static const unsigned char qbw2_header[4]= {0x5e, 0xba, 0x7a, 0xda}; + static const unsigned char qbw_header[4]= {0x56, 0x00, 0x00, 0x00}; + register_header_check(0, qbb_header,sizeof(qbb_header), &header_check_qbb, file_stat); + register_header_check(4, qbw_header,sizeof(qbw_header), &header_check_qbw, file_stat); + register_header_check(0x14, qbw2_header,sizeof(qbw2_header), &header_check_qbw2, file_stat); } |