summaryrefslogtreecommitdiffstats
path: root/qemu/roms/openbios/fs/hfsplus/include/hfsp.h
diff options
context:
space:
mode:
Diffstat (limited to 'qemu/roms/openbios/fs/hfsplus/include/hfsp.h')
-rw-r--r--qemu/roms/openbios/fs/hfsplus/include/hfsp.h305
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;