]> git.ipfire.org Git - thirdparty/util-linux.git/blob - include/iso9660.h
Merge branch 'boilerplate/test' of https://github.com/t-8ch/util-linux
[thirdparty/util-linux.git] / include / iso9660.h
1 /*
2 * No copyright is claimed. This code is in the public domain; do with
3 * it what you wish.
4 */
5 #ifndef UTIL_LINUX_ISO_H
6 #define UTIL_LINUX_ISO_H
7
8 #include <stdbool.h>
9 #include <stdint.h>
10
11 #include "c.h"
12
13 static inline uint16_t isonum_721(const unsigned char *p)
14 {
15 return ((p[0] & 0xff)
16 | ((p[1] & 0xff) << 8));
17 }
18
19 static inline uint16_t isonum_722(const unsigned char *p)
20 {
21 return ((p[1] & 0xff)
22 | ((p[0] & 0xff) << 8));
23 }
24
25 static inline uint16_t isonum_723(const unsigned char *p, bool check_match)
26 {
27 uint16_t le = isonum_721(p);
28 uint16_t be = isonum_722(p + 2);
29
30 if (check_match && le != be)
31 /* translation is useless */
32 warnx("723error: le=%d be=%d", le, be);
33 return (le);
34 }
35
36 static inline uint32_t isonum_731(const unsigned char *p)
37 {
38 return ((p[0] & 0xff)
39 | ((p[1] & 0xff) << 8)
40 | ((p[2] & 0xff) << 16)
41 | (((uint32_t) p[3] & 0xff) << 24));
42 }
43
44 static inline uint32_t isonum_732(const unsigned char *p)
45 {
46 return ((p[3] & 0xff)
47 | ((p[2] & 0xff) << 8)
48 | ((p[1] & 0xff) << 16)
49 | (((uint32_t) p[0] & 0xff) << 24));
50 }
51
52 static inline uint32_t isonum_733(const unsigned char *p, bool check_match)
53 {
54 uint32_t le = isonum_731(p);
55 uint32_t be = isonum_732(p + 4);
56
57 if (check_match && le != be)
58 /* translation is useless */
59 warnx("733error: le=%d be=%d", le, be);
60 return(le);
61 }
62
63 #endif