diff options
Diffstat (limited to 'qemu/roms/openbios/fs/hfsplus/include/hfsp.h')
-rw-r--r-- | qemu/roms/openbios/fs/hfsplus/include/hfsp.h | 305 |
1 files changed, 0 insertions, 305 deletions
diff --git a/qemu/roms/openbios/fs/hfsplus/include/hfsp.h b/qemu/roms/openbios/fs/hfsplus/include/hfsp.h deleted file mode 100644 index e916473c6..000000000 --- a/qemu/roms/openbios/fs/hfsplus/include/hfsp.h +++ /dev/null @@ -1,305 +0,0 @@ -/* - * libhfsp - library for reading and writing Macintosh HFS+ volumes - * - * This file includes definitions for the structures found on - * HFS+ Volumes. The structures are further wrapped by struct - * found in libhfsp.h. fucntions on those enhanced structures - * are found in files mentioned in comments below. - * - * Copyright (C) 2000 Klaus Halfmann <khalfmann@libra.de> - * Original code 1996-1998 by Robert Leslie <rob@mars.rog> - * other work 2000 from Brad Boyer (flar@pants.nu) - * - * 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 2 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, write to the Free Software - * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, - * MA 02110-1301, USA. - * - * $Id: hfsp.h,v 1.17 2000/10/20 06:16:52 hasi Exp $ - */ - -#define HFSP_BLOCKSZ 512 /* A sector for Apple is always 512 bytes */ -#define HFSP_BLOCKSZ_BITS 9 /* 1<<9 == 512 */ -#define HFSP_VOLHEAD_SIG 0x482B /* 'H+' */ - -/* HFS+ includes POSIX permissions , although marked as reserved they will be - * used as such. Is ignored by MacOS 8-9 but probably not by MacOS X. - */ -typedef struct { - UInt32 owner; - UInt32 group; - UInt32 mode; - UInt32 dev; -} hfsp_perm; - -/* A single contiguous area (fragment) of a file */ -typedef struct { - UInt32 start_block; - UInt32 block_count; -} hfsp_extent; - -/* A file may contain up to 8 normale extents, all other - are found in some extra extent area */ -typedef hfsp_extent hfsp_extent_rec[8]; - -/* Information for a "Fork" in a file - * Forks are the "usual" DATA and RSRC forks or special files - * (e.g. the Volume Bitmap) - */ -typedef struct { - UInt64 total_size; // logical size - UInt32 clump_size; // number of bytes to preallocate - UInt32 total_blocks; - hfsp_extent_rec extents; // initial (8) extents -} hfsp_fork_raw; - -/* HFS+ Volume Header - * Always found at block 2 of the disk, a copy is stored - * at the second to last block of the disk. - */ -typedef struct hfsp_vh { - UInt16 signature; // must be HFSPLUS_VOLHEAD_SIG 'H+' - UInt16 version; // currently 4, ignored - UInt32 attributes; // See bit constants below - UInt32 last_mount_vers; - // Use a registered creator code here (what do we use ?) - // Mac OS uses '8.10' well - UInt32 reserved; - - UInt32 create_date; // local time ! - UInt32 modify_date; // GMT (?) - UInt32 backup_date; // GMT (?) - UInt32 checked_date; // GMT (?) fsck ? - - UInt32 file_count; - // not including special files but including DATA and RSRC forks - UInt32 folder_count; // excluding the root folder - - UInt32 blocksize; - // must be multiple of HFSPLUS_SECTOR_SIZE, - // should be a multiple of 4k for harddisk - UInt32 total_blocks; - UInt32 free_blocks; - // The total number of unused allocation blocks on the disk. - - UInt32 next_alloc; - // hint wher to search for next allocation blocks - UInt32 rsrc_clump_sz; - // default clump size for rsrc forks - UInt32 data_clump_sz; - // default clump size for data forks - UInt32 next_cnid; - // next unused catalog id - UInt32 write_count; - // increment on every mount (and write ?) - UInt64 encodings_bmp; - // for every encoding used on the disk a bit is set - // ignored but eventually must be cared for - Char finder_info[32]; - hfsp_fork_raw alloc_file; - // stores bitmap of use/free blocks - hfsp_fork_raw ext_file; - // stores oferflow extents - hfsp_fork_raw cat_file; - // This contains the root directory - hfsp_fork_raw attr_file; - hfsp_fork_raw start_file; - // a special startup file may be described here (used by ?) -} hfsp_vh; - -/* HFS+ volume attributes */ -/* 0-6 reserved, may be used in memory only */ -#define HFSPLUS_VOL_RESERVED1 0x000000FF -#define HFSPLUS_VOL_HARDLOCK 0x00000080 // Used in Memory by finder only -#define HFSPLUS_VOL_UNMNT 0x00000100 - // clear this bit when mounting, set as last step of unmounting - // This is checked by (slower) ROM code -#define HFSPLUS_VOL_SPARE_BLK 0x00000200 -#define HFSPLUS_VOL_NOCACHE 0x00000400 - // in case of RAM or ROM disk (try a HFS+ Ramdisk :) -#define HFSPLUS_VOL_INCNSTNT 0x00000800 - // Reverse meaning as of HFSPLUS_VOL_UNMNT - // This is checked by (faster) Mac OS code -/* 12-14 reserved */ -#define HFSPLUS_VOL_RESERVED2 0x00007000 -#define HFSPLUS_VOL_SOFTLOCK 0x00008000 -#define HFSPLUS_VOL_RESERVED3 0xFFFF0000 - -/* HFS+ Btree node descriptor */ -typedef struct { - UInt32 next; /* pointer to next node of this kind, or 0 */ - UInt32 prev; /* pointer to previous node of this kind, or 0 */ - UInt8 kind; /* see below */ - UInt8 height; /* root node starts with 0 */ - UInt16 num_rec; /* number of records in this node */ - UInt16 reserved; /* fill up to 4 byte alignment */ -} btree_node_desc; - -/* HFS+ Btree Node types */ -#define HFSP_NODE_NDX 0x00 -#define HFSP_NODE_HEAD 0x01 -#define HFSP_NODE_MAP 0x02 -#define HFSP_NODE_LEAF 0xFF - -#define HFSP_CATALOG_MIN_NODE_SIZE 0x1000 -#define HFSP_ATTRMIN_DOE_SIZE 0x1000 - -/* The record offsets are found at the end of the fork - * containing the Btree */ - -typedef UInt16 btree_record_offset; - -typedef struct { - UInt16 depth; - // equal to height of btree_node_desc - UInt32 root; - // root node of the hierarchy - UInt32 leaf_count; - UInt32 leaf_head; - UInt32 leaf_tail; - UInt16 node_size; - // node size of _all_ nodes in this fork - UInt16 max_key_len; - UInt32 node_count; - // count of all (free and used) nodes in tree - UInt32 free_nodes; - UInt16 reserved1; - UInt32 clump_size; - // ignored my MacOS used by ? - UInt8 btree_type; - // always 0 for HFS+ - UInt8 reserved2; - UInt32 attributes; - // see below - UInt32 reserved3[16]; -} btree_head; - -/* BTree attributes */ -#define HFSPLUS_BAD_CLOSE 0x01 - // Btree was not properly closed and should be checked - // not used for HFS+ but reserved -#define HFSPLUS_TREE_BIGKEYS 0x02 - // always set for HFS+ -#define HFSPLUS_TREE_VAR_NDXKEY_SIZE 0x04 - // use variable length index nodes, always set for catalog btree, - // always cleared for extents btree. - -#define HFSPLUS_TREE_UNUSED 0xFFFFFFF8 - -/* Some special File ID numbers */ -#define HFSP_POR_CNID 1 /* Parent Of the Root */ -#define HFSP_ROOT_CNID 2 /* ROOT directory */ -#define HFSP_EXT_CNID 3 /* EXTents B-tree */ -#define HFSP_CAT_CNID 4 /* CATalog B-tree */ -#define HFSP_BAD_CNID 5 /* BAD blocks file */ -#define HFSP_ALLOC_CNID 6 /* ALLOCation file */ -#define HFSP_START_CNID 7 /* STARTup file */ -#define HFSP_ATTR_CNID 8 /* ATTRibutes file */ -#define HFSP_EXCH_CNID 15 /* ExchangeFiles temp id */ -#define HFPS_MIN_CNID 15 /* Minimum expected value */ - -/* Unicode String */ -typedef struct { - UInt16 strlen; - UInt16 name[255]; // unicode charcters -} hfsp_unistr255; - -/* HFS+ catalog entry key */ -typedef struct { - UInt16 key_length; /* excluding length */ - UInt32 parent_cnid; - hfsp_unistr255 name; -} hfsp_cat_key; - -/* HFS+ exnteds entry key */ -typedef struct { - UInt16 key_length; /* excluding length */ - UInt8 fork_type; /* Seee below */ - UInt8 filler; - UInt32 file_id; - UInt32 start_block; -} hfsp_extent_key; - -#define HFSP_EXTENT_DATA 0x00 -#define HFSP_EXTENT_RSRC 0xFF - -/* The key is followed by a record, an index or some other data */ - -/* The types of these records are defined as follows */ - -#define HFSP_FOLDER 0x0001 // entry fo a Folder -#define HFSP_FILE 0x0002 // entry for a File -#define HFSP_FOLDER_THREAD 0x0003 - // Like '.' in unix, identifies the folder by its id, only -#define HFSP_FILE_THREAD 0x0004 - // Im unsure if this is used by HFS+, too - -/* HFS+ folder data (part of an hfsp_cat_entry) */ -typedef struct { - UInt16 flags; /* no flags defined yet */ - UInt32 valence; /* Numer of files and folders contained in folder */ - UInt32 id; - UInt32 create_date; // GMT - UInt32 content_mod_date; // GMT - UInt32 attribute_mod_date; // GMT - UInt32 access_date; // GMT - UInt32 backup_date; // GMT - hfsp_perm permissions; - DInfo user_info; - DXInfo finder_info; - UInt32 text_encoding; - // hint fo the finder what encoding to use, unused here - UInt32 reserved; -} hfsp_cat_folder; - -/* HFS+ file data (part of a cat_entry) */ -typedef struct { - UInt16 flags; /* See below */ - UInt32 reserved1; - UInt32 id; - UInt32 create_date; - UInt32 content_mod_date; - UInt32 attribute_mod_date; - UInt32 access_date; - UInt32 backup_date; - hfsp_perm permissions; - FInfo user_info; - FXInfo finder_info; - UInt32 text_encoding; - UInt32 reserved2; - - hfsp_fork_raw data_fork; - hfsp_fork_raw res_fork; -} hfsp_cat_file; - -/* File attribute bits */ -#define HFSP_FILE_LOCKED 0x0001 -#define HFSP_THREAD_EXISTS 0x0002 /* Always set in HFS+ */ - -/* HFS+ catalog thread (part of a cat_entry) */ -typedef struct { - UInt16 reserved; - UInt32 parentID; - hfsp_unistr255 nodeName; -} hfsp_cat_thread; - - -/* A data record in the catalog tree */ -typedef struct { - UInt16 type; - union { - hfsp_cat_folder folder; - hfsp_cat_file file; - hfsp_cat_thread thread; - } u; -} hfsp_cat_entry; |