X-Git-Url: http://www.wagner.pp.ru/gitweb/?a=blobdiff_plain;f=src%2Fanalyze.c;h=6ed7ea60844b8960dc57d3b99d837c3f5c343d9a;hb=236251f0528f1c2e14a9940d75fd97aba49c573c;hp=bebcbef63027a793bb055fe9db1c9e622095ca70;hpb=a79f2377217c571396074fccf360e01032cd77bf;p=oss%2Fcatdoc.git diff --git a/src/analyze.c b/src/analyze.c index bebcbef..6ed7ea6 100644 --- a/src/analyze.c +++ b/src/analyze.c @@ -12,7 +12,7 @@ #include #include #include "catdoc.h" -char ole_sign[]={0xD0,0xCF,0x11,0xE0,0xA1,0xB1,0x1A,0xE1,0}; +extern char ole_sign[], zip_sign[]; /* from ole.c */ char rtf_sign[]="{\\rtf"; char old_word_sign[]={0xdb,0xa5,0}; char write_sign[]={0x31,0xBE,0}; @@ -45,6 +45,10 @@ int analyze_format(FILE *f) { return process_file(f,LONG_MAX); } else if (strncmp((char *)&buffer,rtf_sign,4)==0) { return parse_rtf(f); + } else if (strncmp((char *)&buffer, zip_sign,4) == 0) { + fprintf(stderr,"This file looks like ZIP archive or Office 2007 " + "or later file.\nNot supported by catdoc\n"); + exit(1); } else if (strncmp((char *)&buffer,old_word_sign,2)==0) { fread(buffer+4,1,124,f); return parse_word_header(buffer,f,128,0); @@ -66,7 +70,7 @@ int analyze_format(FILE *f) { set_std_func(); ole_finish(); } else { - fprintf(stderr,"Broken OLE file. Try using -b switch"); + fprintf(stderr,"Broken OLE file. Try using -b switch\n"); exit(1); } } else {