aboutsummaryrefslogtreecommitdiff
path: root/depends/xz-embedded/src
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2013-11-04 02:53:05 +0100
committerPetr Mrázek <peterix@gmail.com>2013-11-04 02:53:05 +0100
commitbb7e8985f6d189de0acac6a1c3033cb16378c1fb (patch)
tree7c2e88c7184a7f5acf5e7a03be5c5f0bf6904113 /depends/xz-embedded/src
parentd6e4fb29713d6ce55b092c0e22412f6121e7f516 (diff)
downloadPrismLauncher-bb7e8985f6d189de0acac6a1c3033cb16378c1fb.tar.gz
PrismLauncher-bb7e8985f6d189de0acac6a1c3033cb16378c1fb.tar.bz2
PrismLauncher-bb7e8985f6d189de0acac6a1c3033cb16378c1fb.zip
Reformat and (slightly) decruft all the things.
Diffstat (limited to 'depends/xz-embedded/src')
-rw-r--r--depends/xz-embedded/src/xz_config.h35
-rw-r--r--depends/xz-embedded/src/xz_crc32.c8
-rw-r--r--depends/xz-embedded/src/xz_crc64.c8
-rw-r--r--depends/xz-embedded/src/xz_dec_bcj.c148
-rw-r--r--depends/xz-embedded/src/xz_dec_lzma2.c324
-rw-r--r--depends/xz-embedded/src/xz_dec_stream.c207
-rw-r--r--depends/xz-embedded/src/xz_lzma2.h8
-rw-r--r--depends/xz-embedded/src/xz_private.h124
-rw-r--r--depends/xz-embedded/src/xz_stream.h14
9 files changed, 478 insertions, 398 deletions
diff --git a/depends/xz-embedded/src/xz_config.h b/depends/xz-embedded/src/xz_config.h
index eb9dac1a..40805b75 100644
--- a/depends/xz-embedded/src/xz_config.h
+++ b/depends/xz-embedded/src/xz_config.h
@@ -27,11 +27,11 @@
*/
#ifdef _MSC_VER
typedef unsigned char bool;
-# define true 1
-# define false 0
-# define inline __inline
+#define true 1
+#define false 0
+#define inline __inline
#else
-# include <stdbool.h>
+#include <stdbool.h>
#endif
#include <stdlib.h>
@@ -48,7 +48,7 @@ typedef unsigned char bool;
#define memzero(buf, size) memset(buf, 0, size)
#ifndef min
-# define min(x, y) ((x) < (y) ? (x) : (y))
+#define min(x, y) ((x) < (y) ? (x) : (y))
#endif
#define min_t(type, x, y) min(x, y)
@@ -63,32 +63,27 @@ typedef unsigned char bool;
* so if you want to change it, you need to #undef it first.
*/
#ifndef __always_inline
-# ifdef __GNUC__
-# define __always_inline \
- inline __attribute__((__always_inline__))
-# else
-# define __always_inline inline
-# endif
+#ifdef __GNUC__
+#define __always_inline inline __attribute__((__always_inline__))
+#else
+#define __always_inline inline
+#endif
#endif
/* Inline functions to access unaligned unsigned 32-bit integers */
#ifndef get_unaligned_le32
static inline uint32_t get_unaligned_le32(const uint8_t *buf)
{
- return (uint32_t)buf[0]
- | ((uint32_t)buf[1] << 8)
- | ((uint32_t)buf[2] << 16)
- | ((uint32_t)buf[3] << 24);
+ return (uint32_t)buf[0] | ((uint32_t)buf[1] << 8) | ((uint32_t)buf[2] << 16) |
+ ((uint32_t)buf[3] << 24);
}
#endif
#ifndef get_unaligned_be32
static inline uint32_t get_unaligned_be32(const uint8_t *buf)
{
- return (uint32_t)(buf[0] << 24)
- | ((uint32_t)buf[1] << 16)
- | ((uint32_t)buf[2] << 8)
- | (uint32_t)buf[3];
+ return (uint32_t)(buf[0] << 24) | ((uint32_t)buf[1] << 16) | ((uint32_t)buf[2] << 8) |
+ (uint32_t)buf[3];
}
#endif
@@ -118,7 +113,7 @@ static inline void put_unaligned_be32(uint32_t val, uint8_t *buf)
* could save a few bytes in code size.
*/
#ifndef get_le32
-# define get_le32 get_unaligned_le32
+#define get_le32 get_unaligned_le32
#endif
#endif
diff --git a/depends/xz-embedded/src/xz_crc32.c b/depends/xz-embedded/src/xz_crc32.c
index 34532d14..c412662b 100644
--- a/depends/xz-embedded/src/xz_crc32.c
+++ b/depends/xz-embedded/src/xz_crc32.c
@@ -22,7 +22,7 @@
* See <linux/decompress/mm.h> for details.
*/
#ifndef STATIC_RW_DATA
-# define STATIC_RW_DATA static
+#define STATIC_RW_DATA static
#endif
STATIC_RW_DATA uint32_t xz_crc32_table[256];
@@ -35,7 +35,8 @@ XZ_EXTERN void xz_crc32_init(void)
uint32_t j;
uint32_t r;
- for (i = 0; i < 256; ++i) {
+ for (i = 0; i < 256; ++i)
+ {
r = i;
for (j = 0; j < 8; ++j)
r = (r >> 1) ^ (poly & ~((r & 1) - 1));
@@ -50,7 +51,8 @@ XZ_EXTERN uint32_t xz_crc32(const uint8_t *buf, size_t size, uint32_t crc)
{
crc = ~crc;
- while (size != 0) {
+ while (size != 0)
+ {
crc = xz_crc32_table[*buf++ ^ (crc & 0xFF)] ^ (crc >> 8);
--size;
}
diff --git a/depends/xz-embedded/src/xz_crc64.c b/depends/xz-embedded/src/xz_crc64.c
index ca1caee8..4794b9d3 100644
--- a/depends/xz-embedded/src/xz_crc64.c
+++ b/depends/xz-embedded/src/xz_crc64.c
@@ -13,7 +13,7 @@
#include "xz_private.h"
#ifndef STATIC_RW_DATA
-# define STATIC_RW_DATA static
+#define STATIC_RW_DATA static
#endif
STATIC_RW_DATA uint64_t xz_crc64_table[256];
@@ -26,7 +26,8 @@ XZ_EXTERN void xz_crc64_init(void)
uint32_t j;
uint64_t r;
- for (i = 0; i < 256; ++i) {
+ for (i = 0; i < 256; ++i)
+ {
r = i;
for (j = 0; j < 8; ++j)
r = (r >> 1) ^ (poly & ~((r & 1) - 1));
@@ -41,7 +42,8 @@ XZ_EXTERN uint64_t xz_crc64(const uint8_t *buf, size_t size, uint64_t crc)
{
crc = ~crc;
- while (size != 0) {
+ while (size != 0)
+ {
crc = xz_crc64_table[*buf++ ^ (crc & 0xFF)] ^ (crc >> 8);
--size;
}
diff --git a/depends/xz-embedded/src/xz_dec_bcj.c b/depends/xz-embedded/src/xz_dec_bcj.c
index a768e6d2..9ffda3bd 100644
--- a/depends/xz-embedded/src/xz_dec_bcj.c
+++ b/depends/xz-embedded/src/xz_dec_bcj.c
@@ -16,15 +16,17 @@
*/
#ifdef XZ_DEC_BCJ
-struct xz_dec_bcj {
+struct xz_dec_bcj
+{
/* Type of the BCJ filter being used */
- enum {
- BCJ_X86 = 4, /* x86 or x86-64 */
- BCJ_POWERPC = 5, /* Big endian only */
- BCJ_IA64 = 6, /* Big or little endian */
- BCJ_ARM = 7, /* Little endian only */
- BCJ_ARMTHUMB = 8, /* Little endian only */
- BCJ_SPARC = 9 /* Big or little endian */
+ enum
+ {
+ BCJ_X86 = 4, /* x86 or x86-64 */
+ BCJ_POWERPC = 5, /* Big endian only */
+ BCJ_IA64 = 6, /* Big or little endian */
+ BCJ_ARM = 7, /* Little endian only */
+ BCJ_ARMTHUMB = 8, /* Little endian only */
+ BCJ_SPARC = 9 /* Big or little endian */
} type;
/*
@@ -52,7 +54,8 @@ struct xz_dec_bcj {
size_t out_pos;
size_t out_size;
- struct {
+ struct
+ {
/* Amount of already filtered data in the beginning of buf */
size_t filtered;
@@ -87,13 +90,13 @@ static inline int bcj_x86_test_msbyte(uint8_t b)
static size_t bcj_x86(struct xz_dec_bcj *s, uint8_t *buf, size_t size)
{
- static const bool mask_to_allowed_status[8]
- = { true, true, true, false, true, false, false, false };
+ static const bool mask_to_allowed_status[8] = {true, true, true, false,
+ true, false, false, false};
- static const uint8_t mask_to_bit_num[8] = { 0, 1, 2, 2, 3, 3, 3, 3 };
+ static const uint8_t mask_to_bit_num[8] = {0, 1, 2, 2, 3, 3, 3, 3};
size_t i;
- size_t prev_pos = (size_t)-1;
+ size_t prev_pos = (size_t) - 1;
uint32_t prev_mask = s->x86_prev_mask;
uint32_t src;
uint32_t dest;
@@ -104,19 +107,24 @@ static size_t bcj_x86(struct xz_dec_bcj *s, uint8_t *buf, size_t size)
return 0;
size -= 4;
- for (i = 0; i < size; ++i) {
+ for (i = 0; i < size; ++i)
+ {
if ((buf[i] & 0xFE) != 0xE8)
continue;
prev_pos = i - prev_pos;
- if (prev_pos > 3) {
+ if (prev_pos > 3)
+ {
prev_mask = 0;
- } else {
+ }
+ else
+ {
prev_mask = (prev_mask << (prev_pos - 1)) & 7;
- if (prev_mask != 0) {
+ if (prev_mask != 0)
+ {
b = buf[i + 4 - mask_to_bit_num[prev_mask]];
- if (!mask_to_allowed_status[prev_mask]
- || bcj_x86_test_msbyte(b)) {
+ if (!mask_to_allowed_status[prev_mask] || bcj_x86_test_msbyte(b))
+ {
prev_pos = i;
prev_mask = (prev_mask << 1) | 1;
continue;
@@ -126,9 +134,11 @@ static size_t bcj_x86(struct xz_dec_bcj *s, uint8_t *buf, size_t size)
prev_pos = i;
- if (bcj_x86_test_msbyte(buf[i + 4])) {
+ if (bcj_x86_test_msbyte(buf[i + 4]))
+ {
src = get_unaligned_le32(buf + i + 1);
- while (true) {
+ while (true)
+ {
dest = src - (s->pos + (uint32_t)i + 5);
if (prev_mask == 0)
break;
@@ -145,7 +155,9 @@ static size_t bcj_x86(struct xz_dec_bcj *s, uint8_t *buf, size_t size)
dest |= (uint32_t)0 - (dest & 0x01000000);
put_unaligned_le32(dest, buf + i + 1);
i += 4;
- } else {
+ }
+ else
+ {
prev_mask = (prev_mask << 1) | 1;
}
}
@@ -162,9 +174,11 @@ static size_t bcj_powerpc(struct xz_dec_bcj *s, uint8_t *buf, size_t size)
size_t i;
uint32_t instr;
- for (i = 0; i + 4 <= size; i += 4) {
+ for (i = 0; i + 4 <= size; i += 4)
+ {
instr = get_unaligned_be32(buf + i);
- if ((instr & 0xFC000003) == 0x48000001) {
+ if ((instr & 0xFC000003) == 0x48000001)
+ {
instr &= 0x03FFFFFC;
instr -= s->pos + (uint32_t)i;
instr &= 0x03FFFFFC;
@@ -180,12 +194,8 @@ static size_t bcj_powerpc(struct xz_dec_bcj *s, uint8_t *buf, size_t size)
#ifdef XZ_DEC_IA64
static size_t bcj_ia64(struct xz_dec_bcj *s, uint8_t *buf, size_t size)
{
- static const uint8_t branch_table[32] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 4, 4, 6, 6, 0, 0, 7, 7,
- 4, 4, 0, 0, 4, 4, 0, 0
- };
+ static const uint8_t branch_table[32] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 4, 4, 6, 6, 0, 0, 7, 7, 4, 4, 0, 0, 4, 4, 0, 0};
/*
* The local variables take a little bit stack space, but it's less
@@ -219,9 +229,11 @@ static size_t bcj_ia64(struct xz_dec_bcj *s, uint8_t *buf, size_t size)
/* Instruction normalized with bit_res for easier manipulation */
uint64_t norm;
- for (i = 0; i + 16 <= size; i += 16) {
+ for (i = 0; i + 16 <= size; i += 16)
+ {
mask = branch_table[buf[i] & 0x1F];
- for (slot = 0, bit_pos = 5; slot < 3; ++slot, bit_pos += 41) {
+ for (slot = 0, bit_pos = 5; slot < 3; ++slot, bit_pos += 41)
+ {
if (((mask >> slot) & 1) == 0)
continue;
@@ -229,13 +241,12 @@ static size_t bcj_ia64(struct xz_dec_bcj *s, uint8_t *buf, size_t size)
bit_res = bit_pos & 7;
instr = 0;
for (j = 0; j < 6; ++j)
- instr |= (uint64_t)(buf[i + j + byte_pos])
- << (8 * j);
+ instr |= (uint64_t)(buf[i + j + byte_pos]) << (8 * j);
norm = instr >> bit_res;
- if (((norm >> 37) & 0x0F) == 0x05
- && ((norm >> 9) & 0x07) == 0) {
+ if (((norm >> 37) & 0x0F) == 0x05 && ((norm >> 9) & 0x07) == 0)
+ {
addr = (norm >> 13) & 0x0FFFFF;
addr |= ((uint32_t)(norm >> 36) & 1) << 20;
addr <<= 4;
@@ -244,15 +255,13 @@ static size_t bcj_ia64(struct xz_dec_bcj *s, uint8_t *buf, size_t size)
norm &= ~((uint64_t)0x8FFFFF << 13);
norm |= (uint64_t)(addr & 0x0FFFFF) << 13;
- norm |= (uint64_t)(addr & 0x100000)
- << (36 - 20);
+ norm |= (uint64_t)(addr & 0x100000) << (36 - 20);
instr &= (1 << bit_res) - 1;
instr |= norm << bit_res;
for (j = 0; j < 6; j++)
- buf[i + j + byte_pos]
- = (uint8_t)(instr >> (8 * j));
+ buf[i + j + byte_pos] = (uint8_t)(instr >> (8 * j));
}
}
}
@@ -267,10 +276,12 @@ static size_t bcj_arm(struct xz_dec_bcj *s, uint8_t *buf, size_t size)
size_t i;
uint32_t addr;
- for (i = 0; i + 4 <= size; i += 4) {
- if (buf[i + 3] == 0xEB) {
- addr = (uint32_t)buf[i] | ((uint32_t)buf[i + 1] << 8)
- | ((uint32_t)buf[i + 2] << 16);
+ for (i = 0; i + 4 <= size; i += 4)
+ {
+ if (buf[i + 3] == 0xEB)
+ {
+ addr =
+ (uint32_t)buf[i] | ((uint32_t)buf[i + 1] << 8) | ((uint32_t)buf[i + 2] << 16);
addr <<= 2;
addr -= s->pos + (uint32_t)i + 8;
addr >>= 2;
@@ -290,13 +301,12 @@ static size_t bcj_armthumb(struct xz_dec_bcj *s, uint8_t *buf, size_t size)
size_t i;
uint32_t addr;
- for (i = 0; i + 4 <= size; i += 2) {
- if ((buf[i + 1] & 0xF8) == 0xF0
- && (buf[i + 3] & 0xF8) == 0xF8) {
- addr = (((uint32_t)buf[i + 1] & 0x07) << 19)
- | ((uint32_t)buf[i] << 11)
- | (((uint32_t)buf[i + 3] & 0x07) << 8)
- | (uint32_t)buf[i + 2];
+ for (i = 0; i + 4 <= size; i += 2)
+ {
+ if ((buf[i + 1] & 0xF8) == 0xF0 && (buf[i + 3] & 0xF8) == 0xF8)
+ {
+ addr = (((uint32_t)buf[i + 1] & 0x07) << 19) | ((uint32_t)buf[i] << 11) |
+ (((uint32_t)buf[i + 3] & 0x07) << 8) | (uint32_t)buf[i + 2];
addr <<= 1;
addr -= s->pos + (uint32_t)i + 4;
addr >>= 1;
@@ -318,14 +328,16 @@ static size_t bcj_sparc(struct xz_dec_bcj *s, uint8_t *buf, size_t size)
size_t i;
uint32_t instr;
- for (i = 0; i + 4 <= size; i += 4) {
+ for (i = 0; i + 4 <= size; i += 4)
+ {
instr = get_unaligned_be32(buf + i);
- if ((instr >> 22) == 0x100 || (instr >> 22) == 0x1FF) {
+ if ((instr >> 22) == 0x100 || (instr >> 22) == 0x1FF)
+ {
instr <<= 2;
instr -= s->pos + (uint32_t)i;
instr >>= 2;
- instr = ((uint32_t)0x40000000 - (instr & 0x400000))
- | 0x40000000 | (instr & 0x3FFFFF);
+ instr =
+ ((uint32_t)0x40000000 - (instr & 0x400000)) | 0x40000000 | (instr & 0x3FFFFF);
put_unaligned_be32(instr, buf + i);
}
}
@@ -342,15 +354,15 @@ static size_t bcj_sparc(struct xz_dec_bcj *s, uint8_t *buf, size_t size)
* pointers, which could be problematic in the kernel boot code, which must
* avoid pointers to static data (at least on x86).
*/
-static void bcj_apply(struct xz_dec_bcj *s,
- uint8_t *buf, size_t *pos, size_t size)
+static void bcj_apply(struct xz_dec_bcj *s, uint8_t *buf, size_t *pos, size_t size)
{
size_t filtered;
buf += *pos;
size -= *pos;
- switch (s->type) {
+ switch (s->type)
+ {
#ifdef XZ_DEC_X86
case BCJ_X86:
filtered = bcj_x86(s, buf, size);
@@ -414,9 +426,8 @@ static void bcj_flush(struct xz_dec_bcj *s, struct xz_buf *b)
* data in chunks of 1-16 bytes. To hide this issue, this function does
* some buffering.
*/
-XZ_EXTERN enum xz_ret xz_dec_bcj_run(struct xz_dec_bcj *s,
- struct xz_dec_lzma2 *lzma2,
- struct xz_buf *b)
+XZ_EXTERN enum xz_ret xz_dec_bcj_run(struct xz_dec_bcj *s, struct xz_dec_lzma2 *lzma2,
+ struct xz_buf *b)
{
size_t out_start;
@@ -425,7 +436,8 @@ XZ_EXTERN enum xz_ret xz_dec_bcj_run(struct xz_dec_bcj *s,
* immediatelly if we couldn't flush everything, or if the next
* filter in the chain had already returned XZ_STREAM_END.
*/
- if (s->temp.filtered > 0) {
+ if (s->temp.filtered > 0)
+ {
bcj_flush(s, b);
if (s->temp.filtered > 0)
return XZ_OK;
@@ -446,14 +458,14 @@ XZ_EXTERN enum xz_ret xz_dec_bcj_run(struct xz_dec_bcj *s,
* case where the output buffer is full and the next filter has no
* more output coming but hasn't returned XZ_STREAM_END yet.
*/
- if (s->temp.size < b->out_size - b->out_pos || s->temp.size == 0) {
+ if (s->temp.size < b->out_size - b->out_pos || s->temp.size == 0)
+ {
out_start = b->out_pos;
memcpy(b->out + b->out_pos, s->temp.buf, s->temp.size);
b->out_pos += s->temp.size;
s->ret = xz_dec_lzma2_run(lzma2, b);
- if (s->ret != XZ_STREAM_END
- && (s->ret != XZ_OK || s->single_call))
+ if (s->ret != XZ_STREAM_END && (s->ret != XZ_OK || s->single_call))
return s->ret;
bcj_apply(s, b->out, &out_start, b->out_pos);
@@ -487,7 +499,8 @@ XZ_EXTERN enum xz_ret xz_dec_bcj_run(struct xz_dec_bcj *s,
* A mix of filtered and unfiltered data may be left in temp; it will
* be taken care on the next call to this function.
*/
- if (b->out_pos < b->out_size) {
+ if (b->out_pos < b->out_size)
+ {
/* Make b->out{,_pos,_size} temporarily point to s->temp. */
s->out = b->out;
s->out_pos = b->out_pos;
@@ -535,7 +548,8 @@ XZ_EXTERN struct xz_dec_bcj *xz_dec_bcj_create(bool single_call)
XZ_EXTERN enum xz_ret xz_dec_bcj_reset(struct xz_dec_bcj *s, uint8_t id)
{
- switch (id) {
+ switch (id)
+ {
#ifdef XZ_DEC_X86
case BCJ_X86:
#endif
diff --git a/depends/xz-embedded/src/xz_dec_lzma2.c b/depends/xz-embedded/src/xz_dec_lzma2.c
index a6cdc969..3d7b9a2e 100644
--- a/depends/xz-embedded/src/xz_dec_lzma2.c
+++ b/depends/xz-embedded/src/xz_dec_lzma2.c
@@ -41,7 +41,8 @@
* in which the dictionary variables address the actual output
* buffer directly.
*/
-struct dictionary {
+struct dictionary
+{
/* Beginning of the history buffer */
uint8_t *buf;
@@ -92,7 +93,8 @@ struct dictionary {
};
/* Range decoder */
-struct rc_dec {
+struct rc_dec
+{
uint32_t range;
uint32_t code;
@@ -112,7 +114,8 @@ struct rc_dec {
};
/* Probabilities for a length decoder. */
-struct lzma_len_dec {
+struct lzma_len_dec
+{
/* Probability of match length being at least 10 */
uint16_t choice;
@@ -129,7 +132,8 @@ struct lzma_len_dec {
uint16_t high[LEN_HIGH_SYMBOLS];
};
-struct lzma_dec {
+struct lzma_dec
+{
/* Distances of latest four matches */
uint32_t rep0;
uint32_t rep1;
@@ -153,7 +157,7 @@ struct lzma_dec {
*/
uint32_t lc;
uint32_t literal_pos_mask; /* (1 << lp) - 1 */
- uint32_t pos_mask; /* (1 << pb) - 1 */
+ uint32_t pos_mask; /* (1 << pb) - 1 */
/* If 1, it's a match. Otherwise it's a single 8-bit literal. */
uint16_t is_match[STATES][POS_STATES_MAX];
@@ -211,9 +215,11 @@ struct lzma_dec {
uint16_t literal[LITERAL_CODERS_MAX][LITERAL_CODER_SIZE];
};
-struct lzma2_dec {
+struct lzma2_dec
+{
/* Position in xz_dec_lzma2_run(). */
- enum lzma2_seq {
+ enum lzma2_seq
+ {
SEQ_CONTROL,
SEQ_UNCOMPRESSED_1,
SEQ_UNCOMPRESSED_2,
@@ -250,7 +256,8 @@ struct lzma2_dec {
bool need_props;
};
-struct xz_dec_lzma2 {
+struct xz_dec_lzma2
+{
/*
* The order below is important on x86 to reduce code size and
* it shouldn't hurt on other platforms. Everything up to and
@@ -269,7 +276,8 @@ struct xz_dec_lzma2 {
* Temporary buffer which holds small number of input bytes between
* decoder calls. See lzma2_lzma() for details.
*/
- struct {
+ struct
+ {
uint32_t size;
uint8_t buf[3 * LZMA_IN_REQUIRED];
} temp;
@@ -285,7 +293,8 @@ struct xz_dec_lzma2 {
*/
static void dict_reset(struct dictionary *dict, struct xz_buf *b)
{
- if (DEC_IS_SINGLE(dict->mode)) {
+ if (DEC_IS_SINGLE(dict->mode))
+ {
dict->buf = b->out + b->out_pos;
dict->end = b->out_size - b->out_pos;
}
@@ -358,7 +367,8 @@ static bool dict_repeat(struct dictionary *dict, uint32_t *len, uint32_t dist)
if (dist >= dict->pos)
back += dict->end;
- do {
+ do
+ {
dict->buf[dict->pos++] = dict->buf[back++];
if (back == dict->end)
back = 0;
@@ -371,15 +381,13 @@ static bool dict_repeat(struct dictionary *dict, uint32_t *len, uint32_t dist)
}
/* Copy uncompressed data as is from input to dictionary and output buffers. */
-static void dict_uncompressed(struct dictionary *dict, struct xz_buf *b,
- uint32_t *left)
+static void dict_uncompressed(struct dictionary *dict, struct xz_buf *b, uint32_t *left)
{
size_t copy_size;
- while (*left > 0 && b->in_pos < b->in_size
- && b->out_pos < b->out_size) {
- copy_size = min(b->in_size - b->in_pos,
- b->out_size - b->out_pos);
+ while (*left > 0 && b->in_pos < b->in_size && b->out_pos < b->out_size)
+ {
+ copy_size = min(b->in_size - b->in_pos, b->out_size - b->out_pos);
if (copy_size > dict->end - dict->pos)
copy_size = dict->end - dict->pos;
if (copy_size > *left)
@@ -393,12 +401,12 @@ static void dict_uncompressed(struct dictionary *dict, struct xz_buf *b,
if (dict->full < dict->pos)
dict->full = dict->pos;
- if (DEC_IS_MULTI(dict->mode)) {
+ if (DEC_IS_MULTI(dict->mode))
+ {
if (dict->pos == dict->end)
dict->pos = 0;
- memcpy(b->out + b->out_pos, b->in + b->in_pos,
- copy_size);
+ memcpy(b->out + b->out_pos, b->in + b->in_pos, copy_size);
}
dict->start = dict->pos;
@@ -417,12 +425,12 @@ static uint32_t dict_flush(struct dictionary *dict, struct xz_buf *b)
{
size_t copy_size = dict->pos - dict->start;
- if (DEC_IS_MULTI(dict->mode)) {
+ if (DEC_IS_MULTI(dict->mode))
+ {
if (dict->pos == dict->end)
dict->pos = 0;
- memcpy(b->out + b->out_pos, dict->buf + dict->start,
- copy_size);
+ memcpy(b->out + b->out_pos, dict->buf + dict->start, copy_size);
}
dict->start = dict->pos;
@@ -437,7 +445,7 @@ static uint32_t dict_flush(struct dictionary *dict, struct xz_buf *b)
/* Reset the range decoder. */
static void rc_reset(struct rc_dec *rc)
{
- rc->range = (uint32_t)-1;
+ rc->range = (uint32_t) - 1;
rc->code = 0;
rc->init_bytes_left = RC_INIT_BYTES;
}
@@ -448,7 +456,8 @@ static void rc_reset(struct rc_dec *rc)
*/
static bool rc_read_init(struct rc_dec *rc, struct xz_buf *b)
{
- while (rc->init_bytes_left > 0) {
+ while (rc->init_bytes_left > 0)
+ {
if (b->in_pos == b->in_size)
return false;
@@ -477,7 +486,8 @@ static inline bool rc_is_finished(const struct rc_dec *rc)
/* Read the next input byte if needed. */
static __always_inline void rc_normalize(struct rc_dec *rc)
{
- if (rc->range < RC_TOP_VALUE) {
+ if (rc->range < RC_TOP_VALUE)
+ {
rc->range <<= RC_SHIFT_BITS;
rc->code = (rc->code << RC_SHIFT_BITS) + rc->in[rc->in_pos++];
}
@@ -501,11 +511,14 @@ static __always_inline int rc_bit(struct rc_dec *rc, uint16_t *prob)
rc_normalize(rc);
bound = (rc->range >> RC_BIT_MODEL_TOTAL_BITS) * *prob;
- if (rc->code < bound) {
+ if (rc->code < bound)
+ {
rc->range = bound;
*prob += (RC_BIT_MODEL_TOTAL - *prob) >> RC_MOVE_BITS;
bit = 0;
- } else {
+ }
+ else
+ {
rc->range -= bound;
rc->code -= bound;
*prob -= *prob >> RC_MOVE_BITS;
@@ -516,12 +529,12 @@ static __always_inline int rc_bit(struct rc_dec *rc, uint16_t *prob)
}
/* Decode a bittree starting from the most significant bit. */
-static __always_inline uint32_t rc_bittree(struct rc_dec *rc,
- uint16_t *probs, uint32_t limit)
+static __always_inline uint32_t rc_bittree(struct rc_dec *rc, uint16_t *probs, uint32_t limit)
{
uint32_t symbol = 1;
- do {
+ do
+ {
if (rc_bit(rc, &probs[symbol]))
symbol = (symbol << 1) + 1;
else
@@ -532,18 +545,21 @@ static __always_inline uint32_t rc_bittree(struct rc_dec *rc,
}
/* Decode a bittree starting from the least significant bit. */
-static __always_inline void rc_bittree_reverse(struct rc_dec *rc,
- uint16_t *probs,
- uint32_t *dest, uint32_t limit)
+static __always_inline void rc_bittree_reverse(struct rc_dec *rc, uint16_t *probs,
+ uint32_t *dest, uint32_t limit)
{
uint32_t symbol = 1;
uint32_t i = 0;
- do {
- if (rc_bit(rc, &probs[symbol])) {
+ do
+ {
+ if (rc_bit(rc, &probs[symbol]))
+ {
symbol = (symbol << 1) + 1;
*dest += 1 << i;
- } else {
+ }
+ else
+ {
symbol <<= 1;
}
} while (++i < limit);
@@ -554,7 +570,8 @@ static inline void rc_direct(struct rc_dec *rc, uint32_t *dest, uint32_t limit)
{
uint32_t mask;
- do {
+ do
+ {
rc_normalize(rc);
rc->range >>= 1;
rc->code -= rc->range;
@@ -589,22 +606,29 @@ static void lzma_literal(struct xz_dec_lzma2 *s)
probs = lzma_literal_probs(s);
- if (lzma_state_is_literal(s->lzma.state)) {
+ if (lzma_state_is_literal(s->lzma.state))
+ {
symbol = rc_bittree(&s->rc, probs, 0x100);
- } else {
+ }
+ else
+ {
symbol = 1;
match_byte = dict_get(&s->dict, s->lzma.rep0) << 1;
offset = 0x100;
- do {
+ do
+ {
match_bit = match_byte & offset;
match_byte <<= 1;
i = offset + match_bit + symbol;
- if (rc_bit(&s->rc, &probs[i])) {
+ if (rc_bit(&s->rc, &probs[i]))
+ {
symbol = (symbol << 1) + 1;
offset &= match_bit;
- } else {
+ }
+ else
+ {
symbol <<= 1;
offset &= ~match_bit;
}
@@ -616,26 +640,30 @@ static void lzma_literal(struct xz_dec_lzma2 *s)
}
/* Decode the length of the match into s->lzma.len. */
-static void lzma_len(struct xz_dec_lzma2 *s, struct lzma_len_dec *l,
- uint32_t pos_state)
+static void lzma_len(struct xz_dec_lzma2 *s, struct lzma_len_dec *l, uint32_t pos_state)
{
uint16_t *probs;
uint32_t limit;
- if (!rc_bit(&s->rc, &l->choice)) {
+ if (!rc_bit(&s->rc, &l->choice))
+ {
probs = l->low[pos_state];
limit = LEN_LOW_SYMBOLS;
s->lzma.len = MATCH_LEN_MIN;
- } else {
- if (!rc_bit(&s->rc, &l->choice2)) {
+ }
+ else
+ {
+ if (!rc_bit(&s->rc, &l->choice2))
+ {
probs = l->mid[pos_state];
limit = LEN_MID_SYMBOLS;
s->lzma.len = MATCH_LEN_MIN + LEN_LOW_SYMBOLS;
- } else {
+ }
+ else
+ {
probs = l->high;
limit = LEN_HIGH_SYMBOLS;
- s->lzma.len = MATCH_LEN_MIN + LEN_LOW_SYMBOLS
- + LEN_MID_SYMBOLS;
+ s->lzma.len = MATCH_LEN_MIN + LEN_LOW_SYMBOLS + LEN_MID_SYMBOLS;
}
}
@@ -660,23 +688,26 @@ static void lzma_match(struct xz_dec_lzma2 *s, uint32_t pos_state)
probs = s->lzma.dist_slot[lzma_get_dist_state(s->lzma.len)];
dist_slot = rc_bittree(&s->rc, probs, DIST_SLOTS) - DIST_SLOTS;
- if (dist_slot < DIST_MODEL_START) {
+ if (dist_slot < DIST_MODEL_START)
+ {
s->lzma.rep0 = dist_slot;
- } else {
+ }
+ else
+ {
limit = (dist_slot >> 1) - 1;
s->lzma.rep0 = 2 + (dist_slot & 1);
- if (dist_slot < DIST_MODEL_END) {
+ if (dist_slot < DIST_MODEL_END)
+ {
s->lzma.rep0 <<= limit;
- probs = s->lzma.dist_special + s->lzma.rep0
- - dist_slot - 1;
- rc_bittree_reverse(&s->rc, probs,
- &s->lzma.rep0, limit);
- } else {
+ probs = s->lzma.dist_special + s->lzma.rep0 - dist_slot - 1;
+ rc_bittree_reverse(&s->rc, probs, &s->lzma.rep0, limit);
+ }
+ else
+ {
rc_direct(&s->rc, &s->lzma.rep0, limit - ALIGN_BITS);
s->lzma.rep0 <<= ALIGN_BITS;
- rc_bittree_reverse(&s->rc, s->lzma.dist_align,
- &s->lzma.rep0, ALIGN_BITS);
+ rc_bittree_reverse(&s->rc, s->lzma.dist_align, &s->lzma.rep0, ALIGN_BITS);
}
}
}
@@ -689,20 +720,29 @@ static void lzma_rep_match(struct xz_dec_lzma2 *s, uint32_t pos_state)
{
uint32_t tmp;
- if (!rc_bit(&s->rc, &s->lzma.is_rep0[s->lzma.state])) {
- if (!rc_bit(&s->rc, &s->lzma.is_rep0_long[
- s->lzma.state][pos_state])) {
+ if (!rc_bit(&s->rc, &s->lzma.is_rep0[s->lzma.state]))
+ {
+ if (!rc_bit(&s->rc, &s->lzma.is_rep0_long[s->lzma.state][pos_state]))
+ {
lzma_state_short_rep(&s->lzma.state);
s->lzma.len = 1;
return;
}
- } else {
- if (!rc_bit(&s->rc, &s->lzma.is_rep1[s->lzma.state])) {
+ }
+ else
+ {
+ if (!rc_bit(&s->rc, &s->lzma.is_rep1[s->lzma.state]))
+ {
tmp = s->lzma.rep1;
- } else {
- if (!rc_bit(&s->rc, &s->lzma.is_rep2[s->lzma.state])) {
+ }
+ else
+ {
+ if (!rc_bit(&s->rc, &s->lzma.is_rep2[s->lzma.state]))
+ {
tmp = s->lzma.rep2;
- } else {
+ }
+ else
+ {
tmp = s->lzma.rep3;
s->lzma.rep3 = s->lzma.rep2;
}
@@ -734,13 +774,16 @@ static bool lzma_main(struct xz_dec_lzma2 *s)
* Decode more LZMA symbols. One iteration may consume up to
* LZMA_IN_REQUIRED - 1 bytes.
*/
- while (dict_has_space(&s->dict) && !rc_limit_exceeded(&s->rc)) {
+ while (dict_has_space(&s->dict) && !rc_limit_exceeded(&s->rc))
+ {
pos_state = s->dict.pos & s->lzma.pos_mask;
- if (!rc_bit(&s->rc, &s->lzma.is_match[
- s->lzma.state][pos_state])) {
+ if (!rc_bit(&s->rc, &s->lzma.is_match[s->lzma.state][pos_state]))
+ {
lzma_literal(s);
- } else {
+ }
+ else
+ {
if (rc_bit(&s->rc, &s->lzma.is_rep[s->lzma.state]))
lzma_rep_match(s, pos_state);
else
@@ -802,7 +845,8 @@ static bool lzma_props(struct xz_dec_lzma2 *s, uint8_t props)
return false;
s->lzma.pos_mask = 0;
- while (props >= 9 * 5) {
+ while (props >= 9 * 5)
+ {
props -= 9 * 5;
++s->lzma.pos_mask;
}
@@ -810,7 +854,8 @@ static bool lzma_props(struct xz_dec_lzma2 *s, uint8_t props)
s->lzma.pos_mask = (1 << s->lzma.pos_mask) - 1;
s->lzma.literal_pos_mask = 0;
- while (props >= 9) {
+ while (props >= 9)
+ {
props -= 9;
++s->lzma.literal_pos_mask;
}
@@ -849,7 +894,8 @@ static bool lzma2_lzma(struct xz_dec_lzma2 *s, struct xz_buf *b)
uint32_t tmp;
in_avail = b->in_size - b->in_pos;
- if (s->temp.size > 0 || s->lzma2.compressed == 0) {
+ if (s->temp.size > 0 || s->lzma2.compressed == 0)
+ {
tmp = 2 * LZMA_IN_REQUIRED - s->temp.size;
if (tmp > s->lzma2.compressed - s->temp.size)
tmp = s->lzma2.compressed - s->temp.size;
@@ -858,16 +904,19 @@ static bool lzma2_lzma(struct xz_dec_lzma2 *s, struct xz_buf *b)
memcpy(s->temp.buf + s->temp.size, b->in + b->in_pos, tmp);
- if (s->temp.size + tmp == s->lzma2.compressed) {
- memzero(s->temp.buf + s->temp.size + tmp,
- sizeof(s->temp.buf)
- - s->temp.size - tmp);
+ if (s->temp.size + tmp == s->lzma2.compressed)
+ {
+ memzero(s->temp.buf + s->temp.size + tmp, sizeof(s->temp.buf) - s->temp.size - tmp);
s->rc.in_limit = s->temp.size + tmp;
- } else if (s->temp.size + tmp < LZMA_IN_REQUIRED) {
+ }
+ else if (s->temp.size + tmp < LZMA_IN_REQUIRED)
+ {
s->temp.size += tmp;
b->in_pos += tmp;
return true;
- } else {
+ }
+ else
+ {
s->rc.in_limit = s->temp.size + tmp - LZMA_IN_REQUIRED;
}
@@ -879,10 +928,10 @@ static bool lzma2_lzma(struct xz_dec_lzma2 *s, struct xz_buf *b)
s->lzma2.compressed -= s->rc.in_pos;
- if (s->rc.in_pos < s->temp.size) {
+ if (s->rc.in_pos < s->temp.size)
+ {
s->temp.size -= s->rc.in_pos;
- memmove(s->temp.buf, s->temp.buf + s->rc.in_pos,
- s->temp.size);
+ memmove(s->temp.buf, s->temp.buf + s->rc.in_pos, s->temp.size);
return true;
}
@@ -891,7 +940,8 @@ static bool lzma2_lzma(struct xz_dec_lzma2 *s, struct xz_buf *b)
}
in_avail = b->in_size - b->in_pos;
- if (in_avail >= LZMA_IN_REQUIRED) {
+ if (in_avail >= LZMA_IN_REQUIRED)
+ {
s->rc.in = b->in;
s->rc.in_pos = b->in_pos;
@@ -912,7 +962,8 @@ static bool lzma2_lzma(struct xz_dec_lzma2 *s, struct xz_buf *b)
}
in_avail = b->in_size - b->in_pos;
- if (in_avail < LZMA_IN_REQUIRED) {
+ if (in_avail < LZMA_IN_REQUIRED)
+ {
if (in_avail > s->lzma2.compressed)
in_avail = s->lzma2.compressed;
@@ -928,13 +979,14 @@ static bool lzma2_lzma(struct xz_dec_lzma2 *s, struct xz_buf *b)
* Take care of the LZMA2 control layer, and forward the job of actual LZMA
* decoding or copying of uncompressed chunks to other functions.
*/
-XZ_EXTERN enum xz_ret xz_dec_lzma2_run(struct xz_dec_lzma2 *s,
- struct xz_buf *b)
+XZ_EXTERN enum xz_ret xz_dec_lzma2_run(struct xz_dec_lzma2 *s, struct xz_buf *b)
{
uint32_t tmp;
- while (b->in_pos < b->in_size || s->lzma2.sequence == SEQ_LZMA_RUN) {
- switch (s->lzma2.sequence) {
+ while (b->in_pos < b->in_size || s->lzma2.sequence == SEQ_LZMA_RUN)
+ {
+ switch (s->lzma2.sequence)
+ {
case SEQ_CONTROL:
/*
* LZMA2 control byte
@@ -972,38 +1024,45 @@ XZ_EXTERN enum xz_ret xz_dec_lzma2_run(struct xz_dec_lzma2 *s,
if (tmp == 0x00)