Imported Upstream version 1.1.11
[platform/upstream/cdrkit.git] / wodim / iso9660.h
1 /*
2  * This file has been modified for the cdrkit suite.
3  *
4  * The behaviour and appearence of the program code below can differ to a major
5  * extent from the version distributed by the original author(s).
6  *
7  * For details, see Changelog file distributed with the cdrkit package. If you
8  * received this file from another source then ask the distributing person for
9  * a log of modifications.
10  *
11  */
12
13 /* @(#)iso9660.h        1.5 04/03/02 Copyright 1996, 2004 J. Schilling */
14 /*
15  *      Copyright (c) 1996, 2004 J. Schilling
16  */
17 /*
18  * This program is free software; you can redistribute it and/or modify
19  * it under the terms of the GNU General Public License version 2
20  * as published by the Free Software Foundation.
21  *
22  * This program is distributed in the hope that it will be useful,
23  * but WITHOUT ANY WARRANTY; without even the implied warranty of
24  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
25  * GNU General Public License for more details.
26  *
27  * You should have received a copy of the GNU General Public License along with
28  * this program; see the file COPYING.  If not, write to the Free Software
29  * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
30  */
31
32 #define _delta(from, to)        ((to) - (from) + 1)
33
34 #define VD_BOOT         0
35 #define VD_PRIMARY      1
36 #define VD_SUPPLEMENT   2
37 #define VD_PARTITION    3
38 #define VD_TERM         255
39
40 #define VD_ID           "CD001"
41
42 struct  iso9660_voldesc {
43         char    vd_type         [_delta(1, 1)];
44         char    vd_id           [_delta(2, 6)];
45         char    vd_version      [_delta(7, 7)];
46         char    vd_fill         [_delta(8, 2048)];
47 };
48
49 struct  iso9660_boot_voldesc {
50         char    vd_type         [_delta(1, 1)];
51         char    vd_id           [_delta(2, 6)];
52         char    vd_version      [_delta(7, 7)];
53         char    vd_bootsys      [_delta(8, 39)];
54         char    vd_bootid       [_delta(40, 71)];
55         char    vd_bootcode     [_delta(72, 2048)];
56 };
57
58 struct  iso9660_pr_voldesc {
59         char    vd_type                 [_delta(1,      1)];
60         char    vd_id                   [_delta(2,      6)];
61         char    vd_version              [_delta(7,      7)];
62         char    vd_unused1              [_delta(8,      8)];
63         char    vd_system_id            [_delta(9,      40)];
64         char    vd_volume_id            [_delta(41,     72)];
65         char    vd_unused2              [_delta(73,     80)];
66         char    vd_volume_space_size    [_delta(81,     88)];
67         char    vd_unused3              [_delta(89,     120)];
68         char    vd_volume_set_size      [_delta(121,    124)];
69         char    vd_volume_seq_number    [_delta(125,    128)];
70         char    vd_lbsize               [_delta(129,    132)];
71         char    vd_path_table_size      [_delta(133,    140)];
72         char    vd_pos_path_table_l     [_delta(141,    144)];
73         char    vd_opt_pos_path_table_l [_delta(145,    148)];
74         char    vd_pos_path_table_m     [_delta(149,    152)];
75         char    vd_opt_pos_path_table_m [_delta(153,    156)];
76         char    vd_root_dir             [_delta(157,    190)];
77         char    vd_volume_set_id        [_delta(191,    318)];
78         char    vd_publisher_id         [_delta(319,    446)];
79         char    vd_data_preparer_id     [_delta(447,    574)];
80         char    vd_application_id       [_delta(575,    702)];
81         char    vd_copyr_file_id        [_delta(703,    739)];
82         char    vd_abstr_file_id        [_delta(740,    776)];
83         char    vd_bibl_file_id         [_delta(777,    813)];
84         char    vd_create_time          [_delta(814,    830)];
85         char    vd_mod_time             [_delta(831,    847)];
86         char    vd_expiry_time          [_delta(848,    864)];
87         char    vd_effective_time       [_delta(865,    881)];
88         char    vd_file_struct_vers     [_delta(882,    882)];
89         char    vd_reserved1            [_delta(883,    883)];
90         char    vd_application_use      [_delta(884,    1395)];
91         char    vd_fill                 [_delta(1396,   2048)];
92 };
93
94 struct  iso9660_dir {
95         char    dr_len                  [_delta(1,      1)];
96         char    dr_eattr_len            [_delta(2,      2)];
97         char    dr_eattr_pos            [_delta(3,      10)];
98         char    dr_data_len             [_delta(11,     18)];
99         char    dr_recording_time       [_delta(19,     25)];
100         char    dr_file_flags           [_delta(26,     26)];
101         char    dr_file_unit_size       [_delta(27,     27)];
102         char    dr_interleave_gap       [_delta(28,     28)];
103         char    dr_volume_seq_number    [_delta(29,     32)];
104         char    dr_file_name_len        [_delta(33,     33)];
105         char    dr_file_name            [_delta(34,     34)];
106 };
107
108 struct  iso9660_dtime {
109         unsigned char   dt_year;
110         unsigned char   dt_month;
111         unsigned char   dt_day;
112         unsigned char   dt_hour;
113         unsigned char   dt_minute;
114         unsigned char   dt_second;
115                 char    dt_gmtoff;
116 };
117
118 struct  iso9660_ltime {
119         char    lt_year                 [_delta(1,      4)];
120         char    lt_month                [_delta(5,      6)];
121         char    lt_day                  [_delta(7,      8)];
122         char    lt_hour                 [_delta(9,      10)];
123         char    lt_minute               [_delta(11,     12)];
124         char    lt_second               [_delta(13,     14)];
125         char    lt_hsecond              [_delta(15,     16)];
126         char    lt_gmtoff               [_delta(17,     17)];
127 };
128
129 struct iso9660_path_table {
130         char    pt_di_len               [_delta(1,      1)];
131         char    pt_eattr_len            [_delta(2,      2)];
132         char    pt_eattr_pos            [_delta(3,      6)];
133         char    pt_di_parent            [_delta(7,      8)];
134         char    pt_name                 [_delta(9,      9)];
135 };
136
137 struct iso9660_eattr {
138         char    ea_owner                [_delta(1,      4)];
139         char    ea_group                [_delta(5,      8)];
140         char    ea_perm                 [_delta(9,      10)];
141         char    ea_ctime                [_delta(11,     27)];
142         char    ea_mtime                [_delta(28,     44)];
143         char    ea_extime               [_delta(45,     61)];
144         char    ea_eftime               [_delta(62,     78)];
145         char    ea_record_format        [_delta(79,     79)];
146         char    ea_record_attr          [_delta(80,     80)];
147         char    ea_record_len           [_delta(81,     84)];
148         char    ea_system_id            [_delta(85,     116)];
149         char    ea_system_use           [_delta(117,    180)];
150         char    ea_version              [_delta(181,    181)];
151         char    ea_esc_seq_len          [_delta(182,    182)];
152         char    ea_reserved1            [_delta(183,    246)];
153         char    ea_appl_use_len         [_delta(247,    250)];
154         char    ea_appl_use             [_delta(251,    251)];  /* actually more */
155 /*      char    ea_esc_seq              [_delta(xxx,    xxx)];  */
156
157 };
158
159 #define PERM_MB_ONE     0xAAAA
160
161 #define PERM_RSYS       0x0001
162 #define PERM_XSYS       0x0004
163
164 #define PERM_RUSR       0x0010
165 #define PERM_XUSR       0x0040
166
167 #define PERM_RGRP       0x0100
168 #define PERM_XGRP       0x0400
169
170 #define PERM_ROTH       0x1000
171 #define PERM_XOTH       0x4000
172
173
174 #define GET_UBYTE(a)    a_to_u_byte(a)
175 #define GET_SBYTE(a)    a_to_byte(a)
176 #define GET_SHORT(a)    a_to_u_2_byte(&((unsigned char *) (a))[0])
177 #define GET_BSHORT(a)   a_to_u_2_byte(&((unsigned char *) (a))[2])
178 #define GET_INT(a)      a_to_4_byte(&((unsigned char *) (a))[0])
179 #define GET_LINT(a)     la_to_4_byte(&((unsigned char *) (a))[0])
180 #define GET_BINT(a)     a_to_4_byte(&((unsigned char *) (a))[4])