summaryrefslogtreecommitdiffstats
path: root/src/file_bld.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/file_bld.c')
-rw-r--r--src/file_bld.c87
1 files changed, 41 insertions, 46 deletions
diff --git a/src/file_bld.c b/src/file_bld.c
index 34015a2..2a93bc2 100644
--- a/src/file_bld.c
+++ b/src/file_bld.c
@@ -32,11 +32,6 @@
#include "log.h"
static void register_header_check_blend(file_stat_t *file_stat);
-static int header_check_blend(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_blend4le(const unsigned char *buffer, const unsigned int buffer_size, file_recovery_t *file_recovery);
-static data_check_t data_check_blend8le(const unsigned char *buffer, const unsigned int buffer_size, file_recovery_t *file_recovery);
-static data_check_t data_check_blend4be(const unsigned char *buffer, const unsigned int buffer_size, file_recovery_t *file_recovery);
-static data_check_t data_check_blend8be(const unsigned char *buffer, const unsigned int buffer_size, file_recovery_t *file_recovery);
const file_hint_t file_hint_blend= {
.extension="blend",
@@ -48,41 +43,8 @@ const file_hint_t file_hint_blend= {
.register_header_check=&register_header_check_blend
};
-static const unsigned char blend_header[7] = { 'B', 'L', 'E', 'N', 'D', 'E', 'R'};
static const unsigned char blend_header_footer[4] = { 'E', 'N', 'D', 'B'};
-static void register_header_check_blend(file_stat_t *file_stat)
-{
- register_header_check(0, blend_header,sizeof(blend_header), &header_check_blend, file_stat);
-}
-
-static int header_check_blend(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[7]!='_' && buffer[7]!='-')
- return 0;
- reset_file_recovery(file_recovery_new);
- file_recovery_new->extension=file_hint_blend.extension;
- if(file_recovery_new->blocksize < 0x14)
- return 1;
- file_recovery_new->calculated_file_size=12;
- if(buffer[8]=='v')
- { /* Little endian */
- if(buffer[7]=='_')
- file_recovery_new->data_check=&data_check_blend4le;
- else
- file_recovery_new->data_check=&data_check_blend8le;
- }
- else
- { /* Big endian */
- if(buffer[7]=='_')
- file_recovery_new->data_check=&data_check_blend4be;
- else
- file_recovery_new->data_check=&data_check_blend8be;
- }
- file_recovery_new->file_check=&file_check_size;
- return 1;
-}
-
static data_check_t data_check_blend4le(const unsigned char *buffer, const unsigned int buffer_size, file_recovery_t *file_recovery)
{
while(file_recovery->calculated_file_size + buffer_size/2 >= file_recovery->file_size &&
@@ -92,8 +54,8 @@ static data_check_t data_check_blend4le(const unsigned char *buffer, const unsig
const unsigned int len=buffer[i+4]+ ((buffer[i+5])<<8)+ ((buffer[i+6])<<16)+ ((buffer[i+7])<<24);
#ifdef DEBUG_BLEND
log_debug("file_mov.c: atom %c%c%c%c (0x%02x%02x%02x%02x) size %u, calculated_file_size %llu\n",
- buffer[i+0],buffer[i+1],buffer[i+2],buffer[i+3],
- buffer[i+0],buffer[i+1],buffer[i+2],buffer[i+3],
+ buffer[i+0],buffer[i+1],buffer[i+2],buffer[i+3],
+ buffer[i+0],buffer[i+1],buffer[i+2],buffer[i+3],
len,
(long long unsigned)file_recovery->calculated_file_size);
#endif
@@ -115,8 +77,8 @@ static data_check_t data_check_blend8le(const unsigned char *buffer, const unsig
const unsigned int len=buffer[i+4]+ ((buffer[i+5])<<8)+ ((buffer[i+6])<<16)+ ((buffer[i+7])<<24);
#ifdef DEBUG_BLEND
log_debug("file_mov.c: atom %c%c%c%c (0x%02x%02x%02x%02x) size %u, calculated_file_size %llu\n",
- buffer[i+0],buffer[i+1],buffer[i+2],buffer[i+3],
- buffer[i+0],buffer[i+1],buffer[i+2],buffer[i+3],
+ buffer[i+0],buffer[i+1],buffer[i+2],buffer[i+3],
+ buffer[i+0],buffer[i+1],buffer[i+2],buffer[i+3],
len,
(long long unsigned)file_recovery->calculated_file_size);
#endif
@@ -138,8 +100,8 @@ static data_check_t data_check_blend4be(const unsigned char *buffer, const unsig
const unsigned int len=(buffer[i+4]<<24)+ ((buffer[i+5])<<16)+ ((buffer[i+6])<<8)+ buffer[i+7];
#ifdef DEBUG_BLEND
log_debug("file_mov.c: atom %c%c%c%c (0x%02x%02x%02x%02x) size %u, calculated_file_size %llu\n",
- buffer[i+0],buffer[i+1],buffer[i+2],buffer[i+3],
- buffer[i+0],buffer[i+1],buffer[i+2],buffer[i+3],
+ buffer[i+0],buffer[i+1],buffer[i+2],buffer[i+3],
+ buffer[i+0],buffer[i+1],buffer[i+2],buffer[i+3],
len,
(long long unsigned)file_recovery->calculated_file_size);
#endif
@@ -161,8 +123,8 @@ static data_check_t data_check_blend8be(const unsigned char *buffer, const unsig
const unsigned int len=(buffer[i+4]<<24)+ ((buffer[i+5])<<16)+ ((buffer[i+6])<<8)+ buffer[i+7];
#ifdef DEBUG_BLEND
log_debug("file_mov.c: atom %c%c%c%c (0x%02x%02x%02x%02x) size %u, calculated_file_size %llu\n",
- buffer[i+0],buffer[i+1],buffer[i+2],buffer[i+3],
- buffer[i+0],buffer[i+1],buffer[i+2],buffer[i+3],
+ buffer[i+0],buffer[i+1],buffer[i+2],buffer[i+3],
+ buffer[i+0],buffer[i+1],buffer[i+2],buffer[i+3],
len,
(long long unsigned)file_recovery->calculated_file_size);
#endif
@@ -175,3 +137,36 @@ static data_check_t data_check_blend8be(const unsigned char *buffer, const unsig
}
return DC_CONTINUE;
}
+
+static int header_check_blend(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[7]!='_' && buffer[7]!='-')
+ return 0;
+ reset_file_recovery(file_recovery_new);
+ file_recovery_new->extension=file_hint_blend.extension;
+ if(file_recovery_new->blocksize < 0x14)
+ return 1;
+ file_recovery_new->calculated_file_size=12;
+ if(buffer[8]=='v')
+ { /* Little endian */
+ if(buffer[7]=='_')
+ file_recovery_new->data_check=&data_check_blend4le;
+ else
+ file_recovery_new->data_check=&data_check_blend8le;
+ }
+ else
+ { /* Big endian */
+ if(buffer[7]=='_')
+ file_recovery_new->data_check=&data_check_blend4be;
+ else
+ file_recovery_new->data_check=&data_check_blend8be;
+ }
+ file_recovery_new->file_check=&file_check_size;
+ return 1;
+}
+
+static void register_header_check_blend(file_stat_t *file_stat)
+{
+ static const unsigned char blend_header[7] = { 'B', 'L', 'E', 'N', 'D', 'E', 'R'};
+ register_header_check(0, blend_header,sizeof(blend_header), &header_check_blend, file_stat);
+}