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

  1. /* iso9660.h: */
  2.  
  3. #ifndef _ISO9660_H_
  4. #define _ISO9660_H_
  5.  
  6. #include "generic.h"
  7.  
  8. #ifndef _DCC
  9. #define __unaligned /* empty */
  10. #endif
  11.  
  12. typedef __unaligned struct directory_record {
  13.   unsigned char         length;
  14.   unsigned char         ext_attr_length;
  15.   unsigned long         extent_loc_i;
  16.   unsigned long         extent_loc_m;
  17.   unsigned long        data_length_i;
  18.   unsigned long        data_length_m;
  19.   unsigned char        year;
  20.   unsigned char        month;
  21.   unsigned char        day;
  22.   unsigned char        hour;
  23.   unsigned char        minute;
  24.   unsigned char        second;  
  25.   char            tz;
  26.   unsigned char        flags;
  27.   unsigned char        file_unit_size;
  28.   unsigned char        gap_size;
  29.   unsigned short    sequence_i;
  30.   unsigned short    sequence_m;
  31.   unsigned char        file_id_length;
  32.   char            file_id[1];
  33. } directory_record;
  34.  
  35. typedef char time_and_date[17];
  36.  
  37. typedef __unaligned struct prim_vol_desc {
  38.   unsigned char        type;
  39.   char            id[5];
  40.   unsigned char        version;
  41.   char            pad1;
  42.   char            system_id[32];
  43.   char            volume_id[32];
  44.   char            pad2[8];
  45.   unsigned long        space_size_i;
  46.   unsigned long        space_size_m;
  47.   char            pad3[32];
  48.   unsigned short    set_size_i;
  49.   unsigned short    set_size_m;
  50.   unsigned short    sequence_i;
  51.   unsigned short    sequence_m;
  52.   unsigned short    block_size_i;
  53.   unsigned short    block_size_m;
  54.   unsigned long        path_size_i;
  55.   unsigned long        path_size_m;
  56.   unsigned long         l_table;
  57.   unsigned long         opt_l_table;
  58.   unsigned long         m_table;
  59.   unsigned long         opt_m_table;
  60.   directory_record      root;
  61.   char            volume_set_id[128];
  62.   char            publisher_id[128];
  63.   char            data_preparer[128];
  64.   char            application_id[128];
  65.   char            copyright[37];
  66.   char            abstract_file_id[37];
  67.   char            bibliographic_id[37];
  68.   time_and_date        vol_creation;
  69.   time_and_date        vol_modification;
  70.   time_and_date        vol_expiration;
  71.   time_and_date        vol_effective;
  72.   unsigned char        file_structure_version;
  73.   char            pad4;
  74.   char            application_use[512];
  75.   char            reserved[653];
  76. } prim_vol_desc;
  77.  
  78. /* for internal use only: */
  79.  
  80. typedef struct iso_vol_info {
  81.   prim_vol_desc        pvd;
  82.   int            skip;
  83.   unsigned short    blockshift;
  84. } t_iso_vol_info;
  85.  
  86. typedef struct iso_obj_info {
  87.   directory_record    *dir;
  88.   unsigned long        parent_loc; /* for files only */
  89. } t_iso_obj_info;
  90.  
  91. t_bool Iso_Init_Vol_Info (VOLUME *p_volume, int p_skip, t_ulong p_offset);
  92. t_bool Uses_Iso_Protocol (CDROM *p_cdrom, t_ulong *p_offset);
  93. t_bool Uses_High_Sierra_Protocol (CDROM *p_cdrom);
  94. directory_record *Get_Directory_Record (VOLUME *p_volume,
  95.                     unsigned long p_location,
  96.                     unsigned long p_offset);
  97. CDROM_OBJ *Iso_Create_Directory_Obj (VOLUME *p_volume, unsigned long p_location);
  98.  
  99. #endif /* _ISO9660_H_ */
  100.