static int header_check_orf_IIRO(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) { reset_file_recovery(file_recovery_new); file_recovery_new->extension=file_hint_orf.extension; file_recovery_new->time=get_date_from_tiff_header((const TIFFHeader *)buffer, buffer_size); file_recovery_new->file_check=&file_check_tiff; return 1; }
static int header_check_wdp(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) { const TIFFHeader *header=(const TIFFHeader *)buffer; if(le32(header->tiff_diroff) < sizeof(TIFFHeader)) return 0; reset_file_recovery(file_recovery_new); file_recovery_new->extension="wdp"; file_recovery_new->time=get_date_from_tiff_header((const TIFFHeader *)buffer, buffer_size); file_recovery_new->file_check=&file_check_tiff; return 1; }
int header_check_tiff_le_new(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) { const char raf_fp[15]={0x49, 0x49, 0x2a, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0xf0, 0x0d, 0x00, 0x01}; const char *potential_error=NULL; const TIFFHeader *header=(const TIFFHeader *)buffer; if((uint32_t)le32(header->tiff_diroff) < sizeof(TIFFHeader)) return 0; /* Avoid a false positiv with some RAF files */ if(file_recovery->file_stat!=NULL && file_recovery->file_stat->file_hint==&file_hint_raf && memcmp(buffer, raf_fp, 15)==0) { header_ignored(file_recovery_new); return 0; } if(file_recovery->file_stat!=NULL && file_recovery->file_stat->file_hint==&file_hint_jpg) { if(header_ignored_adv(file_recovery, file_recovery_new)==0) return 0; } reset_file_recovery(file_recovery_new); file_recovery_new->extension="tif"; /* Canon RAW */ if(buffer[8]=='C' && buffer[9]=='R' && buffer[10]==2) file_recovery_new->extension="cr2"; else if(find_tag_from_tiff_header_le(header, buffer_size, TIFFTAG_DNGVERSION, &potential_error)!=NULL) { /* Adobe Digital Negative, ie. NIKON D50 */ file_recovery_new->extension="dng"; } else { const char *tag_make; tag_make=find_tag_from_tiff_header_le(header, buffer_size, TIFFTAG_MAKE, &potential_error); if(tag_make!=NULL && tag_make >= (const char *)buffer && tag_make < (const char *)buffer + buffer_size - 5) { /* TODO * sr2 if Sony::FileFormat begins by 1 * arw otherwise */ if(memcmp(tag_make, "SONY", 5)==0) file_recovery_new->extension="sr2"; else if(strncmp(tag_make, "SONY ",5)==0) file_recovery_new->extension="arw"; else if(memcmp(tag_make, "NIKON CORPORATION", 18)==0) file_recovery_new->extension="nef"; } } file_recovery_new->time=get_date_from_tiff_header(header, buffer_size); file_recovery_new->file_check=&file_check_tiff; return 1; }
static int header_check_tiff_be_new(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) { const char *potential_error=NULL; const TIFFHeader *header=(const TIFFHeader *)buffer; if((uint32_t)be32(header->tiff_diroff) < sizeof(TIFFHeader)) return 0; if(file_recovery->file_stat!=NULL && file_recovery->file_stat->file_hint==&file_hint_jpg) { header_ignored(file_recovery_new); return 0; } reset_file_recovery(file_recovery_new); file_recovery_new->extension=file_hint_tiff.extension; if(find_tag_from_tiff_header_be(header, buffer_size, TIFFTAG_DNGVERSION, &potential_error)!=NULL) { /* Adobe Digital Negative, ie. PENTAX K-30 */ file_recovery_new->extension="dng"; } else { const char *tag_make; tag_make=find_tag_from_tiff_header_be(header, buffer_size, TIFFTAG_MAKE, &potential_error); if(tag_make!=NULL && tag_make >= (const char *)buffer && tag_make < (const char *)buffer + buffer_size - 20) { if(strcmp(tag_make, "PENTAX Corporation ")==0 || strcmp(tag_make, "PENTAX ")==0) file_recovery_new->extension="pef"; else if(strcmp(tag_make, "NIKON CORPORATION")==0) file_recovery_new->extension="nef"; else if(strcmp(tag_make, "Kodak")==0) file_recovery_new->extension="dcr"; } } file_recovery_new->time=get_date_from_tiff_header(header, buffer_size); file_recovery_new->file_check=&file_check_tiff; return 1; }