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

Function l_getmdb

dep/hfsutils/libhfs/low.c:323–392  ·  view source on GitHub ↗

* NAME: low->getmdb() * DESCRIPTION: read a master directory block */

Source from the content-addressed store, hash-verified

321 * DESCRIPTION: read a master directory block
322 */
323int l_getmdb(hfsvol *vol, MDB *mdb, int backup)
324{
325 block b;
326 const byte *ptr = b;
327 int i;
328
329 if (b_readlb(vol, backup ? vol->vlen - 2 : 2, &b) == -1)
330 goto fail;
331
332 d_fetchsw(&ptr, &mdb->drSigWord);
333 d_fetchsl(&ptr, &mdb->drCrDate);
334 d_fetchsl(&ptr, &mdb->drLsMod);
335 d_fetchsw(&ptr, &mdb->drAtrb);
336 d_fetchuw(&ptr, &mdb->drNmFls);
337 d_fetchuw(&ptr, &mdb->drVBMSt);
338 d_fetchuw(&ptr, &mdb->drAllocPtr);
339 d_fetchuw(&ptr, &mdb->drNmAlBlks);
340 d_fetchul(&ptr, &mdb->drAlBlkSiz);
341 d_fetchul(&ptr, &mdb->drClpSiz);
342 d_fetchuw(&ptr, &mdb->drAlBlSt);
343 d_fetchsl(&ptr, &mdb->drNxtCNID);
344 d_fetchuw(&ptr, &mdb->drFreeBks);
345
346 d_fetchstr(&ptr, mdb->drVN, sizeof(mdb->drVN));
347
348 ASSERT(ptr - b == 64);
349
350 d_fetchsl(&ptr, &mdb->drVolBkUp);
351 d_fetchsw(&ptr, &mdb->drVSeqNum);
352 d_fetchul(&ptr, &mdb->drWrCnt);
353 d_fetchul(&ptr, &mdb->drXTClpSiz);
354 d_fetchul(&ptr, &mdb->drCTClpSiz);
355 d_fetchuw(&ptr, &mdb->drNmRtDirs);
356 d_fetchul(&ptr, &mdb->drFilCnt);
357 d_fetchul(&ptr, &mdb->drDirCnt);
358
359 for (i = 0; i < 8; ++i)
360 d_fetchsl(&ptr, &mdb->drFndrInfo[i]);
361
362 ASSERT(ptr - b == 124);
363
364 d_fetchuw(&ptr, &mdb->drEmbedSigWord);
365 d_fetchuw(&ptr, &mdb->drEmbedExtent.xdrStABN);
366 d_fetchuw(&ptr, &mdb->drEmbedExtent.xdrNumABlks);
367
368 d_fetchul(&ptr, &mdb->drXTFlSize);
369
370 for (i = 0; i < 3; ++i)
371 {
372 d_fetchuw(&ptr, &mdb->drXTExtRec[i].xdrStABN);
373 d_fetchuw(&ptr, &mdb->drXTExtRec[i].xdrNumABlks);
374 }
375
376 ASSERT(ptr - b == 146);
377
378 d_fetchul(&ptr, &mdb->drCTFlSize);
379
380 for (i = 0; i < 3; ++i)

Callers 1

v_readmdbFunction · 0.85

Calls 6

b_readlbFunction · 0.85
d_fetchswFunction · 0.85
d_fetchslFunction · 0.85
d_fetchuwFunction · 0.85
d_fetchulFunction · 0.85
d_fetchstrFunction · 0.85

Tested by

no test coverage detected