Imported Upstream version 1.1.11
[platform/upstream/cdrkit.git] / 3rd-party / zisofs_tools / iso9660.c
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 /* $Id: iso9660.c,v 1.1 2001/07/27 14:37:08 hpa Exp $ */
14 /* ----------------------------------------------------------------------- *
15  *   
16  *   Copyright 2001 H. Peter Anvin - All Rights Reserved
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 as published by
20  *   the Free Software Foundation, Inc., 675 Mass Ave, Cambridge MA 02139,
21  *   USA; either version 2 of the License, or (at your option) any later
22  *   version; incorporated herein by reference.
23  *
24  * ----------------------------------------------------------------------- */
25
26 #include "iso9660.h"
27
28 /* zisofs magic */
29
30 const unsigned char zisofs_magic[8] = {
31   0x37, 0xE4, 0x53, 0x96, 0xC9, 0xDB, 0xD6, 0x07
32 };
33
34 /* iso9660 integer formats */
35
36 void
37 set_721(void *pnt, unsigned int i)
38 {
39   unsigned char *p = (unsigned char *)pnt;
40   p[0] = i & 0xff;
41   p[1] = (i >> 8) & 0xff;
42 }
43
44 unsigned int
45 get_721(void *pnt)
46 {
47   unsigned char *p = (unsigned char *)pnt;
48   return ((unsigned int)p[0]) + ((unsigned int)p[1] << 8);
49 }
50
51 void
52 set_722(void *pnt, unsigned int i)
53 {
54   unsigned char *p = (unsigned char *)pnt;
55   p[0] = (i >> 8) & 0xff;
56   p[1] = i & 0xff;
57 }
58
59 unsigned int
60 get_722(void *pnt)
61 {
62   unsigned char *p = (unsigned char *)pnt;
63   return ((unsigned int)p[0] << 8) + ((unsigned int)p[1]);
64 }
65
66 void
67 set_723(void *pnt, unsigned int i)
68 {
69   unsigned char *p = (unsigned char *)pnt;
70   p[3] = p[0] = i & 0xff;
71   p[2] = p[1] = (i >> 8) & 0xff;
72 }
73
74 #define get_723(x) get_721(x)
75
76 void
77 set_731(void *pnt, unsigned int i)
78 {
79   unsigned char *p = (unsigned char *)pnt;
80   p[0] = i & 0xff;
81   p[1] = (i >> 8) & 0xff;
82   p[2] = (i >> 16) & 0xff;
83   p[3] = (i >> 24) & 0xff;
84 }
85
86 unsigned int
87 get_731(void *pnt)
88 {
89   unsigned char *p = (unsigned char *)pnt;
90   return ((unsigned int)p[0]) + ((unsigned int)p[1] << 8) +
91     ((unsigned int)p[2] << 16) + ((unsigned int)p[3] << 24);
92 }
93
94 void
95 set_732(void *pnt, unsigned int i)
96 {
97   unsigned char *p = (unsigned char *)pnt;
98   p[3] = i & 0xff;
99   p[2] = (i >> 8) & 0xff;
100   p[1] = (i >> 16) & 0xff;
101   p[0] = (i >> 24) & 0xff;
102 }
103
104 unsigned int
105 get_732(void *pnt)
106 {
107   unsigned char *p = (unsigned char *)pnt;
108   return ((unsigned int)p[0] << 24) + ((unsigned int)p[1] << 16) +
109     ((unsigned int)p[2] << 8) + ((unsigned int)p[3]);
110 }
111
112 void
113 set_733(void *pnt, unsigned int i)
114 {
115   unsigned char *p = (unsigned char *)pnt;
116   p[7] = p[0] = i & 0xff;
117   p[6] = p[1] = (i >> 8) & 0xff;
118   p[5] = p[2] = (i >> 16) & 0xff;
119   p[4] = p[3] = (i >> 24) & 0xff;
120 }
121
122 #define get_733(x) get_731(x)
123