Add qemu 2.4.0
[kvmfornfv.git] / qemu / roms / openbios / fs / iso9660 / iso9660.h
1 /*
2  *
3  * (c) 2005-2009 Laurent Vivier <Laurent@vivier.eu>
4  *
5  * This file has been copied from EMILE, http://emile.sf.net
6  *
7  */
8
9 #ifndef __ISO9660_H__
10 #define __ISO9660_H__
11
12 #include "iso9660_fs.h"
13
14 typedef struct iso9660_VOLUME {
15         int ucs_level;
16         struct iso_primary_descriptor *descriptor;
17         int fd;
18 } iso9660_VOLUME;
19
20 typedef struct iso9660_DIR {
21         iso9660_VOLUME *volume;
22         int extent;
23         int len;
24         int index;
25         unsigned char buffer[ISOFS_BLOCK_SIZE];
26 } iso9660_DIR;
27
28 typedef struct iso9660_FILE {
29         iso9660_VOLUME *volume;
30         char *path;
31         int base;                       /* first extent of the file */
32         int size;                       /* size of the file */
33         int offset;
34         int current;
35         unsigned char buffer[ISOFS_BLOCK_SIZE];
36 } iso9660_FILE;
37
38 static inline int isonum_721(char *p)
39 {
40         return ((p[0] & 0xff)
41                 | ((p[1] & 0xff) << 8));
42 }
43
44 static inline int isonum_723(char *p)
45 {
46         return (isonum_721(p));
47 }
48
49 static inline int isonum_733(char *p)
50 {
51         return ((p[0] & 0xff) | ((p[1] & 0xff) << 8) |
52                 ((p[2] & 0xff) << 16) | ((p[3] & 0xff) << 24));
53 }
54
55 extern struct iso_directory_record *iso9660_get_root_node(iso9660_VOLUME* volume);
56 extern struct iso_directory_record* iso9660_get_node(iso9660_VOLUME *volume, struct iso_directory_record *dirnode, const char *path);
57
58 #endif /* __ISO9660_H__ */