home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 4 / FreshFish_May-June1994.bin / useful / dist / disk / cdrom / amicdrom / hfs.h < prev    next >
C/C++ Source or Header  |  1994-01-07  |  3KB  |  156 lines

  1. /* hfs.h: */
  2.  
  3. #ifndef _DCC
  4. #define __unaligned /* empty */
  5. #endif
  6.  
  7. typedef struct ext_descr {
  8.   t_ushort    StABN;
  9.   t_ushort    NumABlks;
  10. } t_ext_descr;
  11.  
  12. typedef t_ext_descr t_extdatarec[3];
  13.  
  14. typedef __unaligned struct mdb {
  15.   t_ushort    SigWord;
  16.   t_ulong    CrDate;
  17.   t_ulong    LsMod;
  18.   t_ushort    Atrb;
  19.   t_ushort    NmFls;
  20.   t_ushort    VBMSt;
  21.   t_ushort    AllocPtr;
  22.   t_ushort    NmAlBlks;
  23.   t_ulong    AlBlkSiz;
  24.   t_ulong    ClpSiz;
  25.   t_ushort    AlBlSt;
  26.   t_ulong    NxtCNID;
  27.   t_ushort    FreeBks;
  28.   t_uchar    VolNameLen;
  29.   t_uchar    VolName[27];
  30.   t_ulong    VolBkUp;
  31.   t_ushort    VSeqNum;
  32.   t_ulong    WrCnt;
  33.   t_ulong    XTClpSiz;
  34.   t_ulong    CTClpSiz;
  35.   t_ushort    NmRtDirs;
  36.   t_ulong    FilCnt;
  37.   t_ulong    DirCnt;
  38.   t_ulong    FndrInfo[8];
  39.   t_ushort    VCSize;
  40.   t_ushort    VBMCSize;
  41.   t_ushort    CtlCSize;
  42.   t_ulong    XTFlSize;
  43.   t_extdatarec    XTExtRec;
  44.   t_ulong    CTFlSize;
  45.   t_extdatarec    CTExtRec;
  46. } t_mdb;
  47.  
  48. typedef __unaligned struct node_descr {
  49.   t_ulong    FLink;
  50.   t_ulong    BLink;
  51.   t_uchar    Type;
  52.   t_uchar    NHeight;
  53.   t_ushort    NRecs;
  54.   t_ushort    Reserved;    
  55. } t_node_descr;
  56.  
  57. typedef __unaligned struct hdr_node {
  58.   t_node_descr    node_descr;
  59.   t_ushort    Depth;
  60.   t_ulong    Root;
  61.   t_ulong    NRecs;
  62.   t_ulong    FNode;
  63.   t_ulong    LNode;
  64.   t_ushort    NodeSize;
  65.   t_ushort    KeyLen;
  66.   t_ulong    NNodes;
  67.   t_ulong    Free;
  68. } t_hdr_node;
  69.  
  70. typedef __unaligned struct idx_record {
  71.   char        length;    /* always 0x25 */
  72.   char        reserved;
  73.   t_ulong    parent_id;
  74.   t_uchar    name_length;
  75.   char        name[31];
  76.   t_ulong    pointer;
  77. } t_idx_record;
  78.  
  79. typedef __unaligned struct leaf_record {
  80.   char        length;
  81.   char        reserved;
  82.   t_ulong    parent_id;
  83.   t_uchar    name_length;
  84.   char        name[1];
  85. } t_leaf_record;
  86.  
  87. typedef __unaligned struct dir_record {
  88.   char        type;
  89.   char        reserved;
  90.   t_ushort    Flags;
  91.   t_ushort    Val;
  92.   t_ulong    DirID;
  93.   t_ulong    CrDat;
  94.   t_ulong    MdDat;
  95.   t_ulong    BkDat;
  96. } t_dir_record;
  97.  
  98. typedef __unaligned struct file_record {
  99.   char        type;
  100.   char        reserved;
  101.   char        Flags;
  102.   char        Typ;
  103.   char        FInfo[16];
  104.   t_ulong    FlNum;
  105.   t_ushort    StBlk;
  106.   t_ulong    LgLen;
  107.   t_ulong    PyLen;
  108.   t_ushort    RStBlk;
  109.   t_ulong    RLgLen;
  110.   t_ulong    RPyLen;
  111.   t_ulong    CrDat;
  112.   t_ulong    MdDat;
  113.   t_ulong    BkDat;
  114.   char        FXInfo[16];
  115.   t_ushort    ClpSize;
  116.   t_extdatarec    ExtRec;
  117.   t_extdatarec    RExtRec;
  118.   t_ulong    Resrv;
  119. } t_file_record;
  120.  
  121. typedef __unaligned struct dir_thread_record {
  122.   char        type;
  123.   char        reserved;
  124.   t_ulong    Resrv[2];
  125.   t_ulong    ParID;
  126.   t_uchar    CNameLen;
  127.   t_uchar    CName[31];
  128. } t_dir_thread_record;
  129.  
  130. typedef __unaligned struct file_thread_record {
  131.   char        type;
  132.   char        reserved;
  133.   t_ulong    Resrv[2];
  134.   t_ulong    ParID;
  135.   t_uchar    CNameLen;
  136.   t_uchar    CName[31];
  137. } t_file_thread_record;
  138.  
  139. typedef union catalog_record {
  140.   t_dir_record        d;
  141.   t_file_record        f;
  142.   t_dir_thread_record    dt;
  143.   t_file_thread_record    ft;
  144. } t_catalog_record;
  145.  
  146. int HFS_Find_Master_Directory_Block (CDROM *p_cd, t_mdb *p_mdb);
  147. t_bool Uses_HFS_Protocol (CDROM *p_cd, int *p_skip);
  148. t_bool HFS_Get_Header_Node (CDROM *p_cd, t_ulong p_mdb_pos,
  149.                 t_mdb *p_mdb, t_hdr_node *p_hdr_node);
  150. t_node_descr *HFS_Get_Node (CDROM *p_cd, t_ulong p_mdb_pos, t_mdb *p_mdb,
  151.                 t_ulong p_node);
  152. void Convert_Mac_Characters (char *p_buf, int p_buf_len);
  153.  
  154. t_bool HFS_Init_Vol_Info (VOLUME *p_volume, int p_start_block);
  155.  
  156.