]> git.saurik.com Git - apple/hfs.git/blame - CopyHFSMeta/Data.h
hfs-183.1.tar.gz
[apple/hfs.git] / CopyHFSMeta / Data.h
CommitLineData
a56bdb9d
A
1#ifndef _DATA_H
2# define _DATA_H
3
4/*
5 * Data-manipulating functions and structures, used to
6 * create the skeleton copy.
7 */
8struct DeviceInfo;
9struct VolumeDescriptor;
10struct IOWrapper;
11
12/*
13 * We treat each data structure in the filesystem as
14 * a <start, length> pair.
15 */
16struct Extents {
17 off_t base;
18 off_t length;
19};
20typedef struct Extents Extents_t;
21
22#define kExtentCount 100
23
24/*
25 * The in-core representation consists of a linked
26 * list of an array of extents, up to 100 in each element.
27 */
28struct ExtentList {
29 size_t count;
30 Extents_t extents[kExtentCount];
31 struct ExtentList *next;
32};
33typedef struct ExtentList ExtentList_t;
34
35/*
36 * The in-core description of the volume: an input source,
37 * a description of the volume, the linked list of extents,
38 * the total number of bytes, and the number of linked list
39 * elements.
40 */
41struct VolumeObjects {
42 struct DeviceInfo *devp;
43 struct VolumeDescriptor *vdp;
44 size_t count;
45 off_t byteCount;
46 ExtentList_t *list;
47};
48typedef struct VolumeObjects VolumeObjects_t;
49
50extern VolumeObjects_t *InitVolumeObject(struct DeviceInfo *devp, struct VolumeDescriptor *vdp);
51extern int AddExtent(VolumeObjects_t *vop, off_t start, off_t length);
52extern void PrintVolumeObject(VolumeObjects_t*);
53extern int CopyObjectsToDest(VolumeObjects_t*, struct IOWrapper *wrapper, off_t skip);
54
55extern void WriteGatheredData(const char *, VolumeObjects_t*);
56
57#endif /* _DATA_H */