blob: ae4fd44ce55630beeca628a466bcb60bac821d8b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
|
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* 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.
*
*/
#ifndef __CDTYPES_H__
#define __CDTYPES_H__
typedef unsigned int uint32;
typedef unsigned short uint16;
typedef unsigned char uint8;
typedef signed int int32;
typedef signed short int16;
typedef signed char int8;
typedef struct {
uint8 len_di;
uint8 attributeLength;
uint8 lba[4];
uint16 parent;
char name[256]; // arbitrary number
} ISOPathTableRecord __attribute__ ((packed));
typedef struct {
uint8 year; // Number of years since 1900
uint8 month; // Month of the year from 1 to 12
uint8 day; // Day of the Month from 1 to 31
uint8 hour; // Hour of the day from 0 to 23
uint8 min; // Minute of the hour from 0 to 59
uint8 sec; // second of the minute from 0 to 59
uint8 gmtOff; // Offset from Greenwich Mean Time in number of 15 minute intervals from -48(West) to +52(East)
uint8 padding[10];
} ISOTime __attribute__ ((packed));
typedef struct {
uint8 year; // Number of years since 1900
uint8 month; // Month of the year from 1 to 12
uint8 day; // Day of the Month from 1 to 31
uint8 hour; // Hour of the day from 0 to 23
uint8 min; // Minute of the hour from 0 to 59
uint8 sec; // second of the minute from 0 to 59
uint8 gmtOff; // Offset from Greenwich Mean Time in number of 15 minute intervals from -48(West) to +52(East)
//uint8 padding[10];
} ISOFileTime __attribute__ ((packed));
typedef struct {
uint8 len_dr;
uint8 attributeLength;
uint8 lba[4];
uint8 lba_BE[4];
uint8 size[4];
uint8 size_BE[4];
ISOFileTime time;
uint8 flags;
uint8 fieldSize;
uint8 gapSize;
uint8 sequenceNumber[4];
uint8 len_fi;
char name[256]; // arbitrary number
} ISODirectoryRecord __attribute__ ((packed));
typedef struct {
char volumeSetId[128];
char publisherId[128];
char preparerId[128];
char applicationId[128];
char copyrightId[37];
char abstractId[37];
char bibliographicId[37];
} ISOIds __attribute__ ((packed));
typedef struct {
uint16 length;
uint32 tocLBA;
uint32 tocLBA_bigend;
uint32 tocSize;
uint32 tocSize_bigend;
uint8 dateStamp[8];
uint8 reserved[6];
uint8 reserved2;
uint8 reserved3;
} ISORoot __attribute__((packed)); // 0x22
typedef struct {
uint8 type; // 0x00
char identifier[5]; // 0x01
uint8 version; // 0x06
uint8 reserved1; // 0x07
char systemIdentifier[32]; // 0x08
char volumeIdentifier[32]; // 0x28
uint8 reserved2[8]; // 0x48
uint32 volumeSpaceSize; // 0x50
uint32 volumeSpaceSizeBE; // 0x54
char reserved3[32]; // 0x58
uint32 volumeSetSize; // 0x78
uint32 volumeSequenceNumber; // 0x7C
uint32 logicalBlockSize; // 0x80
uint32 pathTableSize; // 0x84
uint32 pathTableSizeBE; // 0x88
uint32 pathTablePos; // 0x8C
uint32 pathTable2Pos; // 0x90
uint32 pathTablePosBE; // 0x94
uint32 pathTable2PosBE; // 0x98
ISORoot rootDir; // 0x9C
ISOIds ids; // 0xBE
ISOTime creation; // 0x32D
ISOTime modification; // 0x33E
ISOTime expiration; // 0x34F
ISOTime effective; // 0x360
uint8 fileStructureVersion; // 0x371
uint8 reserved4; // 0x372
uint8 applicationUse[512]; // 0x373
uint8 reserved5[653]; // 0x573
} ISOPvd __attribute__ ((packed)); // 0x800
#endif // __CDTYPES_H__
|