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
|
/*
* This file has been modified for the cdrkit suite.
*
* The behaviour and appearence of the program code below can differ to a major
* extent from the version distributed by the original author(s).
*
* For details, see Changelog file distributed with the cdrkit package. If you
* received this file from another source then ask the distributing person for
* a log of modifications.
*
*/
/* $Id: iso9660.c,v 1.1 2001/07/27 14:37:08 hpa Exp $ */
/* ----------------------------------------------------------------------- *
*
* Copyright 2001 H. Peter Anvin - All Rights Reserved
*
* 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, Inc., 675 Mass Ave, Cambridge MA 02139,
* USA; either version 2 of the License, or (at your option) any later
* version; incorporated herein by reference.
*
* ----------------------------------------------------------------------- */
#include "iso9660.h"
/* zisofs magic */
const unsigned char zisofs_magic[8] = {
0x37, 0xE4, 0x53, 0x96, 0xC9, 0xDB, 0xD6, 0x07
};
/* iso9660 integer formats */
void
set_721(void *pnt, unsigned int i)
{
unsigned char *p = (unsigned char *)pnt;
p[0] = i & 0xff;
p[1] = (i >> 8) & 0xff;
}
unsigned int
get_721(void *pnt)
{
unsigned char *p = (unsigned char *)pnt;
return ((unsigned int)p[0]) + ((unsigned int)p[1] << 8);
}
void
set_722(void *pnt, unsigned int i)
{
unsigned char *p = (unsigned char *)pnt;
p[0] = (i >> 8) & 0xff;
p[1] = i & 0xff;
}
unsigned int
get_722(void *pnt)
{
unsigned char *p = (unsigned char *)pnt;
return ((unsigned int)p[0] << 8) + ((unsigned int)p[1]);
}
void
set_723(void *pnt, unsigned int i)
{
unsigned char *p = (unsigned char *)pnt;
p[3] = p[0] = i & 0xff;
p[2] = p[1] = (i >> 8) & 0xff;
}
#define get_723(x) get_721(x)
void
set_731(void *pnt, unsigned int i)
{
unsigned char *p = (unsigned char *)pnt;
p[0] = i & 0xff;
p[1] = (i >> 8) & 0xff;
p[2] = (i >> 16) & 0xff;
p[3] = (i >> 24) & 0xff;
}
unsigned int
get_731(void *pnt)
{
unsigned char *p = (unsigned char *)pnt;
return ((unsigned int)p[0]) + ((unsigned int)p[1] << 8) +
((unsigned int)p[2] << 16) + ((unsigned int)p[3] << 24);
}
void
set_732(void *pnt, unsigned int i)
{
unsigned char *p = (unsigned char *)pnt;
p[3] = i & 0xff;
p[2] = (i >> 8) & 0xff;
p[1] = (i >> 16) & 0xff;
p[0] = (i >> 24) & 0xff;
}
unsigned int
get_732(void *pnt)
{
unsigned char *p = (unsigned char *)pnt;
return ((unsigned int)p[0] << 24) + ((unsigned int)p[1] << 16) +
((unsigned int)p[2] << 8) + ((unsigned int)p[3]);
}
void
set_733(void *pnt, unsigned int i)
{
unsigned char *p = (unsigned char *)pnt;
p[7] = p[0] = i & 0xff;
p[6] = p[1] = (i >> 8) & 0xff;
p[5] = p[2] = (i >> 16) & 0xff;
p[4] = p[3] = (i >> 24) & 0xff;
}
#define get_733(x) get_731(x)
|