diff --git a/pub/src/file_io.cpp b/pub/src/file_io.cpp index 3d32c551f20c4b193b390ae6956604b5aedfd90a..7a79f36186b1d4bbb338cd50b2c291859847d91f 100644 --- a/pub/src/file_io.cpp +++ b/pub/src/file_io.cpp @@ -349,25 +349,17 @@ void NFileIO::Load_96( FILE *F_in, string flong ) if( lin.substr(0,3)!=string("dir") ) throw string( "tag 'dir' not found in block 2" ); - if( mystd::freadln(F_in, &lin)<=0 || lin.length()<6 || - lin.substr(0,6)!=string("&eob 2") ) - throw string( "no valid eob 2" ); + while ( mystd::freadln(F_in, &lin)>0 && + !( lin.length()>=6 && + lin.substr(0,6)==string("&eob 2") ) ) + ; + + if ( mystd::freadln(F_in, &lin)<=0 ) + throw string( "missed &eob 3" ); - if( mystd::freadln(F_in, &lin)<=0 || lin.length()<9 || - lin.substr(0,9)!=string("(a24,i16)") ) + if( lin.length()<9 || lin.substr(0,9)!=string("(a24,i16)") ) throw string( "no valid intro to block 3" ); - if( mystd::freadln(F_in, &lin)<=0 || lin.length()<24 || - lin.substr(0,3)!=string("?cu") ) - throw string( "entry ?cu not found in block 3" ); - // if( lin.substr(24,1)!=string("0") ) - // throw BadData( "invalid ?cu value" ); - // do not check cu=0, because a24 is not respected - - if( mystd::freadln(F_in, &lin)<=0 || lin.length()<24 || - lin.substr(0,6)!=string("@fixed") ) - throw string( "entry '@fixed' not found in block 3" ); - while ( mystd::freadln(F_in, &lin)>0 && !( lin.length()>=6 && lin.substr(0,6)==string("&eob 3") ) )