MCPcopy Create free account
hub / github.com/davidgiven/fluxengine / adfReadNextFileBlock

Function adfReadNextFileBlock

dep/adflib/src/adf_file.c:424–466  ·  view source on GitHub ↗

* adfReadNextFileBlock * */

Source from the content-addressed store, hash-verified

422 *
423 */
424RETCODE 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/*

Callers 1

adfReadFileFunction · 0.85

Calls 2

adfReadFileExtBlockFunction · 0.85
adfReadDataBlockFunction · 0.85

Tested by

no test coverage detected