libparted 3.6
Loading...
Searching...
No Matches
hfs.h
Go to the documentation of this file.
1/*
2 libparted - a library for manipulating disk partitions
3 Copyright (C) 2003-2005, 2007, 2009-2014, 2019-2023 Free Software
4 Foundation, Inc.
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 3 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program. If not, see <http://www.gnu.org/licenses/>.
18*/
19
20#ifndef _HFS_H
21#define _HFS_H
22
23/* WARNING : bn is used 2 times in theses macro */
24/* so _never_ use side effect operators when using them */
25#define TST_BLOC_OCCUPATION(tab,bn) \
26 (((tab)[(bn)/8]) & (1<<(7-((bn)&7))))
27#define SET_BLOC_OCCUPATION(tab,bn) \
28 (((tab)[(bn)/8]) |= (1<<(7-((bn)&7))))
29#define CLR_BLOC_OCCUPATION(tab,bn) \
30 (((tab)[(bn)/8]) &= ~(1<<(7-((bn)&7))))
31
32/* Maximum number of blocks for the copy buffers */
33#define BLOCK_MAX_BUFF 256
34/* Maximum size of the copy buffers, in bytes */
35#define BYTES_MAX_BUFF 8388608
36
37/* Apple Creator Codes follow */
38#define HFSP_IMPL_Shnk 0x53686e6b /* in use */
39#define HFSP_IMPL_Xpnd 0x58706e64 /* reserved */
40#define HFSP_IMPL_Resz 0x5265737a /* reserved */
41#define HFSP_IMPL_PHpx 0x50482b78 /* reserved */
42#define HFSP_IMPL_traP 0x74726150 /* reserved */
43#define HFSP_IMPL_GnuP 0x476e7550 /* reserved */
44
45#define HFS_SIGNATURE 0x4244 /* 'BD' */
46#define HFSP_SIGNATURE 0x482B /* 'H+' */
47#define HFSX_SIGNATURE 0x4858 /* 'HX' */
48
49#define HFSP_VERSION 4
50#define HFSX_VERSION 5
51
52#define HFS_HARD_LOCK 7
53#define HFS_UNMOUNTED 8
54#define HFS_BAD_SPARED 9
55#define HFS_SOFT_LOCK 15
56#define HFSP_NO_CACHE 10
57#define HFSP_INCONSISTENT 11
58#define HFSP_REUSE_CNID 12
59#define HFSP_JOURNALED 13
60
61#define HFS_IDX_NODE 0x00
62#define HFS_HDR_NODE 0x01
63#define HFS_MAP_NODE 0x02
64#define HFS_LEAF_NODE 0xFF
65
66#define HFS_FIRST_REC 0x0E
67#define HFS_NSD_HD_REC 0x78
68#define HFS_MAP_REC 0xF8
69
70#define HFS_DATA_FORK 0x00
71#define HFS_RES_FORK 0xFF
72
73#define HFS_CAT_DIR 0x01
74#define HFS_CAT_FILE 0x02
75#define HFS_CAT_DIR_TH 0x03
76#define HFS_CAT_FILE_TH 0x04
77
78#define HFSP_ATTR_INLINE 0x10
79#define HFSP_ATTR_FORK 0x20
80#define HFSP_ATTR_EXTENTS 0x30
81
82#define HFS_ROOT_PAR_ID 0x01
83#define HFS_ROOT_DIR_ID 0x02
84#define HFS_XTENT_ID 0x03
85#define HFS_CATALOG_ID 0x04
86#define HFS_BAD_BLOCK_ID 0x05
87#define HFSP_ALLOC_ID 0x06
88#define HFSP_STARTUP_ID 0x07
89#define HFSP_ATTRIB_ID 0x08
90#define HFSP_BOGUS_ID 0x0F
91#define HFSP_FIRST_AV_ID 0x10
92
93#define HFSJ_JOURN_IN_FS 0x00
94#define HFSJ_JOURN_OTHER_DEV 0x01
95#define HFSJ_JOURN_NEED_INIT 0x02
96
97#define HFSJ_HEADER_MAGIC 0x4a4e4c78
98#define HFSJ_ENDIAN_MAGIC 0x12345678
99
100#define HFSX_CASE_FOLDING 0xCF /* case insensitive HFSX */
101#define HFSX_BINARY_COMPARE 0xBC /* case sensitive HFSX */
102
103#define HFS_EXT_NB 3
104#define HFSP_EXT_NB 8
105
106/* Define the filenames used by the FS extractor */
107#ifdef HFS_EXTRACT_FS
108
109#define HFS_MDB_FILENAME "mdb.hfs"
110#define HFS_CATALOG_FILENAME "catalog.hfs"
111#define HFS_EXTENTS_FILENAME "extents.hfs"
112#define HFS_BITMAP_FILENAME "bitmap.hfs"
113
114#define HFSP_VH_FILENAME "vh.hfsplus"
115#define HFSP_CATALOG_FILENAME "catalog.hfsplus"
116#define HFSP_EXTENTS_FILENAME "extents.hfsplus"
117#define HFSP_BITMAP_FILENAME "bitmap.hfsplus"
118#define HFSP_ATTRIB_FILENAME "attributes.hfsplus"
119#define HFSP_STARTUP_FILENAME "startup.hfsplus"
120
121#endif /* HFS_EXTRACT_FS */
122
123
124
125/* ----------------------------------- */
126/* -- HFS DATA STRUCTURES -- */
127/* ----------------------------------- */
128
129/* Extent descriptor */
130struct __attribute__ ((packed)) _HfsExtDescriptor {
131 uint16_t start_block;
132 uint16_t block_count;
133};
134typedef struct _HfsExtDescriptor HfsExtDescriptor;
136
137/* Volume header */
138struct __attribute__ ((packed)) _HfsMasterDirectoryBlock {
139 uint16_t signature;
140 uint32_t create_date;
141 uint32_t modify_date;
142 uint16_t volume_attributes;
143 uint16_t files_in_root;
144 uint16_t volume_bitmap_block; /* in sectors */
145 uint16_t next_allocation;
146 uint16_t total_blocks;
147 uint32_t block_size; /* in bytes */
148 uint32_t def_clump_size; /* in bytes */
149 uint16_t start_block; /* in sectors */
150 uint32_t next_free_node;
151 uint16_t free_blocks;
152 uint8_t name_length;
153 char name[27];
154 uint32_t backup_date;
155 uint16_t backup_number;
156 uint32_t write_count;
157 uint32_t extents_clump;
158 uint32_t catalog_clump;
159 uint16_t dirs_in_root;
160 uint32_t file_count;
161 uint32_t dir_count;
162 uint32_t finder_info[8];
163 union __attribute__ ((packed)) {
164 struct __attribute__ ((packed)) {
165 uint16_t volume_cache_size; /* in blocks */
166 uint16_t bitmap_cache_size; /* in blocks */
167 uint16_t common_cache_size; /* in blocks */
168 } legacy;
169 struct __attribute__ ((packed)) {
170 uint16_t signature;
171 HfsExtDescriptor location;
172 } embedded;
173 } old_new;
174 uint32_t extents_file_size; /* in bytes, block size multiple */
175 HfsExtDataRec extents_file_rec;
176 uint32_t catalog_file_size; /* in bytes, block size multiple */
177 HfsExtDataRec catalog_file_rec;
178};
179typedef struct _HfsMasterDirectoryBlock HfsMasterDirectoryBlock;
180
181/* B*-Tree Node Descriptor */
182struct __attribute__ ((packed)) _HfsNodeDescriptor {
183 uint32_t next;
184 uint32_t previous;
185 int8_t type;
186 uint8_t height;
187 uint16_t rec_nb;
188 uint16_t reserved;
189};
190typedef struct _HfsNodeDescriptor HfsNodeDescriptor;
191
192/* Header record of a whole B*-Tree */
193struct __attribute__ ((packed)) _HfsHeaderRecord {
194 uint16_t depth;
195 uint32_t root_node;
196 uint32_t leaf_records;
197 uint32_t first_leaf_node;
198 uint32_t last_leaf_node;
199 uint16_t node_size;
200 uint16_t max_key_len;
201 uint32_t total_nodes;
202 uint32_t free_nodes;
203 int8_t reserved[76];
204};
205typedef struct _HfsHeaderRecord HfsHeaderRecord;
206
207/* Catalog key for B*-Tree lookup in the catalog file */
208struct __attribute__ ((packed)) _HfsCatalogKey {
209 uint8_t key_length; /* length of the key without key_length */
210 uint8_t reserved;
211 uint32_t parent_ID;
212 uint8_t name_length;
213 char name[31]; /* in fact physicaly 1 upto 31 */
214};
215typedef struct _HfsCatalogKey HfsCatalogKey;
216
217/* Extents overflow key for B*-Tree lookup */
218struct __attribute__ ((packed)) _HfsExtentKey {
219 uint8_t key_length; /* length of the key without key_length */
220 uint8_t type; /* data or ressource fork */
221 uint32_t file_ID;
222 uint16_t start;
223};
224typedef struct _HfsExtentKey HfsExtentKey;
225
226/* Catalog subdata case directory */
227struct __attribute__ ((packed)) _HfsDir {
228 uint16_t flags;
229 uint16_t valence; /* number of files in this directory */
230 uint32_t dir_ID;
231 uint32_t create_date;
232 uint32_t modify_date;
233 uint32_t backup_date;
234 int8_t DInfo[16]; /* used by Finder, handle as reserved */
235 int8_t DXInfo[16]; /* used by Finder, handle as reserved */
236 uint32_t reserved[4];
237};
238typedef struct _HfsDir HfsDir;
239
240/* Catalog subdata case file */
241struct __attribute__ ((packed)) _HfsFile {
242 int8_t flags;
243 int8_t type; /* should be 0 */
244 int8_t FInfo[16]; /* used by Finder, handle as reserved */
245 uint32_t file_ID;
246 uint16_t data_start_block;
247 uint32_t data_sz_byte;
248 uint32_t data_sz_block;
249 uint16_t res_start_block;
250 uint32_t res_sz_byte;
251 uint32_t res_sz_block;
252 uint32_t create_date;
253 uint32_t modify_date;
254 uint32_t backup_date;
255 int8_t FXInfo[16]; /* used by Finder, handle as reserved */
256 uint16_t clump_size;
257 HfsExtDataRec extents_data;
258 HfsExtDataRec extents_res;
259 uint32_t reserved;
260};
261typedef struct _HfsFile HfsFile;
262
263/* Catalog subdata case directory thread */
264struct __attribute__ ((packed)) _HfsDirTh {
265 uint32_t reserved[2];
266 uint32_t parent_ID;
267 int8_t name_length;
268 char name[31];
269};
270typedef struct _HfsDirTh HfsDirTh;
271
272/* Catalog subdata case file thread */
273typedef struct _HfsDirTh HfsFileTh; /* same as directory thread */
274
275/* Catalog data */
276struct __attribute__ ((packed)) _HfsCatalog {
277 int8_t type;
278 int8_t reserved;
279 union {
280 HfsDir dir;
281 HfsFile file;
282 HfsDirTh dir_th;
283 HfsFileTh file_th;
284 } sel;
285};
286typedef struct _HfsCatalog HfsCatalog;
287
288
289
290/* ------------------------------------ */
291/* -- HFS+ DATA STRUCTURES -- */
292/* ------------------------------------ */
293
294/* documented since 2004 in tn1150 */
295struct __attribute__ ((packed)) _HfsPPerms {
296 uint32_t owner_ID;
297 uint32_t group_ID;
298 uint32_t permissions;
299 uint32_t special_devices;
300};
301typedef struct _HfsPPerms HfsPPerms;
302
303/* HFS+ extent descriptor*/
304struct __attribute__ ((packed)) _HfsPExtDescriptor {
305 uint32_t start_block;
306 uint32_t block_count;
307};
308typedef struct _HfsPExtDescriptor HfsPExtDescriptor;
310
311/* HFS+ fork data structure */
312struct __attribute__ ((packed)) _HfsPForkData {
313 uint64_t logical_size;
314 uint32_t clump_size;
315 uint32_t total_blocks;
316 HfsPExtDataRec extents;
317};
318typedef struct _HfsPForkData HfsPForkData;
319
320/* HFS+ catalog node ID */
321typedef uint32_t HfsPNodeID;
322
323/* HFS+ file names */
324typedef uint16_t unichar;
325struct __attribute__ ((packed)) _HfsPUniStr255 {
326 uint16_t length;
327 unichar unicode[255]; /* 1 upto 255 */
328};
329typedef struct _HfsPUniStr255 HfsPUniStr255;
330
331/* HFS+ volume header */
332struct __attribute__ ((packed)) _HfsPVolumeHeader {
333 uint16_t signature;
334 uint16_t version;
335 uint32_t attributes;
336 uint32_t last_mounted_version;
337 uint32_t journal_info_block;
338
339 uint32_t create_date;
340 uint32_t modify_date;
341 uint32_t backup_date;
342 uint32_t checked_date;
343
344 uint32_t file_count;
345 uint32_t dir_count;
346
347 uint32_t block_size;
348 uint32_t total_blocks;
349 uint32_t free_blocks;
350
351 uint32_t next_allocation;
352 uint32_t res_clump_size;
353 uint32_t data_clump_size;
354 HfsPNodeID next_catalog_ID;
355
356 uint32_t write_count;
357 uint64_t encodings_bitmap;
358
359 uint8_t finder_info[32];
360
361 HfsPForkData allocation_file;
362 HfsPForkData extents_file;
363 HfsPForkData catalog_file;
364 HfsPForkData attributes_file;
365 HfsPForkData startup_file;
366};
367typedef struct _HfsPVolumeHeader HfsPVolumeHeader;
368
369/* HFS+ B-Tree Node Descriptor. Same as HFS btree. */
370struct __attribute__ ((packed)) _HfsPNodeDescriptor {
371 uint32_t next;
372 uint32_t previous;
373 int8_t type;
374 uint8_t height;
375 uint16_t rec_nb;
376 uint16_t reserved;
377};
378typedef struct _HfsPNodeDescriptor HfsPNodeDescriptor;
379
380/* Header record of a whole HFS+ B-Tree. */
381struct __attribute__ ((packed)) _HfsPHeaderRecord {
382 uint16_t depth;
383 uint32_t root_node;
384 uint32_t leaf_records;
385 uint32_t first_leaf_node;
386 uint32_t last_leaf_node;
387 uint16_t node_size;
388 uint16_t max_key_len;
389 uint32_t total_nodes;
390 uint32_t free_nodes; /* same as hfs btree until here */
391 uint16_t reserved1;
392
393 uint32_t clump_size;
394 uint8_t btree_type; /* must be 0 for HFS+ B-Tree */
395 uint8_t key_compare_type; /* hfsx => 0xCF = case folding */
396 /* 0xBC = binary compare */
397 /* otherwise, reserved */
398 uint32_t attributes;
399 uint32_t reserved3[16];
400};
401typedef struct _HfsPHeaderRecord HfsPHeaderRecord;
402
403/* Catalog key for B-Tree lookup in the HFS+ catalog file */
404struct __attribute__ ((packed)) _HfsPCatalogKey {
405 uint16_t key_length;
406 HfsPNodeID parent_ID;
407 HfsPUniStr255 node_name;
408};
409typedef struct _HfsPCatalogKey HfsPCatalogKey;
410
411/* HFS+ catalog subdata case dir */
412struct __attribute__ ((packed)) _HfsPDir {
413 uint16_t flags;
414 uint32_t valence;
415 HfsPNodeID dir_ID;
416 uint32_t create_date;
417 uint32_t modify_date;
418 uint32_t attrib_mod_date;
419 uint32_t access_date;
420 uint32_t backup_date;
421 HfsPPerms permissions;
422 int8_t DInfo[16]; /* used by Finder, handle as reserved */
423 int8_t DXInfo[16]; /* used by Finder, handle as reserved */
424 uint32_t text_encoding;
425 uint32_t reserved;
426};
427typedef struct _HfsPDir HfsPDir;
428
429/* HFS+ catalog subdata case file */
430struct __attribute__ ((packed)) _HfsPFile {
431 uint16_t flags;
432 uint32_t reserved1;
433 HfsPNodeID file_ID;
434 uint32_t create_date;
435 uint32_t modify_date;
436 uint32_t attrib_mod_date;
437 uint32_t access_date;
438 uint32_t backup_date;
439 HfsPPerms permissions;
440 int8_t FInfo[16]; /* used by Finder, handle as reserved */
441 int8_t FXInfo[16]; /* used by Finder, handle as reserved */
442 uint32_t text_encoding;
443 uint32_t reserved2;
444
445 HfsPForkData data_fork;
446 HfsPForkData res_fork;
447};
448typedef struct _HfsPFile HfsPFile;
449
450/* HFS+ catalog subdata case thread */
451struct __attribute__ ((packed)) _HfsPThread {
452 int16_t reserved;
453 HfsPNodeID parent_ID;
454 HfsPUniStr255 node_name;
455};
456typedef struct _HfsPThread HfsPDirTh;
457typedef struct _HfsPThread HfsPFileTh;
458
459/* HFS+ Catalog leaf data */
460struct __attribute__ ((packed)) _HfsPCatalog {
461 int16_t type;
462 union {
463 HfsPDir dir;
464 HfsPFile file;
465 HfsPDirTh dir_th;
466 HfsPFileTh file_th;
467 } sel;
468};
469typedef struct _HfsPCatalog HfsPCatalog;
470
471/* HFS+ extents file key */
472struct __attribute__ ((packed)) _HfsPExtentKey {
473 uint16_t key_length;
474 uint8_t type;
475 uint8_t pad;
476 HfsPNodeID file_ID;
477 uint32_t start;
478};
479typedef struct _HfsPExtentKey HfsPExtentKey;
480
481/* extent file data is HfsPExtDataRec */
482
483/* Fork data attribute file */
484struct __attribute__ ((packed)) _HfsPForkDataAttr {
485 uint32_t record_type;
486 uint32_t reserved;
487 union __attribute__ ((packed)) {
488 HfsPForkData fork;
489 HfsPExtDataRec extents;
490 } fork_res;
491};
492typedef struct _HfsPForkDataAttr HfsPForkDataAttr;
493
494
495/* ----------- Journal data structures ----------- */
496
497/* Info block : stored in a block # defined in the VH */
498struct __attribute__ ((packed)) _HfsJJournalInfoBlock {
499 uint32_t flags;
500 uint32_t device_signature[8];
501 uint64_t offset;
502 uint64_t size;
503 uint32_t reserved[32];
504};
505typedef struct _HfsJJournalInfoBlock HfsJJournalInfoBlock;
506
507struct __attribute__ ((packed)) _HfsJJournalHeader {
508 uint32_t magic;
509 uint32_t endian;
510 uint64_t start;
511 uint64_t end;
512 uint64_t size;
513 uint32_t blhdr_size;
514 uint32_t checksum;
515 uint32_t jhdr_size;
516};
517typedef struct _HfsJJournalHeader HfsJJournalHeader;
518
519struct __attribute__ ((packed)) _HfsJBlockInfo {
520 uint64_t bnum; /* sector number */
521 uint32_t bsize; /* size in bytes */
522 uint32_t next;
523};
524typedef struct _HfsJBlockInfo HfsJBlockInfo;
525
526struct __attribute__ ((packed)) _HfsJBlockListHeader {
527 uint16_t max_blocks; /* reserved */
528 uint16_t num_blocks;
529 uint32_t bytes_used;
530 uint32_t checksum;
531 uint32_t pad;
532 HfsJBlockInfo binfo[];
533};
534typedef struct _HfsJBlockListHeader HfsJBlockListHeader;
535
536
537
538/* ---------------------------------------- */
539/* -- INTERNAL DATA STRUCTURES -- */
540/* ---------------------------------------- */
541
542/* Data of an opened HFS file */
543struct _HfsPrivateFile {
546 uint32_t CNID; /* disk order (BE) */
547 HfsExtDataRec first; /* disk order (BE) */
548 HfsExtDataRec cache; /* disk order (BE) */
549 uint16_t start_cache; /* CPU order */
550};
552
553/* To store bad block list */
557};
559
560/* HFS Filesystem specific data */
561struct _HfsPrivateFSData {
562 uint8_t alloc_map[(1<<16) / 8];
567 unsigned int bad_blocks_xtent_nb;
569};
571
572/* Generic btree key */
573struct __attribute__ ((packed)) _HfsPrivateGenericKey {
574 uint8_t key_length;
575 uint8_t key_content[1]; /* we use 1 as a minimum size */
576};
577typedef struct _HfsPrivateGenericKey HfsPrivateGenericKey;
578
579/* ----- HFS+ ----- */
580
581/* Data of an opened HFS file */
582struct _HfsPPrivateFile {
585 HfsPNodeID CNID; /* disk order (BE) */
586 HfsPExtDataRec first; /* disk order (BE) */
587 HfsPExtDataRec cache; /* disk order (BE) */
588 uint32_t start_cache; /* CPU order */
589};
591
592struct _HfsPPrivateExtent {
595};
597
598/* To store bad block list */
602};
604
605/* HFS+ file system specific data */
606struct _HfsPPrivateFSData {
607 PedFileSystem* wrapper; /* NULL if hfs+ is not embedded */
608 PedGeometry* plus_geom; /* Geometry of HFS+ _volume_ */
609 uint8_t* alloc_map;
610 uint8_t* dirty_alloc_map;
617 uint32_t jib_start_block;
618 uint32_t jl_start_block;
619 unsigned int bad_blocks_xtent_nb;
621 char free_geom; /* 1 = plus_geom must be freed */
622};
624
625/* Generic + btree key */
626struct __attribute__ ((packed)) _HfsPPrivateGenericKey {
627 uint16_t key_length;
628 uint8_t key_content[1]; /* we use 1 as a minimum size */
629};
630typedef struct _HfsPPrivateGenericKey HfsPPrivateGenericKey;
631
632/* ---- common ---- */
633
634/* node and lead record reference for a BTree search */
635struct _HfsCPrivateLeafRec {
636 unsigned int node_size; /* in sectors */
637 unsigned int node_number;
638 unsigned int record_pos;
639 unsigned int record_number;
640};
642
643extern uint8_t* hfs_block;
644extern uint8_t* hfsp_block;
645extern unsigned hfs_block_count;
646extern unsigned hfsp_block_count;
647
648#endif /* _HFS_H */
typedef __attribute__
Definition: vtoc.h:80
uint8_t type
Definition: dos.c:2
uint32_t start
Definition: dos.c:4
uint16_t magic
Definition: dos.c:4
uint32_t length
Definition: dos.c:5
uint64_t block_count
Definition: f2fs.h:10
unsigned char reserved3
Definition: fdasd.h:5
offset
Definition: fdasd.h:264
unsigned char reserved
Definition: fdasd.h:2
unsigned char reserved2
Definition: fdasd.h:4
unsigned char reserved1
Definition: fdasd.h:2
long long PedSector
We can address 2^63 sectors.
Definition: device.h:31
uint8_t * hfs_block
Definition: hfs.c:42
uint16_t unichar
Definition: hfs.h:324
struct _HfsExtDescriptor HfsExtDescriptor
Definition: hfs.h:134
struct _HfsPHeaderRecord HfsPHeaderRecord
Definition: hfs.h:401
struct _HfsFile HfsFile
Definition: hfs.h:261
struct _HfsMasterDirectoryBlock HfsMasterDirectoryBlock
Definition: hfs.h:179
unsigned hfsp_block_count
Definition: hfs.c:45
struct _HfsPUniStr255 HfsPUniStr255
Definition: hfs.h:329
struct _HfsPForkData HfsPForkData
Definition: hfs.h:318
#define HFS_EXT_NB
Definition: hfs.h:103
unsigned hfs_block_count
Definition: hfs.c:44
struct _HfsJBlockInfo HfsJBlockInfo
Definition: hfs.h:524
#define HFSP_EXT_NB
Definition: hfs.h:104
struct _HfsPNodeDescriptor HfsPNodeDescriptor
Definition: hfs.h:378
struct _HfsDirTh HfsDirTh
Definition: hfs.h:270
struct _HfsPrivateGenericKey HfsPrivateGenericKey
Definition: hfs.h:577
struct _HfsDirTh HfsFileTh
Definition: hfs.h:273
struct _HfsPExtDescriptor HfsPExtDescriptor
Definition: hfs.h:308
struct _HfsCatalogKey HfsCatalogKey
Definition: hfs.h:215
struct _HfsPThread HfsPDirTh
Definition: hfs.h:456
struct _HfsJJournalHeader HfsJJournalHeader
Definition: hfs.h:517
uint8_t * hfsp_block
Definition: hfs.c:43
struct _HfsPFile HfsPFile
Definition: hfs.h:448
struct _HfsCatalog HfsCatalog
Definition: hfs.h:286
struct _HfsDir HfsDir
Definition: hfs.h:238
struct _HfsPVolumeHeader HfsPVolumeHeader
Definition: hfs.h:367
struct _HfsJBlockListHeader HfsJBlockListHeader
Definition: hfs.h:534
uint32_t HfsPNodeID
Definition: hfs.h:321
struct _HfsPPrivateGenericKey HfsPPrivateGenericKey
Definition: hfs.h:630
struct _HfsPCatalog HfsPCatalog
Definition: hfs.h:469
struct _HfsPPerms HfsPPerms
Definition: hfs.h:301
struct _HfsPThread HfsPFileTh
Definition: hfs.h:457
struct _HfsNodeDescriptor HfsNodeDescriptor
Definition: hfs.h:190
HfsPExtDescriptor HfsPExtDataRec[HFSP_EXT_NB]
Definition: hfs.h:309
struct _HfsExtentKey HfsExtentKey
Definition: hfs.h:224
struct _HfsPExtentKey HfsPExtentKey
Definition: hfs.h:479
struct _HfsPDir HfsPDir
Definition: hfs.h:427
struct _HfsHeaderRecord HfsHeaderRecord
Definition: hfs.h:205
struct _HfsPForkDataAttr HfsPForkDataAttr
Definition: hfs.h:492
struct _HfsJJournalInfoBlock HfsJJournalInfoBlock
Definition: hfs.h:505
struct _HfsPCatalogKey HfsPCatalogKey
Definition: hfs.h:409
HfsExtDescriptor HfsExtDataRec[HFS_EXT_NB]
Definition: hfs.h:135
char name[16]
Definition: pc98.c:13
HfsPExtDescriptor HfsPExtDataRec[HFSP_EXT_NB]
Definition: hfs.h:309
HfsExtDescriptor HfsExtDataRec[HFS_EXT_NB]
Definition: hfs.h:135
Definition: hfs.h:635
unsigned int record_number
Definition: hfs.h:639
unsigned int node_size
Definition: hfs.h:636
unsigned int record_pos
Definition: hfs.h:638
unsigned int node_number
Definition: hfs.h:637
Definition: hfs.h:592
PedSector sector_count
Definition: hfs.h:594
PedSector start_sector
Definition: hfs.h:593
Definition: hfs.h:606
uint32_t jib_start_block
Definition: hfs.h:617
PedFileSystem * wrapper
Definition: hfs.h:607
HfsPPrivateFile * catalog_file
Definition: hfs.h:613
uint8_t * dirty_alloc_map
Definition: hfs.h:610
unsigned int bad_blocks_xtent_nb
Definition: hfs.h:619
uint8_t * alloc_map
Definition: hfs.h:609
char bad_blocks_loaded
Definition: hfs.h:620
HfsPPrivateFile * extents_file
Definition: hfs.h:612
uint32_t jl_start_block
Definition: hfs.h:618
HfsPVolumeHeader * vh
Definition: hfs.h:611
HfsPPrivateFile * allocation_file
Definition: hfs.h:615
HfsPPrivateFile * attributes_file
Definition: hfs.h:614
char free_geom
Definition: hfs.h:621
HfsPPrivateLinkExtent * bad_blocks_xtent_list
Definition: hfs.h:616
PedGeometry * plus_geom
Definition: hfs.h:608
Definition: hfs.h:582
HfsPExtDataRec cache
Definition: hfs.h:587
PedSector sect_nb
Definition: hfs.h:583
PedFileSystem * fs
Definition: hfs.h:584
uint32_t start_cache
Definition: hfs.h:588
HfsPExtDataRec first
Definition: hfs.h:586
HfsPNodeID CNID
Definition: hfs.h:585
Definition: hfs.h:599
struct _HfsPPrivateLinkExtent * next
Definition: hfs.h:601
HfsPExtDescriptor extent
Definition: hfs.h:600
Definition: hfs.h:561
HfsPrivateLinkExtent * bad_blocks_xtent_list
Definition: hfs.h:566
HfsMasterDirectoryBlock * mdb
Definition: hfs.h:563
char bad_blocks_loaded
Definition: hfs.h:568
unsigned int bad_blocks_xtent_nb
Definition: hfs.h:567
uint8_t alloc_map[(1<< 16)/8]
Definition: hfs.h:562
HfsPrivateFile * extent_file
Definition: hfs.h:564
HfsPrivateFile * catalog_file
Definition: hfs.h:565
Definition: hfs.h:543
uint32_t CNID
Definition: hfs.h:546
PedSector sect_nb
Definition: hfs.h:544
HfsExtDataRec first
Definition: hfs.h:547
uint16_t start_cache
Definition: hfs.h:549
HfsExtDataRec cache
Definition: hfs.h:548
PedFileSystem * fs
Definition: hfs.h:545
Definition: hfs.h:554
HfsExtDescriptor extent
Definition: hfs.h:555
struct _HfsPrivateLinkExtent * next
Definition: hfs.h:556
Structure describing file system.
Definition: filesys.h:68
Geometry of the partition.
Definition: geom.h:35