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

Function f_alloc

dep/hfsutils/libhfs/file.c:311–343  ·  view source on GitHub ↗

* NAME: file->alloc() * DESCRIPTION: reserve allocation blocks for a file */

Source from the content-addressed store, hash-verified

309 * DESCRIPTION: reserve allocation blocks for a file
310 */
311long f_alloc(hfsfile *file)
312{
313 hfsvol *vol = file->vol;
314 unsigned long clumpsz;
315 ExtDescriptor blocks;
316
317 clumpsz = file->cat.u.fil.filClpSize;
318 if (clumpsz == 0)
319 {
320 if (file == &vol->ext.f)
321 clumpsz = vol->mdb.drXTClpSiz;
322 else if (file == &vol->cat.f)
323 clumpsz = vol->mdb.drCTClpSiz;
324 else
325 clumpsz = vol->mdb.drClpSiz;
326 }
327
328 blocks.xdrNumABlks = clumpsz / vol->mdb.drAlBlkSiz;
329
330 if (v_allocblocks(vol, &blocks) == -1)
331 goto fail;
332
333 if (f_addextent(file, &blocks) == -1)
334 {
335 v_freeblocks(vol, &blocks);
336 goto fail;
337 }
338
339 return blocks.xdrNumABlks;
340
341fail:
342 return -1;
343}
344
345/*
346 * NAME: file->trunc()

Callers 2

bt_spaceFunction · 0.85
hfs_writeFunction · 0.85

Calls 3

v_allocblocksFunction · 0.85
f_addextentFunction · 0.85
v_freeblocksFunction · 0.85

Tested by

no test coverage detected