diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2010-11-03 02:38:31 +0100 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2010-11-03 02:38:31 +0100 |
commit | 833d4e7f84f59099ee66eabfa3457ebb7d37eaa8 (patch) | |
tree | 3be84e1049707ce8077291065fe3689497c69b9c /archival/libarchive/unxz/xz_config.h | |
parent | 5e9934028aa030312a1a2e2e32d5ceade8672beb (diff) | |
download | busybox-w32-833d4e7f84f59099ee66eabfa3457ebb7d37eaa8.tar.gz busybox-w32-833d4e7f84f59099ee66eabfa3457ebb7d37eaa8.tar.bz2 busybox-w32-833d4e7f84f59099ee66eabfa3457ebb7d37eaa8.zip |
rename archival/libunarchive -> archival/libarchive; move bz/ into it
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'archival/libarchive/unxz/xz_config.h')
-rw-r--r-- | archival/libarchive/unxz/xz_config.h | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/archival/libarchive/unxz/xz_config.h b/archival/libarchive/unxz/xz_config.h new file mode 100644 index 000000000..187e1cbed --- /dev/null +++ b/archival/libarchive/unxz/xz_config.h | |||
@@ -0,0 +1,123 @@ | |||
1 | /* | ||
2 | * Private includes and definitions for userspace use of XZ Embedded | ||
3 | * | ||
4 | * Author: Lasse Collin <lasse.collin@tukaani.org> | ||
5 | * | ||
6 | * This file has been put into the public domain. | ||
7 | * You can do whatever you want with this file. | ||
8 | */ | ||
9 | |||
10 | #ifndef XZ_CONFIG_H | ||
11 | #define XZ_CONFIG_H | ||
12 | |||
13 | /* Uncomment as needed to enable BCJ filter decoders. */ | ||
14 | /* #define XZ_DEC_X86 */ | ||
15 | /* #define XZ_DEC_POWERPC */ | ||
16 | /* #define XZ_DEC_IA64 */ | ||
17 | /* #define XZ_DEC_ARM */ | ||
18 | /* #define XZ_DEC_ARMTHUMB */ | ||
19 | /* #define XZ_DEC_SPARC */ | ||
20 | |||
21 | #include <stdbool.h> | ||
22 | #include <stdlib.h> | ||
23 | #include <string.h> | ||
24 | |||
25 | #include "xz.h" | ||
26 | |||
27 | #define kmalloc(size, flags) malloc(size) | ||
28 | #define kfree(ptr) free(ptr) | ||
29 | #define vmalloc(size) malloc(size) | ||
30 | #define vfree(ptr) free(ptr) | ||
31 | |||
32 | #define memeq(a, b, size) (memcmp(a, b, size) == 0) | ||
33 | #define memzero(buf, size) memset(buf, 0, size) | ||
34 | |||
35 | #undef min | ||
36 | #undef min_t | ||
37 | #define min(x, y) ((x) < (y) ? (x) : (y)) | ||
38 | #define min_t(type, x, y) min(x, y) | ||
39 | |||
40 | /* | ||
41 | * Some functions have been marked with __always_inline to keep the | ||
42 | * performance reasonable even when the compiler is optimizing for | ||
43 | * small code size. You may be able to save a few bytes by #defining | ||
44 | * __always_inline to plain inline, but don't complain if the code | ||
45 | * becomes slow. | ||
46 | * | ||
47 | * NOTE: System headers on GNU/Linux may #define this macro already, | ||
48 | * so if you want to change it, you need to #undef it first. | ||
49 | */ | ||
50 | #ifndef __always_inline | ||
51 | # ifdef __GNUC__ | ||
52 | # define __always_inline \ | ||
53 | inline __attribute__((__always_inline__)) | ||
54 | # else | ||
55 | # define __always_inline inline | ||
56 | # endif | ||
57 | #endif | ||
58 | |||
59 | /* | ||
60 | * Some functions are marked to never be inlined to reduce stack usage. | ||
61 | * If you don't care about stack usage, you may want to modify this so | ||
62 | * that noinline_for_stack is #defined to be empty even when using GCC. | ||
63 | * Doing so may save a few bytes in binary size. | ||
64 | */ | ||
65 | #ifndef noinline_for_stack | ||
66 | # ifdef __GNUC__ | ||
67 | # define noinline_for_stack __attribute__((__noinline__)) | ||
68 | # else | ||
69 | # define noinline_for_stack | ||
70 | # endif | ||
71 | #endif | ||
72 | |||
73 | /* Inline functions to access unaligned unsigned 32-bit integers */ | ||
74 | #ifndef get_unaligned_le32 | ||
75 | static inline uint32_t XZ_FUNC get_unaligned_le32(const uint8_t *buf) | ||
76 | { | ||
77 | return (uint32_t)buf[0] | ||
78 | | ((uint32_t)buf[1] << 8) | ||
79 | | ((uint32_t)buf[2] << 16) | ||
80 | | ((uint32_t)buf[3] << 24); | ||
81 | } | ||
82 | #endif | ||
83 | |||
84 | #ifndef get_unaligned_be32 | ||
85 | static inline uint32_t XZ_FUNC get_unaligned_be32(const uint8_t *buf) | ||
86 | { | ||
87 | return (uint32_t)(buf[0] << 24) | ||
88 | | ((uint32_t)buf[1] << 16) | ||
89 | | ((uint32_t)buf[2] << 8) | ||
90 | | (uint32_t)buf[3]; | ||
91 | } | ||
92 | #endif | ||
93 | |||
94 | #ifndef put_unaligned_le32 | ||
95 | static inline void XZ_FUNC put_unaligned_le32(uint32_t val, uint8_t *buf) | ||
96 | { | ||
97 | buf[0] = (uint8_t)val; | ||
98 | buf[1] = (uint8_t)(val >> 8); | ||
99 | buf[2] = (uint8_t)(val >> 16); | ||
100 | buf[3] = (uint8_t)(val >> 24); | ||
101 | } | ||
102 | #endif | ||
103 | |||
104 | #ifndef put_unaligned_be32 | ||
105 | static inline void XZ_FUNC put_unaligned_be32(uint32_t val, uint8_t *buf) | ||
106 | { | ||
107 | buf[0] = (uint8_t)(val >> 24); | ||
108 | buf[1] = (uint8_t)(val >> 16); | ||
109 | buf[2] = (uint8_t)(val >> 8); | ||
110 | buf[3] = (uint8_t)val; | ||
111 | } | ||
112 | #endif | ||
113 | |||
114 | /* | ||
115 | * Use get_unaligned_le32() also for aligned access for simplicity. On | ||
116 | * little endian systems, #define get_le32(ptr) (*(const uint32_t *)(ptr)) | ||
117 | * could save a few bytes in code size. | ||
118 | */ | ||
119 | #ifndef get_le32 | ||
120 | # define get_le32 get_unaligned_le32 | ||
121 | #endif | ||
122 | |||
123 | #endif | ||