Loading...
Searching...
No Matches
hfs.h
Go to the documentation of this file.
/*
libparted - a library for manipulating disk partitions
Copyright (C) 2003-2005, 2007, 2009-2014, 2019-2023, 2026 Free Software
Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _HFS_H
#define _HFS_H
/* WARNING : bn is used 2 times in theses macro */
/* so _never_ use side effect operators when using them */
#define TST_BLOC_OCCUPATION(tab,bn) \
(((tab)[(bn)/8]) & (1<<(7-((bn)&7))))
#define SET_BLOC_OCCUPATION(tab,bn) \
(((tab)[(bn)/8]) |= (1<<(7-((bn)&7))))
#define CLR_BLOC_OCCUPATION(tab,bn) \
(((tab)[(bn)/8]) &= ~(1<<(7-((bn)&7))))
/* Maximum number of blocks for the copy buffers */
#define BLOCK_MAX_BUFF 256
/* Maximum size of the copy buffers, in bytes */
#define BYTES_MAX_BUFF 8388608
/* Apple Creator Codes follow */
#define HFSP_IMPL_Shnk 0x53686e6b /* in use */
#define HFSP_IMPL_Xpnd 0x58706e64 /* reserved */
#define HFSP_IMPL_Resz 0x5265737a /* reserved */
#define HFSP_IMPL_PHpx 0x50482b78 /* reserved */
#define HFSP_IMPL_traP 0x74726150 /* reserved */
#define HFSP_IMPL_GnuP 0x476e7550 /* reserved */
#define HFS_SIGNATURE 0x4244 /* 'BD' */
#define HFSP_SIGNATURE 0x482B /* 'H+' */
#define HFSX_SIGNATURE 0x4858 /* 'HX' */
#define HFSP_VERSION 4
#define HFSX_VERSION 5
#define HFS_HARD_LOCK 7
#define HFS_UNMOUNTED 8
#define HFS_BAD_SPARED 9
#define HFS_SOFT_LOCK 15
#define HFSP_NO_CACHE 10
#define HFSP_INCONSISTENT 11
#define HFSP_REUSE_CNID 12
#define HFSP_JOURNALED 13
#define HFS_IDX_NODE 0x00
#define HFS_HDR_NODE 0x01
#define HFS_MAP_NODE 0x02
#define HFS_LEAF_NODE 0xFF
#define HFS_FIRST_REC 0x0E
#define HFS_NSD_HD_REC 0x78
#define HFS_MAP_REC 0xF8
#define HFS_DATA_FORK 0x00
#define HFS_RES_FORK 0xFF
#define HFS_CAT_DIR 0x01
#define HFS_CAT_FILE 0x02
#define HFS_CAT_DIR_TH 0x03
#define HFS_CAT_FILE_TH 0x04
#define HFSP_ATTR_INLINE 0x10
#define HFSP_ATTR_FORK 0x20
#define HFSP_ATTR_EXTENTS 0x30
#define HFS_ROOT_PAR_ID 0x01
#define HFS_ROOT_DIR_ID 0x02
#define HFS_XTENT_ID 0x03
#define HFS_CATALOG_ID 0x04
#define HFS_BAD_BLOCK_ID 0x05
#define HFSP_ALLOC_ID 0x06
#define HFSP_STARTUP_ID 0x07
#define HFSP_ATTRIB_ID 0x08
#define HFSP_BOGUS_ID 0x0F
#define HFSP_FIRST_AV_ID 0x10
#define HFSJ_JOURN_IN_FS 0x00
#define HFSJ_JOURN_OTHER_DEV 0x01
#define HFSJ_JOURN_NEED_INIT 0x02
#define HFSJ_HEADER_MAGIC 0x4a4e4c78
#define HFSJ_ENDIAN_MAGIC 0x12345678
#define HFSX_CASE_FOLDING 0xCF /* case insensitive HFSX */
#define HFSX_BINARY_COMPARE 0xBC /* case sensitive HFSX */
#define HFS_EXT_NB 3
#define HFSP_EXT_NB 8
/* Define the filenames used by the FS extractor */
#ifdef HFS_EXTRACT_FS
#define HFS_MDB_FILENAME "mdb.hfs"
#define HFS_CATALOG_FILENAME "catalog.hfs"
#define HFS_EXTENTS_FILENAME "extents.hfs"
#define HFS_BITMAP_FILENAME "bitmap.hfs"
#define HFSP_VH_FILENAME "vh.hfsplus"
#define HFSP_CATALOG_FILENAME "catalog.hfsplus"
#define HFSP_EXTENTS_FILENAME "extents.hfsplus"
#define HFSP_BITMAP_FILENAME "bitmap.hfsplus"
#define HFSP_ATTRIB_FILENAME "attributes.hfsplus"
#define HFSP_STARTUP_FILENAME "startup.hfsplus"
#endif /* HFS_EXTRACT_FS */
/* ----------------------------------- */
/* -- HFS DATA STRUCTURES -- */
/* ----------------------------------- */
/* Extent descriptor */
struct __attribute__ ((packed)) _HfsExtDescriptor {
uint16_t start_block;
uint16_t block_count;
};
typedef struct _HfsExtDescriptor HfsExtDescriptor;
typedef HfsExtDescriptor HfsExtDataRec[HFS_EXT_NB];
/* Volume header */
struct __attribute__ ((packed)) _HfsMasterDirectoryBlock {
uint16_t signature;
uint32_t create_date;
uint32_t modify_date;
uint16_t volume_attributes;
uint16_t files_in_root;
uint16_t volume_bitmap_block; /* in sectors */
uint16_t next_allocation;
uint16_t total_blocks;
uint32_t block_size; /* in bytes */
uint32_t def_clump_size; /* in bytes */
uint16_t start_block; /* in sectors */
uint32_t next_free_node;
uint16_t free_blocks;
uint8_t name_length;
char name[27];
uint32_t backup_date;
uint16_t backup_number;
uint32_t write_count;
uint32_t extents_clump;
uint32_t catalog_clump;
uint16_t dirs_in_root;
uint32_t file_count;
uint32_t dir_count;
uint32_t finder_info[8];
union __attribute__ ((packed)) {
struct __attribute__ ((packed)) {
uint16_t volume_cache_size; /* in blocks */
uint16_t bitmap_cache_size; /* in blocks */
uint16_t common_cache_size; /* in blocks */
} legacy;
struct __attribute__ ((packed)) {
uint16_t signature;
HfsExtDescriptor location;
} embedded;
} old_new;
uint32_t extents_file_size; /* in bytes, block size multiple */
HfsExtDataRec extents_file_rec;
uint32_t catalog_file_size; /* in bytes, block size multiple */
HfsExtDataRec catalog_file_rec;
};
typedef struct _HfsMasterDirectoryBlock HfsMasterDirectoryBlock;
/* B*-Tree Node Descriptor */
struct __attribute__ ((packed)) _HfsNodeDescriptor {
uint32_t next;
uint32_t previous;
int8_t type;
uint8_t height;
uint16_t rec_nb;
uint16_t reserved;
};
typedef struct _HfsNodeDescriptor HfsNodeDescriptor;
/* Header record of a whole B*-Tree */
struct __attribute__ ((packed)) _HfsHeaderRecord {
uint16_t depth;
uint32_t root_node;
uint32_t leaf_records;
uint32_t first_leaf_node;
uint32_t last_leaf_node;
uint16_t node_size;
uint16_t max_key_len;
uint32_t total_nodes;
uint32_t free_nodes;
int8_t reserved[76];
};
typedef struct _HfsHeaderRecord HfsHeaderRecord;
/* Catalog key for B*-Tree lookup in the catalog file */
struct __attribute__ ((packed)) _HfsCatalogKey {
uint8_t key_length; /* length of the key without key_length */
uint8_t reserved;
uint32_t parent_ID;
uint8_t name_length;
char name[31]; /* in fact physicaly 1 upto 31 */
};
typedef struct _HfsCatalogKey HfsCatalogKey;
/* Extents overflow key for B*-Tree lookup */
struct __attribute__ ((packed)) _HfsExtentKey {
uint8_t key_length; /* length of the key without key_length */
uint8_t type; /* data or ressource fork */
uint32_t file_ID;
uint16_t start;
};
typedef struct _HfsExtentKey HfsExtentKey;
/* Catalog subdata case directory */
struct __attribute__ ((packed)) _HfsDir {
uint16_t flags;
uint16_t valence; /* number of files in this directory */
uint32_t dir_ID;
uint32_t create_date;
uint32_t modify_date;
uint32_t backup_date;
int8_t DInfo[16]; /* used by Finder, handle as reserved */
int8_t DXInfo[16]; /* used by Finder, handle as reserved */
uint32_t reserved[4];
};
typedef struct _HfsDir HfsDir;
/* Catalog subdata case file */
struct __attribute__ ((packed)) _HfsFile {
int8_t flags;
int8_t type; /* should be 0 */
int8_t FInfo[16]; /* used by Finder, handle as reserved */
uint32_t file_ID;
uint16_t data_start_block;
uint32_t data_sz_byte;
uint32_t data_sz_block;
uint16_t res_start_block;
uint32_t res_sz_byte;
uint32_t res_sz_block;
uint32_t create_date;
uint32_t modify_date;
uint32_t backup_date;
int8_t FXInfo[16]; /* used by Finder, handle as reserved */
uint16_t clump_size;
HfsExtDataRec extents_data;
HfsExtDataRec extents_res;
uint32_t reserved;
};
typedef struct _HfsFile HfsFile;
/* Catalog subdata case directory thread */
struct __attribute__ ((packed)) _HfsDirTh {
uint32_t reserved[2];
uint32_t parent_ID;
int8_t name_length;
char name[31];
};
typedef struct _HfsDirTh HfsDirTh;
/* Catalog subdata case file thread */
typedef struct _HfsDirTh HfsFileTh; /* same as directory thread */
/* Catalog data */
struct __attribute__ ((packed)) _HfsCatalog {
int8_t type;
int8_t reserved;
union {
HfsDir dir;
HfsFile file;
HfsDirTh dir_th;
HfsFileTh file_th;
} sel;
};
typedef struct _HfsCatalog HfsCatalog;
/* ------------------------------------ */
/* -- HFS+ DATA STRUCTURES -- */
/* ------------------------------------ */
/* documented since 2004 in tn1150 */
struct __attribute__ ((packed)) _HfsPPerms {
uint32_t owner_ID;
uint32_t group_ID;
uint32_t permissions;
uint32_t special_devices;
};
typedef struct _HfsPPerms HfsPPerms;
/* HFS+ extent descriptor*/
struct __attribute__ ((packed)) _HfsPExtDescriptor {
uint32_t start_block;
uint32_t block_count;
};
typedef struct _HfsPExtDescriptor HfsPExtDescriptor;
typedef HfsPExtDescriptor HfsPExtDataRec[HFSP_EXT_NB];
/* HFS+ fork data structure */
struct __attribute__ ((packed)) _HfsPForkData {
uint64_t logical_size;
uint32_t clump_size;
uint32_t total_blocks;
HfsPExtDataRec extents;
};
typedef struct _HfsPForkData HfsPForkData;
/* HFS+ catalog node ID */
typedef uint32_t HfsPNodeID;
/* HFS+ file names */
typedef uint16_t unichar;
struct __attribute__ ((packed)) _HfsPUniStr255 {
uint16_t length;
unichar unicode[255]; /* 1 upto 255 */
};
typedef struct _HfsPUniStr255 HfsPUniStr255;
/* HFS+ volume header */
struct __attribute__ ((packed)) _HfsPVolumeHeader {
uint16_t signature;
uint16_t version;
uint32_t attributes;
uint32_t last_mounted_version;
uint32_t journal_info_block;
uint32_t create_date;
uint32_t modify_date;
uint32_t backup_date;
uint32_t checked_date;
uint32_t file_count;
uint32_t dir_count;
uint32_t block_size;
uint32_t total_blocks;
uint32_t free_blocks;
uint32_t next_allocation;
uint32_t res_clump_size;
uint32_t data_clump_size;
HfsPNodeID next_catalog_ID;
uint32_t write_count;
uint64_t encodings_bitmap;
uint8_t finder_info[32];
HfsPForkData allocation_file;
HfsPForkData extents_file;
HfsPForkData catalog_file;
HfsPForkData attributes_file;
HfsPForkData startup_file;
};
typedef struct _HfsPVolumeHeader HfsPVolumeHeader;
/* HFS+ B-Tree Node Descriptor. Same as HFS btree. */
struct __attribute__ ((packed)) _HfsPNodeDescriptor {
uint32_t next;
uint32_t previous;
int8_t type;
uint8_t height;
uint16_t rec_nb;
uint16_t reserved;
};
typedef struct _HfsPNodeDescriptor HfsPNodeDescriptor;
/* Header record of a whole HFS+ B-Tree. */
struct __attribute__ ((packed)) _HfsPHeaderRecord {
uint16_t depth;
uint32_t root_node;
uint32_t leaf_records;
uint32_t first_leaf_node;
uint32_t last_leaf_node;
uint16_t node_size;
uint16_t max_key_len;
uint32_t total_nodes;
uint32_t free_nodes; /* same as hfs btree until here */
uint16_t reserved1;
uint32_t clump_size;
uint8_t btree_type; /* must be 0 for HFS+ B-Tree */
uint8_t key_compare_type; /* hfsx => 0xCF = case folding */
/* 0xBC = binary compare */
/* otherwise, reserved */
uint32_t attributes;
uint32_t reserved3[16];
};
typedef struct _HfsPHeaderRecord HfsPHeaderRecord;
/* Catalog key for B-Tree lookup in the HFS+ catalog file */
struct __attribute__ ((packed)) _HfsPCatalogKey {
uint16_t key_length;
HfsPNodeID parent_ID;
HfsPUniStr255 node_name;
};
typedef struct _HfsPCatalogKey HfsPCatalogKey;
/* HFS+ catalog subdata case dir */
struct __attribute__ ((packed)) _HfsPDir {
uint16_t flags;
uint32_t valence;
HfsPNodeID dir_ID;
uint32_t create_date;
uint32_t modify_date;
uint32_t attrib_mod_date;
uint32_t access_date;
uint32_t backup_date;
HfsPPerms permissions;
int8_t DInfo[16]; /* used by Finder, handle as reserved */
int8_t DXInfo[16]; /* used by Finder, handle as reserved */
uint32_t text_encoding;
uint32_t reserved;
};
typedef struct _HfsPDir HfsPDir;
/* HFS+ catalog subdata case file */
struct __attribute__ ((packed)) _HfsPFile {
uint16_t flags;
uint32_t reserved1;
HfsPNodeID file_ID;
uint32_t create_date;
uint32_t modify_date;
uint32_t attrib_mod_date;
uint32_t access_date;
uint32_t backup_date;
HfsPPerms permissions;
int8_t FInfo[16]; /* used by Finder, handle as reserved */
int8_t FXInfo[16]; /* used by Finder, handle as reserved */
uint32_t text_encoding;
uint32_t reserved2;
HfsPForkData data_fork;
HfsPForkData res_fork;
};
typedef struct _HfsPFile HfsPFile;
/* HFS+ catalog subdata case thread */
struct __attribute__ ((packed)) _HfsPThread {
int16_t reserved;
HfsPNodeID parent_ID;
HfsPUniStr255 node_name;
};
typedef struct _HfsPThread HfsPDirTh;
typedef struct _HfsPThread HfsPFileTh;
/* HFS+ Catalog leaf data */
struct __attribute__ ((packed)) _HfsPCatalog {
int16_t type;
union {
HfsPDir dir;
HfsPFile file;
HfsPDirTh dir_th;
HfsPFileTh file_th;
} sel;
};
typedef struct _HfsPCatalog HfsPCatalog;
/* HFS+ extents file key */
struct __attribute__ ((packed)) _HfsPExtentKey {
uint16_t key_length;
uint8_t type;
uint8_t pad;
HfsPNodeID file_ID;
uint32_t start;
};
typedef struct _HfsPExtentKey HfsPExtentKey;
/* extent file data is HfsPExtDataRec */
/* Fork data attribute file */
struct __attribute__ ((packed)) _HfsPForkDataAttr {
uint32_t record_type;
uint32_t reserved;
union __attribute__ ((packed)) {
HfsPForkData fork;
HfsPExtDataRec extents;
} fork_res;
};
typedef struct _HfsPForkDataAttr HfsPForkDataAttr;
/* ----------- Journal data structures ----------- */
/* Info block : stored in a block # defined in the VH */
struct __attribute__ ((packed)) _HfsJJournalInfoBlock {
uint32_t flags;
uint32_t device_signature[8];
uint64_t offset;
uint64_t size;
uint32_t reserved[32];
};
typedef struct _HfsJJournalInfoBlock HfsJJournalInfoBlock;
struct __attribute__ ((packed)) _HfsJJournalHeader {
uint32_t magic;
uint32_t endian;
uint64_t start;
uint64_t end;
uint64_t size;
uint32_t blhdr_size;
uint32_t checksum;
uint32_t jhdr_size;
};
typedef struct _HfsJJournalHeader HfsJJournalHeader;
struct __attribute__ ((packed)) _HfsJBlockInfo {
uint64_t bnum; /* sector number */
uint32_t bsize; /* size in bytes */
uint32_t next;
};
typedef struct _HfsJBlockInfo HfsJBlockInfo;
struct __attribute__ ((packed)) _HfsJBlockListHeader {
uint16_t max_blocks; /* reserved */
uint16_t num_blocks;
uint32_t bytes_used;
uint32_t checksum;
uint32_t pad;
HfsJBlockInfo binfo[];
};
typedef struct _HfsJBlockListHeader HfsJBlockListHeader;
/* ---------------------------------------- */
/* -- INTERNAL DATA STRUCTURES -- */
/* ---------------------------------------- */
/* Data of an opened HFS file */
struct _HfsPrivateFile {
PedSector sect_nb;
PedFileSystem* fs;
uint32_t CNID; /* disk order (BE) */
HfsExtDataRec first; /* disk order (BE) */
HfsExtDataRec cache; /* disk order (BE) */
uint16_t start_cache; /* CPU order */
};
typedef struct _HfsPrivateFile HfsPrivateFile;
/* To store bad block list */
struct _HfsPrivateLinkExtent {
HfsExtDescriptor extent;
struct _HfsPrivateLinkExtent* next;
};
typedef struct _HfsPrivateLinkExtent HfsPrivateLinkExtent;
/* HFS Filesystem specific data */
struct _HfsPrivateFSData {
uint8_t alloc_map[(1<<16) / 8];
HfsMasterDirectoryBlock* mdb;
HfsPrivateFile* extent_file;
HfsPrivateFile* catalog_file;
HfsPrivateLinkExtent* bad_blocks_xtent_list;
unsigned int bad_blocks_xtent_nb;
char bad_blocks_loaded;
};
typedef struct _HfsPrivateFSData HfsPrivateFSData;
/* Generic btree key */
struct __attribute__ ((packed)) _HfsPrivateGenericKey {
uint8_t key_length;
uint8_t key_content[1]; /* we use 1 as a minimum size */
};
typedef struct _HfsPrivateGenericKey HfsPrivateGenericKey;
/* ----- HFS+ ----- */
/* Data of an opened HFS file */
struct _HfsPPrivateFile {
PedSector sect_nb;
PedFileSystem* fs;
HfsPNodeID CNID; /* disk order (BE) */
HfsPExtDataRec first; /* disk order (BE) */
HfsPExtDataRec cache; /* disk order (BE) */
uint32_t start_cache; /* CPU order */
};
typedef struct _HfsPPrivateFile HfsPPrivateFile;
struct _HfsPPrivateExtent {
PedSector start_sector;
PedSector sector_count;
};
typedef struct _HfsPPrivateExtent HfsPPrivateExtent;
/* To store bad block list */
struct _HfsPPrivateLinkExtent {
HfsPExtDescriptor extent;
struct _HfsPPrivateLinkExtent* next;
};
typedef struct _HfsPPrivateLinkExtent HfsPPrivateLinkExtent;
/* HFS+ file system specific data */
struct _HfsPPrivateFSData {
PedFileSystem* wrapper; /* NULL if hfs+ is not embedded */
PedGeometry* plus_geom; /* Geometry of HFS+ _volume_ */
uint8_t* alloc_map;
uint8_t* dirty_alloc_map;
HfsPVolumeHeader* vh;
HfsPPrivateFile* extents_file;
HfsPPrivateFile* catalog_file;
HfsPPrivateFile* attributes_file;
HfsPPrivateFile* allocation_file;
HfsPPrivateLinkExtent* bad_blocks_xtent_list;
uint32_t jib_start_block;
uint32_t jl_start_block;
unsigned int bad_blocks_xtent_nb;
char bad_blocks_loaded;
char free_geom; /* 1 = plus_geom must be freed */
};
typedef struct _HfsPPrivateFSData HfsPPrivateFSData;
/* Generic + btree key */
struct __attribute__ ((packed)) _HfsPPrivateGenericKey {
uint16_t key_length;
uint8_t key_content[1]; /* we use 1 as a minimum size */
};
typedef struct _HfsPPrivateGenericKey HfsPPrivateGenericKey;
/* ---- common ---- */
/* node and lead record reference for a BTree search */
struct _HfsCPrivateLeafRec {
unsigned int node_size; /* in sectors */
unsigned int node_number;
unsigned int record_pos;
unsigned int record_number;
};
typedef struct _HfsCPrivateLeafRec HfsCPrivateLeafRec;
extern uint8_t* hfs_block;
extern uint8_t* hfsp_block;
extern unsigned hfs_block_count;
extern unsigned hfsp_block_count;
#endif /* _HFS_H */
type
uint8_t type
Definition dos.c:2
start
uint32_t start
Definition dos.c:4
length
uint32_t length
Definition dos.c:5
magic
uint32_t magic
Definition f2fs.h:0
block_count
uint64_t block_count
Definition f2fs.h:10
reserved3
unsigned char reserved3
Definition fdasd.h:5
offset
offset
Definition fdasd.h:264
reserved
unsigned char reserved
Definition fdasd.h:2
reserved2
unsigned char reserved2
Definition fdasd.h:4
reserved1
unsigned char reserved1
Definition fdasd.h:2
PedSector
long long PedSector
We can address 2^63 sectors.
Definition device.h:31
PedFileSystem
struct _PedFileSystem PedFileSystem
Definition filesys.h:30
PedGeometry
struct _PedGeometry PedGeometry
Definition geom.h:30
hfs_block
uint8_t * hfs_block
Definition hfs.c:42
hfsp_block_count
unsigned hfsp_block_count
Definition hfs.c:45
hfs_block_count
unsigned hfs_block_count
Definition hfs.c:44
hfsp_block
uint8_t * hfsp_block
Definition hfs.c:43
unichar
uint16_t unichar
Definition hfs.h:324
HfsExtDescriptor
struct _HfsExtDescriptor HfsExtDescriptor
Definition hfs.h:134
HfsPHeaderRecord
struct _HfsPHeaderRecord HfsPHeaderRecord
Definition hfs.h:401
HfsFile
struct _HfsFile HfsFile
Definition hfs.h:261
HfsMasterDirectoryBlock
struct _HfsMasterDirectoryBlock HfsMasterDirectoryBlock
Definition hfs.h:179
HfsPUniStr255
struct _HfsPUniStr255 HfsPUniStr255
Definition hfs.h:329
HfsPForkData
struct _HfsPForkData HfsPForkData
Definition hfs.h:318
HFS_EXT_NB
#define HFS_EXT_NB
Definition hfs.h:103
HfsPrivateFile
struct _HfsPrivateFile HfsPrivateFile
Definition hfs.h:551
HfsJBlockInfo
struct _HfsJBlockInfo HfsJBlockInfo
Definition hfs.h:524
HFSP_EXT_NB
#define HFSP_EXT_NB
Definition hfs.h:104
HfsPNodeDescriptor
struct _HfsPNodeDescriptor HfsPNodeDescriptor
Definition hfs.h:378
HfsDirTh
struct _HfsDirTh HfsDirTh
Definition hfs.h:270
HfsPrivateGenericKey
struct _HfsPrivateGenericKey HfsPrivateGenericKey
Definition hfs.h:577
HfsPPrivateExtent
struct _HfsPPrivateExtent HfsPPrivateExtent
Definition hfs.h:596
HfsPPrivateFSData
struct _HfsPPrivateFSData HfsPPrivateFSData
Definition hfs.h:623
HfsFileTh
struct _HfsDirTh HfsFileTh
Definition hfs.h:273
HfsPExtDescriptor
struct _HfsPExtDescriptor HfsPExtDescriptor
Definition hfs.h:308
HfsCatalogKey
struct _HfsCatalogKey HfsCatalogKey
Definition hfs.h:215
HfsPDirTh
struct _HfsPThread HfsPDirTh
Definition hfs.h:456
HfsJJournalHeader
struct _HfsJJournalHeader HfsJJournalHeader
Definition hfs.h:517
HfsPPrivateLinkExtent
struct _HfsPPrivateLinkExtent HfsPPrivateLinkExtent
Definition hfs.h:603
HfsPFile
struct _HfsPFile HfsPFile
Definition hfs.h:448
HfsCatalog
struct _HfsCatalog HfsCatalog
Definition hfs.h:286
HfsDir
struct _HfsDir HfsDir
Definition hfs.h:238
HfsPVolumeHeader
struct _HfsPVolumeHeader HfsPVolumeHeader
Definition hfs.h:367
HfsJBlockListHeader
struct _HfsJBlockListHeader HfsJBlockListHeader
Definition hfs.h:534
HfsPNodeID
uint32_t HfsPNodeID
Definition hfs.h:321
HfsPPrivateGenericKey
struct _HfsPPrivateGenericKey HfsPPrivateGenericKey
Definition hfs.h:630
HfsPrivateFSData
struct _HfsPrivateFSData HfsPrivateFSData
Definition hfs.h:570
HfsPCatalog
struct _HfsPCatalog HfsPCatalog
Definition hfs.h:469
HfsPPerms
struct _HfsPPerms HfsPPerms
Definition hfs.h:301
HfsPFileTh
struct _HfsPThread HfsPFileTh
Definition hfs.h:457
HfsNodeDescriptor
struct _HfsNodeDescriptor HfsNodeDescriptor
Definition hfs.h:190
HfsPExtDataRec
HfsPExtDescriptor HfsPExtDataRec[HFSP_EXT_NB]
Definition hfs.h:309
HfsPrivateLinkExtent
struct _HfsPrivateLinkExtent HfsPrivateLinkExtent
Definition hfs.h:558
HfsExtentKey
struct _HfsExtentKey HfsExtentKey
Definition hfs.h:224
HfsPExtentKey
struct _HfsPExtentKey HfsPExtentKey
Definition hfs.h:479
HfsPDir
struct _HfsPDir HfsPDir
Definition hfs.h:427
HfsPPrivateFile
struct _HfsPPrivateFile HfsPPrivateFile
Definition hfs.h:590
HfsHeaderRecord
struct _HfsHeaderRecord HfsHeaderRecord
Definition hfs.h:205
HfsCPrivateLeafRec
struct _HfsCPrivateLeafRec HfsCPrivateLeafRec
Definition hfs.h:641
HfsPForkDataAttr
struct _HfsPForkDataAttr HfsPForkDataAttr
Definition hfs.h:492
HfsJJournalInfoBlock
struct _HfsJJournalInfoBlock HfsJJournalInfoBlock
Definition hfs.h:505
HfsPCatalogKey
struct _HfsPCatalogKey HfsPCatalogKey
Definition hfs.h:409
HfsExtDataRec
HfsExtDescriptor HfsExtDataRec[HFS_EXT_NB]
Definition hfs.h:135
name
char name[16]
Definition pc98.c:13
_HfsCPrivateLeafRec
Definition hfs.h:635
_HfsCPrivateLeafRec::record_number
unsigned int record_number
Definition hfs.h:639
_HfsCPrivateLeafRec::node_size
unsigned int node_size
Definition hfs.h:636
_HfsCPrivateLeafRec::record_pos
unsigned int record_pos
Definition hfs.h:638
_HfsCPrivateLeafRec::node_number
unsigned int node_number
Definition hfs.h:637
_HfsPPrivateExtent
Definition hfs.h:592
_HfsPPrivateExtent::sector_count
PedSector sector_count
Definition hfs.h:594
_HfsPPrivateExtent::start_sector
PedSector start_sector
Definition hfs.h:593
_HfsPPrivateFSData
Definition hfs.h:606
_HfsPPrivateFSData::jib_start_block
uint32_t jib_start_block
Definition hfs.h:617
_HfsPPrivateFSData::wrapper
PedFileSystem * wrapper
Definition hfs.h:607
_HfsPPrivateFSData::catalog_file
HfsPPrivateFile * catalog_file
Definition hfs.h:613
_HfsPPrivateFSData::dirty_alloc_map
uint8_t * dirty_alloc_map
Definition hfs.h:610
_HfsPPrivateFSData::bad_blocks_xtent_nb
unsigned int bad_blocks_xtent_nb
Definition hfs.h:619
_HfsPPrivateFSData::alloc_map
uint8_t * alloc_map
Definition hfs.h:609
_HfsPPrivateFSData::bad_blocks_loaded
char bad_blocks_loaded
Definition hfs.h:620
_HfsPPrivateFSData::extents_file
HfsPPrivateFile * extents_file
Definition hfs.h:612
_HfsPPrivateFSData::jl_start_block
uint32_t jl_start_block
Definition hfs.h:618
_HfsPPrivateFSData::vh
HfsPVolumeHeader * vh
Definition hfs.h:611
_HfsPPrivateFSData::allocation_file
HfsPPrivateFile * allocation_file
Definition hfs.h:615
_HfsPPrivateFSData::attributes_file
HfsPPrivateFile * attributes_file
Definition hfs.h:614
_HfsPPrivateFSData::free_geom
char free_geom
Definition hfs.h:621
_HfsPPrivateFSData::bad_blocks_xtent_list
HfsPPrivateLinkExtent * bad_blocks_xtent_list
Definition hfs.h:616
_HfsPPrivateFSData::plus_geom
PedGeometry * plus_geom
Definition hfs.h:608
_HfsPPrivateFile
Definition hfs.h:582
_HfsPPrivateFile::cache
HfsPExtDataRec cache
Definition hfs.h:587
_HfsPPrivateFile::sect_nb
PedSector sect_nb
Definition hfs.h:583
_HfsPPrivateFile::fs
PedFileSystem * fs
Definition hfs.h:584
_HfsPPrivateFile::start_cache
uint32_t start_cache
Definition hfs.h:588
_HfsPPrivateFile::first
HfsPExtDataRec first
Definition hfs.h:586
_HfsPPrivateFile::CNID
HfsPNodeID CNID
Definition hfs.h:585
_HfsPPrivateLinkExtent
Definition hfs.h:599
_HfsPPrivateLinkExtent::next
struct _HfsPPrivateLinkExtent * next
Definition hfs.h:601
_HfsPPrivateLinkExtent::extent
HfsPExtDescriptor extent
Definition hfs.h:600
_HfsPrivateFSData
Definition hfs.h:561
_HfsPrivateFSData::bad_blocks_xtent_list
HfsPrivateLinkExtent * bad_blocks_xtent_list
Definition hfs.h:566
_HfsPrivateFSData::mdb
HfsMasterDirectoryBlock * mdb
Definition hfs.h:563
_HfsPrivateFSData::bad_blocks_loaded
char bad_blocks_loaded
Definition hfs.h:568
_HfsPrivateFSData::bad_blocks_xtent_nb
unsigned int bad_blocks_xtent_nb
Definition hfs.h:567
_HfsPrivateFSData::alloc_map
uint8_t alloc_map[(1<< 16)/8]
Definition hfs.h:562
_HfsPrivateFSData::extent_file
HfsPrivateFile * extent_file
Definition hfs.h:564
_HfsPrivateFSData::catalog_file
HfsPrivateFile * catalog_file
Definition hfs.h:565
_HfsPrivateFile
Definition hfs.h:543
_HfsPrivateFile::CNID
uint32_t CNID
Definition hfs.h:546
_HfsPrivateFile::sect_nb
PedSector sect_nb
Definition hfs.h:544
_HfsPrivateFile::first
HfsExtDataRec first
Definition hfs.h:547
_HfsPrivateFile::start_cache
uint16_t start_cache
Definition hfs.h:549
_HfsPrivateFile::cache
HfsExtDataRec cache
Definition hfs.h:548
_HfsPrivateFile::fs
PedFileSystem * fs
Definition hfs.h:545
_HfsPrivateLinkExtent
Definition hfs.h:554
_HfsPrivateLinkExtent::extent
HfsExtDescriptor extent
Definition hfs.h:555
_HfsPrivateLinkExtent::next
struct _HfsPrivateLinkExtent * next
Definition hfs.h:556