8 #include <aros/macros.h>
10 #define AROS_BIG_ENDIAN 1
13 typedef struct directory_record
{
15 unsigned char ext_attr_length
;
18 uint32_t extent_loc_m
;
20 uint32_t extent_loc_i
;
25 uint32_t data_length_m
;
27 uint32_t data_length_i
;
38 unsigned char file_unit_size
;
39 unsigned char gap_size
;
41 unsigned short sequence
;
42 unsigned short sequence_m
;
44 unsigned short sequence_i
;
45 unsigned short sequence
;
47 unsigned char file_id_length
;
49 } __attribute__((packed
) )directory_record
;
51 /* Some of file flags we use */
52 #define FILE_FLAG_HIDDEN 0x01
53 #define FILE_FLAG_DIRECTORY 0x02
54 #define FILE_FLAG_ASSOCIATED 0x04
56 typedef char time_and_date
[17];
58 typedef struct prim_vol_desc
{
61 unsigned char version
;
68 uint32_t space_size_m
;
70 uint32_t space_size_i
;
75 unsigned short set_size
;
76 unsigned short set_size_m
;
78 unsigned short set_size_i
;
79 unsigned short set_size
;
82 unsigned short sequence
;
83 unsigned short sequence_m
;
85 unsigned short sequence_i
;
86 unsigned short sequence
;
89 unsigned short block_size
;
90 unsigned short block_size_m
;
92 unsigned short block_size_i
;
93 unsigned short block_size
;
106 uint32_t opt_m_table
;
109 uint32_t opt_i_table
;
113 directory_record root
;
114 char volume_set_id
[128];
115 char publisher_id
[128];
116 char data_preparer
[128];
117 char application_id
[128];
119 char abstract_file_id
[37];
120 char bibliographic_id
[37];
121 time_and_date vol_creation
;
122 time_and_date vol_modification
;
123 time_and_date vol_expiration
;
124 time_and_date vol_effective
;
125 unsigned char file_structure_version
;
127 char application_use
[512];
131 /* for internal use only: */
133 typedef struct iso_vol_info
{
136 unsigned short blockshift
;
139 typedef struct iso_obj_info
{
140 directory_record
*dir
;
141 uint32_t parent_loc
; /* for files only */
144 t_bool
Iso_Init_Vol_Info(VOLUME
*p_volume
, int p_skip
, t_ulong p_offset
, t_ulong svd_offset
);
145 t_bool
Uses_Iso_Protocol(CDROM
*p_cdrom
, t_ulong
*p_offset
);
146 t_bool
Uses_High_Sierra_Protocol(CDROM
*p_cdrom
);
147 directory_record
*Get_Directory_Record
148 (VOLUME
*p_volume
, uint32_t p_location
, uint32_t p_offset
);
149 CDROM_OBJ
*Iso_Create_Directory_Obj(VOLUME
*p_volume
, uint32_t p_location
);
152 #define l_table m_table
153 #define opt_l_table opt_m_table
155 #define l_table i_table
156 #define opt_l_table opt_i_table
159 #endif /* _ISO9660_H_ */