* adfReadNextFileBlock * */
| 422 | * |
| 423 | */ |
| 424 | RETCODE adfReadNextFileBlock(struct File* file) |
| 425 | { |
| 426 | SECTNUM nSect; |
| 427 | struct bOFSDataBlock *data; |
| 428 | RETCODE rc = RC_OK; |
| 429 | |
| 430 | data =(struct bOFSDataBlock *) file->currentData; |
| 431 | |
| 432 | if (file->nDataBlock==0) { |
| 433 | nSect = file->fileHdr->firstData; |
| 434 | } |
| 435 | else if (isOFS(file->volume->dosType)) { |
| 436 | nSect = data->nextData; |
| 437 | } |
| 438 | else { |
| 439 | if (file->nDataBlock<MAX_DATABLK) |
| 440 | nSect = file->fileHdr->dataBlocks[MAX_DATABLK-1-file->nDataBlock]; |
| 441 | else { |
| 442 | if (file->nDataBlock==MAX_DATABLK) { |
| 443 | file->currentExt=(struct bFileExtBlock*)malloc(sizeof(struct bFileExtBlock)); |
| 444 | if (!file->currentExt) (*adfEnv.eFct)("adfReadNextFileBlock : malloc"); |
| 445 | adfReadFileExtBlock(file->volume, file->fileHdr->extension, |
| 446 | file->currentExt); |
| 447 | file->posInExtBlk = 0; |
| 448 | } |
| 449 | else if (file->posInExtBlk==MAX_DATABLK) { |
| 450 | adfReadFileExtBlock(file->volume, file->currentExt->extension, |
| 451 | file->currentExt); |
| 452 | file->posInExtBlk = 0; |
| 453 | } |
| 454 | nSect = file->currentExt->dataBlocks[MAX_DATABLK-1-file->posInExtBlk]; |
| 455 | file->posInExtBlk++; |
| 456 | } |
| 457 | } |
| 458 | adfReadDataBlock(file->volume,nSect,file->currentData); |
| 459 | |
| 460 | if (isOFS(file->volume->dosType) && data->seqNum!=file->nDataBlock+1) |
| 461 | (*adfEnv.wFct)("adfReadNextFileBlock : seqnum incorrect"); |
| 462 | |
| 463 | file->nDataBlock++; |
| 464 | |
| 465 | return rc; |
| 466 | } |
| 467 | |
| 468 | |
| 469 | /* |
no test coverage detected