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

Function adfCheckFile

dep/adflib/src/adf_salv.c:306–354  ·  view source on GitHub ↗

* adfCheckFile * */

Source from the content-addressed store, hash-verified

304 *
305 */
306RETCODE adfCheckFile(struct Volume* vol, SECTNUM nSect,
307 struct bFileHeaderBlock* file, int level)
308{
309 struct bFileExtBlock extBlock;
310 struct bOFSDataBlock dataBlock;
311 struct FileBlocks fileBlocks;
312 int n;
313
314 adfGetFileBlocks(vol,file,&fileBlocks);
315/*printf("data %ld ext %ld\n",fileBlocks.nbData,fileBlocks.nbExtens);*/
316 if (isOFS(vol->dosType)) {
317 /* checks OFS datablocks */
318 for(n=0; n<fileBlocks.nbData; n++) {
319/*printf("%ld\n",fileBlocks.data[n]);*/
320 adfReadDataBlock(vol,fileBlocks.data[n],&dataBlock);
321 if (dataBlock.headerKey!=fileBlocks.header)
322 (*adfEnv.wFct)("adfCheckFile : headerKey incorrect");
323 if (dataBlock.seqNum!=n+1)
324 (*adfEnv.wFct)("adfCheckFile : seqNum incorrect");
325 if (n<fileBlocks.nbData-1) {
326 if (dataBlock.nextData!=fileBlocks.data[n+1])
327 (*adfEnv.wFct)("adfCheckFile : nextData incorrect");
328 if (dataBlock.dataSize!=vol->datablockSize)
329 (*adfEnv.wFct)("adfCheckFile : dataSize incorrect");
330 }
331 else { /* last datablock */
332 if (dataBlock.nextData!=0)
333 (*adfEnv.wFct)("adfCheckFile : nextData incorrect");
334 }
335 }
336 }
337 for(n=0; n<fileBlocks.nbExtens; n++) {
338 adfReadFileExtBlock(vol,fileBlocks.extens[n],&extBlock);
339 if (extBlock.parent!=file->headerKey)
340 (*adfEnv.wFct)("adfCheckFile : extBlock parent incorrect");
341 if (n<fileBlocks.nbExtens-1) {
342 if (extBlock.extension!=fileBlocks.extens[n+1])
343 (*adfEnv.wFct)("adfCheckFile : nextData incorrect");
344 }
345 else
346 if (extBlock.extension!=0)
347 (*adfEnv.wFct)("adfCheckFile : nextData incorrect");
348 }
349
350 free(fileBlocks.data);
351 free(fileBlocks.extens);
352
353 return RC_OK;
354}
355
356
357/*

Callers 1

adfCheckEntryFunction · 0.85

Calls 3

adfGetFileBlocksFunction · 0.85
adfReadDataBlockFunction · 0.85
adfReadFileExtBlockFunction · 0.85

Tested by

no test coverage detected