hfsplus

package
v0.4.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 16, 2019 License: MIT Imports: 0 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type BTHeaderRec

type BTHeaderRec struct {
	TreeDepth      uint16
	RootNode       uint32
	LeafRecords    uint32
	FirstLeafNode  uint32
	LastLeafNode   uint32
	NodeSize       uint16
	MaxKeyLength   uint16
	TotalNodes     uint32
	FreeNodes      uint32
	Reserved1      uint16
	ClumpSize      uint32 // misaligned
	BtreeType      uint8
	KeyCompareType uint8
	Attributes     uint32 // long aligned again
	Reserved3      [16]uint32
}

The B-tree header record contains general information about the B-tree such as its size, maximum key length, and the location of the first and last leaf nodes. The data type BTHeaderRec describes the structure of a header record.

type BTNodeDescriptor

type BTNodeDescriptor struct {
	FLink      uint32
	BLink      uint32
	Kind       int8
	Height     uint8
	NumRecords uint16
	Reserved   uint16
}

The node descriptor contains basic information about the node as well as forward and backward links to other nodes. The BTNodeDescriptor data type describes this structure.

type BlockInfo

type BlockInfo struct {
	Bnum  uint64
	Bsize uint32
	Next  uint32
}

The first element of the binfo array is used to indicate whether the transaction contains additional block lists. Each of the other elements of the binfo array represent a single block of data in the journal buffer which must be copied to its correct location on disk. The fields have the following meaning:

type BlockListHeader

type BlockListHeader struct {
	MaxBlocks uint16
	NumBlocks uint16
	BytesUsed uint32
	Checksum  uint32
	Pad       uint32
	Binfo     [1]BlockInfo
}

The block list header describes a list of blocks included in a transaction. A transaction may include several block lists if it modifies more blocks than can be represented in a single block list. The block list header is stored in a structure of type blockListHeader.

type ExtendedFileInfo

type ExtendedFileInfo struct {
	Reserved1           [4]int16
	ExtendedFinderFlags uint16
	Reserved2           int16
	PutAwayFolderID     int32
}

ExtendedFileInfo describes additional attributes for files used for Finder.

type ExtendedFolderInfo

type ExtendedFolderInfo struct {
	ScrollPosition      Point /* Scroll position (for icon views) */
	Reserved1           int32
	ExtendedFinderFlags uint16
	Reserved2           int16
	PutAwayFolderID     int32
}

ExtendedFolderInfo describes additional attributes for folders used for Finder.

type FileInfo

type FileInfo struct {
	FileType      OSType /* The type of the file */
	FileCreator   OSType /* The file's creator */
	FinderFlags   uint16
	Location      Point /* File's location in the folder. */
	ReservedField uint16
}

FileInfo describes attributes for files used for Finder.

type FolderInfo

type FolderInfo struct {
	WindowBounds Rect /* The position and dimension of the */
	/* folder's window */
	FinderFlags uint16
	Location    Point /* Folder's location in the parent */
	/* folder. If set to {0, 0}, the Finder */
	/* will place the item automatically */
	ReservedField uint16
}

FolderInfo describes attributes for folders used for Finder.

type FourCharCode

type FourCharCode uint32

FourCharCode is four 1-byte character packed together.

type HFSCatalogNodeID

type HFSCatalogNodeID uint32

A HFSCatalogNodeID (CNID) is assigned to each file or folder in the catalog file.

type HFSPlusAttrExtents

type HFSPlusAttrExtents struct {
	RecordType uint32
	Reserved   uint32
	Extents    HFSPlusExtentRecord
}

HFSPlusAttrExtents defines an extension attribute.

type HFSPlusAttrForkData

type HFSPlusAttrForkData struct {
	RecordType uint32
	Reserved   uint32
	TheFork    HFSPlusForkData
}

HFSPlusAttrForkData defines a fork data attribute.

type HFSPlusBSDInfo

type HFSPlusBSDInfo struct {
	OwnerID    uint32
	GroupID    uint32
	AdminFlags uint8
	OwnerFlags uint8
	FileMode   uint16
	Special    uint32
}

For each file and folder, HFS Plus maintains a record containing access permissions, defined by the HFSPlusBSDInfo structure.

type HFSPlusCatalogFile

type HFSPlusCatalogFile struct {
	RecordType       int16
	Flags            uint16
	Reserved1        uint32
	FileID           HFSCatalogNodeID
	CreateDate       uint32
	ContentModDate   uint32
	AttributeModDate uint32
	AccessDate       uint32
	BackupDate       uint32
	Permissions      HFSPlusBSDInfo
	UserInfo         FileInfo
	FinderInfo       ExtendedFileInfo
	TextEncoding     uint32
	Reserved2        uint32
	DataFork         HFSPlusForkData
	ResourceFork     HFSPlusForkData
}

The catalog file record is used in the catalog B-tree file to hold information about a particular file on the volume. The data of the record is described by the HFSPlusCatalogFile type.

type HFSPlusCatalogFolder

type HFSPlusCatalogFolder struct {
	RecordType       int16
	Flags            uint16
	Valence          uint32
	FolderID         HFSCatalogNodeID
	CreateDate       uint32
	ContentModDate   uint32
	AttributeModDate uint32
	AccessDate       uint32
	BackupDate       uint32
	Permissions      HFSPlusBSDInfo
	UserInfo         FolderInfo
	FinderInfo       ExtendedFolderInfo
	TextEncoding     uint32
	Reserved         uint32
}

The catalog folder record is used in the catalog B-tree file to hold information about a particular folder on the volume. The data of the record is described by the HFSPlusCatalogFolder type.

type HFSPlusCatalogKey

type HFSPlusCatalogKey struct {
	KeyLength uint16
	ParentID  HFSCatalogNodeID
	NodeName  HFSUniStr255
}

For a given file, folder, or thread record, the catalog file key consists of the parent folder's CNID and the name of the file or folder. This structure is described using the HFSPlusCatalogKey type.

type HFSPlusCatalogThread

type HFSPlusCatalogThread struct {
	RecordType int16
	Reserved   int16
	ParentID   HFSCatalogNodeID
	NodeName   HFSUniStr255
}

The catalog thread record is used in the catalog B-tree file to link a CNID to the file or folder record using that CNID. The data of the record is described by the HFSPlusCatalogThread type.

type HFSPlusExtentDescriptor

type HFSPlusExtentDescriptor struct {
	StartBlock uint32
	BlockCount uint32
}

The HFSPlusExtentDescriptor structure is used to hold information about a specific extent.

type HFSPlusExtentKey

type HFSPlusExtentKey struct {
	KeyLength  uint16
	ForkType   uint8
	Pad        uint8
	FileID     HFSCatalogNodeID
	StartBlock uint32
}

The HFSPlusExtentKey describes the structure of the key for the extents overflow file.

type HFSPlusExtentRecord

type HFSPlusExtentRecord [8]HFSPlusExtentDescriptor

A HFSPlusExtentRecord contains descriptors for eight extents.

type HFSPlusForkData

type HFSPlusForkData struct {
	LogicalSize uint64
	ClumpSize   uint32
	TotalBlocks uint32
	Extents     HFSPlusExtentRecord
}

HFS Plus maintains information about the contents of a file using the HFSPlusForkData structure.

type HFSPlusVolumeHeader

type HFSPlusVolumeHeader struct {
	Signature          uint16
	Version            uint16
	Attributes         uint32
	LastMountedVersion uint32
	JournalInfoBlock   uint32
	CreateDate         uint32
	ModifyDate         uint32
	BackupDate         uint32
	CheckedDate        uint32
	FileCount          uint32
	FolderCount        uint32
	BlockSize          uint32
	TotalBlocks        uint32
	FreeBlocks         uint32
	NextAllocation     uint32
	RsrcClumpSize      uint32
	DataClumpSize      uint32
	NextCatalogID      HFSCatalogNodeID
	WriteCount         uint32
	EncodingsBitmap    uint64
	FinderInfo         [8]uint32
	AllocationFile     HFSPlusForkData
	ExtentsFile        HFSPlusForkData
	CatalogFile        HFSPlusForkData
	AttributesFile     HFSPlusForkData
	StartupFile        HFSPlusForkData
}

The HFSPlusVolumeHeader contains information about the volume as a whole, including the location of other key structures in the volume.

type HFSUniStr255

type HFSUniStr255 struct {
	Length  uint16
	UniChar [255]uint16
}

HFSUniStr255 defines file and folder names on HFS Plus which consist of up to 255 Unicode characters with a preceding 16-bit length.

type HotFileKey

type HotFileKey struct {
	KeyLength   uint16
	ForkType    uint8
	Pad         uint8
	Temperature uint32
	FileID      uint32
}

HotFileKey is a key in the hot file B-tree.

type HotFilesInfo

type HotFilesInfo struct {
	Magic       uint32
	Version     uint32
	Duration    uint32 /* duration of sample period */
	Timebase    uint32 /* recording period start time */
	Timeleft    uint32 /* recording period stop time */
	Threshold   uint32
	Maxfileblks uint32
	Maxfilecnt  uint32
	Tag         [32]uint8
}

The B-tree's user data record contains information about hot file recording. The format of the user data is described by the HotFilesInfo structure:

type JournalHeader

type JournalHeader struct {
	Magic     uint32
	Endian    uint32
	Start     uint64
	End       uint64
	Size      uint64
	BlhdrSize uint32
	Checksum  uint32
	JhdrSize  uint32
}

The journal begins with a journal header, whose main purpose is to describe the location of transactions in the journal buffer. The journal header is stored using the JournalHeader data type.

type JournalInfoBlock

type JournalInfoBlock struct {
	Flags           uint32
	DeviceSignature [8]uint32
	Offset          uint64
	Size            uint64
	Reserved        [32]uint32
}

The journal info block describes where the journal header and journal buffer are stored. The journal info block is stored at the beginning of the allocation block whose number is stored in the journalInfoBlock field of the volume header. The journal info block is described by the data type JournalInfoBlock.

type OSType

type OSType FourCharCode

OSType is a 32-bit value made by packing four 1-byte characters together.

type Point

type Point struct {
	V int16
	H int16
}

Point defines a location of a file or folder in a window.

type Rect

type Rect struct {
	Top    int16
	Left   int16
	Bottom int16
	Right  int16
}

Rect defines a folder's window rectangle

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL