diff options
author | Christophe Grenier <[email protected]> | 2007-12-06 00:36:39 +0100 |
---|---|---|
committer | Christophe Grenier <[email protected]> | 2007-12-06 00:36:39 +0100 |
commit | d3ebfd9edeb5be38f469d03e66dfa753de1a4864 (patch) | |
tree | f5d0d99f1f8f6277dda5b51ef4b9e12d91669edb /src/file_pdf.c | |
parent | 54de8ce209520ec5d486d754d2e54471f0e4b0e8 (diff) |
Move string/mem search in a separate file
Diffstat (limited to 'src/file_pdf.c')
-rw-r--r-- | src/file_pdf.c | 26 |
1 files changed, 3 insertions, 23 deletions
diff --git a/src/file_pdf.c b/src/file_pdf.c index 1ce3042f..3487e87d 100644 --- a/src/file_pdf.c +++ b/src/file_pdf.c @@ -29,9 +29,7 @@ #include <stdio.h> #include "types.h" #include "filegen.h" - -static inline const unsigned char *find_in_mem(const unsigned char *haystack, const unsigned char * haystack_end, - const unsigned char *needle, const unsigned int needle_length); +#include "fnd_mem.h" static void register_header_check_pdf(file_stat_t *file_stat); static int header_check_pdf(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); @@ -55,24 +53,6 @@ static void register_header_check_pdf(file_stat_t *file_stat) register_header_check(0, pdf_header,sizeof(pdf_header), &header_check_pdf, file_stat); } -static inline const unsigned char *find_in_mem(const unsigned char *haystack, const unsigned char * haystack_end, - const unsigned char *needle, const unsigned int needle_length) -{ - while(haystack!=NULL) - { - haystack=memchr(haystack,needle[0],haystack_end-haystack); - if(haystack!=NULL && haystack<=(haystack_end-needle_length)) - { - if(memcmp(haystack,needle,needle_length)==0) - return haystack; - haystack++; - } - else - haystack=NULL; - }; - return NULL; -} - static int header_check_pdf(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,pdf_header,sizeof(pdf_header))==0) @@ -81,11 +61,11 @@ static int header_check_pdf(const unsigned char *buffer, const unsigned int buff const unsigned char sig_linearized[10]={'L','i','n','e','a','r','i','z','e','d'}; const unsigned char *linearized; reset_file_recovery(file_recovery_new); - if(find_in_mem(buffer, buffer+512, sig_illustrator,sizeof(sig_illustrator)) != NULL) + if(find_in_mem(buffer, 512, sig_illustrator,sizeof(sig_illustrator)) != NULL) file_recovery_new->extension="ai"; else file_recovery_new->extension=file_hint_pdf.extension; - if((linearized=find_in_mem(buffer, buffer+512, sig_linearized,sizeof(sig_linearized))) != NULL) + if((linearized=find_in_mem(buffer, 512, sig_linearized,sizeof(sig_linearized))) != NULL) { linearized+=sizeof(sig_linearized); while(*linearized!='>' && linearized<=buffer+512) |