From 11f40cfc1b5b8f935d0ff13f4e72a060f6d2dc3a Mon Sep 17 00:00:00 2001 From: Alvin Wong Date: Mon, 12 Apr 2021 20:07:06 +0800 Subject: [PATCH] Reformat lzfx sources --- source/Core/lzfx/lzfx-host-compress.c | 74 ++-- source/Core/lzfx/lzfx.c | 505 +++++++++++++------------- source/Core/lzfx/lzfx.h | 33 +- 3 files changed, 305 insertions(+), 307 deletions(-) diff --git a/source/Core/lzfx/lzfx-host-compress.c b/source/Core/lzfx/lzfx-host-compress.c index 1a3e6f79..b135b975 100644 --- a/source/Core/lzfx/lzfx-host-compress.c +++ b/source/Core/lzfx/lzfx-host-compress.c @@ -5,48 +5,44 @@ /* Program to demonstrate file compression. Don't use it in the real world! */ -int main(int argc, char **argv) -{ - if (argc == 3) - { - /* open input */ - FILE *f = fopen(argv[1], "rb"); - if (!f) { - printf("Error: %s\n", argv[1]); - return 1; - } +int main(int argc, char **argv) { + if (argc == 3) { + /* open input */ + FILE *f = fopen(argv[1], "rb"); + if (!f) { + printf("Error: %s\n", argv[1]); + return 1; + } - /* get size */ - fseek(f, 0, SEEK_END); - int inputsize = ftell(f); - fseek(f, 0, SEEK_SET); + /* get size */ + fseek(f, 0, SEEK_END); + int inputsize = ftell(f); + fseek(f, 0, SEEK_SET); - /* read */ - char *input = malloc(inputsize); - fread(input, inputsize, 1, f); - fclose(f); + /* read */ + char *input = malloc(inputsize); + fread(input, inputsize, 1, f); + fclose(f); - /* compress */ - int outputsize = inputsize + 1; /* buffer overflow */ - char *output = malloc(outputsize); - lzfx_compress(input, inputsize, output, &outputsize); + /* compress */ + int outputsize = inputsize + 1; /* buffer overflow */ + char *output = malloc(outputsize); + lzfx_compress(input, inputsize, output, &outputsize); - /* open output */ - f = fopen(argv[2], "wb"); - if (!f) { - printf("Error: %s\n", argv[1]); - return 1; - } + /* open output */ + f = fopen(argv[2], "wb"); + if (!f) { + printf("Error: %s\n", argv[1]); + return 1; + } - /* write */ - fwrite(output, outputsize, 1, f); - fclose(f); + /* write */ + fwrite(output, outputsize, 1, f); + fclose(f); - return 0; - } - else - { - printf("Compresses a file.\n\nUsage: lzfx-raw input output\n"); - return 1; - } -} \ No newline at end of file + return 0; + } else { + printf("Compresses a file.\n\nUsage: lzfx-raw input output\n"); + return 1; + } +} diff --git a/source/Core/lzfx/lzfx.c b/source/Core/lzfx/lzfx.c index 47b387a2..81d1560a 100644 --- a/source/Core/lzfx/lzfx.c +++ b/source/Core/lzfx/lzfx.c @@ -6,19 +6,19 @@ * codebase written by Marc Lehmann. This code is released under the BSD * license. License and original copyright statement follow. * - * + * * Copyright (c) 2000-2008 Marc Alexander Lehmann - * + * * Redistribution and use in source and binary forms, with or without modifica- * tion, are permitted provided that the following conditions are met: - * + * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. - * + * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * + * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MER- * CHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO @@ -29,7 +29,7 @@ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTH- * ERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. -*/ + */ #include "lzfx.h" @@ -37,34 +37,33 @@ /* We need this for memset */ #ifdef __cplusplus -# include +#include #else -# include +#include #endif #if __GNUC__ >= 3 -# define fx_expect_false(expr) __builtin_expect((expr) != 0, 0) -# define fx_expect_true(expr) __builtin_expect((expr) != 0, 1) +#define fx_expect_false(expr) __builtin_expect((expr) != 0, 0) +#define fx_expect_true(expr) __builtin_expect((expr) != 0, 1) #else -# define fx_expect_false(expr) (expr) -# define fx_expect_true(expr) (expr) +#define fx_expect_false(expr) (expr) +#define fx_expect_true(expr) (expr) #endif typedef unsigned char u8; -typedef const u8 *LZSTATE[LZFX_HSIZE]; +typedef const u8 * LZSTATE[LZFX_HSIZE]; /* Define the hash function */ -#define LZFX_FRST(p) (((p[0]) << 8) | p[1]) -#define LZFX_NEXT(v,p) (((v) << 8) | p[2]) -#define LZFX_IDX(h) ((( h >> (3*8 - LZFX_HLOG)) - h ) & (LZFX_HSIZE - 1)) +#define LZFX_FRST(p) (((p[0]) << 8) | p[1]) +#define LZFX_NEXT(v, p) (((v) << 8) | p[2]) +#define LZFX_IDX(h) (((h >> (3 * 8 - LZFX_HLOG)) - h) & (LZFX_HSIZE - 1)) /* These cannot be changed, as they are related to the compressed format. */ -#define LZFX_MAX_LIT (1 << 5) - 1 -#define LZFX_MAX_OFF (1 << 13) -#define LZFX_MAX_REF ((1 << 8) + (1 << 3) - 2) +#define LZFX_MAX_LIT (1 << 5) - 1 +#define LZFX_MAX_OFF (1 << 13) +#define LZFX_MAX_REF ((1 << 8) + (1 << 3) - 2) -static -int lzfx_getsize(const void* ibuf, unsigned int ilen, unsigned int *olen); +static int lzfx_getsize(const void *ibuf, unsigned int ilen, unsigned int *olen); /* Compressed format @@ -83,270 +82,276 @@ int lzfx_getsize(const void* ibuf, unsigned int ilen, unsigned int *olen); oooooLLL oooooooo for backrefs of real length < 7 (1 <= L < 7) ooooo111 LLLLLLLL oooooooo for backrefs of real length >= 7 (L >= 7) */ -int lzfx_compress(const void *const ibuf, const unsigned int ilen, - void *obuf, unsigned int *const olen){ +int lzfx_compress(const void *const ibuf, const unsigned int ilen, void *obuf, unsigned int *const olen) { - /* Hash table; an array of u8*'s which point - to various locations in the input buffer */ - const u8 *htab[LZFX_HSIZE]; + /* Hash table; an array of u8*'s which point + to various locations in the input buffer */ + const u8 *htab[LZFX_HSIZE]; - const u8 **hslot; /* Pointer to entry in hash table */ - unsigned int hval; /* Hash value generated by macros above */ - const u8 *ref; /* Pointer to candidate match location in input */ + const u8 ** hslot; /* Pointer to entry in hash table */ + unsigned int hval; /* Hash value generated by macros above */ + const u8 * ref; /* Pointer to candidate match location in input */ - const u8 *ip = (const u8 *)ibuf; - const u8 *const in_end = ip + ilen; + const u8 * ip = (const u8 *)ibuf; + const u8 *const in_end = ip + ilen; - u8 *op = (u8 *)obuf; - const u8 *const out_end = (olen == NULL ? NULL : op + *olen); + u8 * op = (u8 *)obuf; + const u8 *const out_end = (olen == NULL ? NULL : op + *olen); - int lit; /* # of bytes in current literal run */ + int lit; /* # of bytes in current literal run */ -#if defined (WIN32) && defined (_M_X64) - unsigned _int64 off; /* workaround for missing POSIX compliance */ +#if defined(WIN32) && defined(_M_X64) + unsigned _int64 off; /* workaround for missing POSIX compliance */ #else - unsigned long off; + unsigned long off; #endif - if(olen == NULL) return LZFX_EARGS; - if(ibuf == NULL){ - if(ilen != 0) return LZFX_EARGS; - *olen = 0; - return 0; - } - if(obuf == NULL) return LZFX_EARGS; - - memset(htab, 0, sizeof(htab)); - - /* Start a literal run. Whenever we do this the output pointer is - advanced because the current byte will hold the encoded length. */ - lit = 0; op++; - - hval = LZFX_FRST(ip); - - while(ip + 2 < in_end){ /* The NEXT macro reads 2 bytes ahead */ - - hval = LZFX_NEXT(hval, ip); - hslot = htab + LZFX_IDX(hval); - - ref = *hslot; *hslot = ip; - - if( ref < ip - && (off = ip - ref - 1) < LZFX_MAX_OFF - && ip + 4 < in_end /* Backref takes up to 3 bytes, so don't bother */ - && ref > (u8 *)ibuf - && ref[0] == ip[0] - && ref[1] == ip[1] - && ref[2] == ip[2] ) { - - unsigned int len = 3; /* We already know 3 bytes match */ - const unsigned int maxlen = in_end - ip - 2 > LZFX_MAX_REF ? - LZFX_MAX_REF : in_end - ip - 2; - - /* lit == 0: op + 3 must be < out_end (because we undo the run) - lit != 0: op + 3 + 1 must be < out_end */ - if(fx_expect_false(op - !lit + 3 + 1 >= out_end)) - return LZFX_ESIZE; - - op [- lit - 1] = lit << 3;/* Terminate literal run */ - op -= !lit; /* Undo run if length is zero */ - - /* Start checking at the fourth byte */ - while (len < maxlen && ref[len] == ip[len]) - len++; - - /* Format 1: [oooooLLL oooooooo] */ - if (len < 7) { - *op++ = ((off >> 8) << 3) + len; - *op++ = off; - - /* Format 2: [ooooo111 LLLLLLLL oooooooo] */ - } else { - *op++ = ((off >> 8) << 3) + 7; - *op++ = len - 7; - *op++ = off; - } - - lit = 0; op++; - - ip += len - 1; /* ip = initial ip + #octets - 1 */ - - if (fx_expect_false (ip + 3 >= in_end)){ - ip++; /* Code following expects exit at bottom of loop */ - break; - } - - hval = LZFX_FRST (ip); - hval = LZFX_NEXT (hval, ip); - htab[LZFX_IDX (hval)] = ip; - - ip++; /* ip = initial ip + #octets */ - - } else { - /* Keep copying literal bytes */ - - if (fx_expect_false (op >= out_end)) return LZFX_ESIZE; - - lit++; *op++ = *ip++; - - if (fx_expect_false (lit == LZFX_MAX_LIT)) { - op [- lit - 1] = lit << 3; /* stop run */ - lit = 0; op++; /* start run */ - } - - } /* if() found match in htab */ - - } /* while(ip < ilen -2) */ - - /* At most 3 bytes remain in input. We therefore need 4 bytes available - in the output buffer to store them (3 data + ctrl byte).*/ - if (op + 3 > out_end) return LZFX_ESIZE; - - while (ip < in_end) { - - lit++; *op++ = *ip++; - - if (fx_expect_false (lit == LZFX_MAX_LIT)){ - op [- lit - 1] = lit << 3; - lit = 0; op++; - } - } - - op [- lit - 1] = lit << 3; - op -= !lit; - - *olen = op - (u8 *)obuf; + if (olen == NULL) + return LZFX_EARGS; + if (ibuf == NULL) { + if (ilen != 0) + return LZFX_EARGS; + *olen = 0; return 0; + } + if (obuf == NULL) + return LZFX_EARGS; + + memset(htab, 0, sizeof(htab)); + + /* Start a literal run. Whenever we do this the output pointer is + advanced because the current byte will hold the encoded length. */ + lit = 0; + op++; + + hval = LZFX_FRST(ip); + + while (ip + 2 < in_end) { /* The NEXT macro reads 2 bytes ahead */ + + hval = LZFX_NEXT(hval, ip); + hslot = htab + LZFX_IDX(hval); + + ref = *hslot; + *hslot = ip; + + if (ref < ip && (off = ip - ref - 1) < LZFX_MAX_OFF && ip + 4 < in_end /* Backref takes up to 3 bytes, so don't bother */ + && ref > (u8 *)ibuf && ref[0] == ip[0] && ref[1] == ip[1] && ref[2] == ip[2]) { + + unsigned int len = 3; /* We already know 3 bytes match */ + const unsigned int maxlen = in_end - ip - 2 > LZFX_MAX_REF ? LZFX_MAX_REF : in_end - ip - 2; + + /* lit == 0: op + 3 must be < out_end (because we undo the run) + lit != 0: op + 3 + 1 must be < out_end */ + if (fx_expect_false(op - !lit + 3 + 1 >= out_end)) + return LZFX_ESIZE; + + op[-lit - 1] = lit << 3; /* Terminate literal run */ + op -= !lit; /* Undo run if length is zero */ + + /* Start checking at the fourth byte */ + while (len < maxlen && ref[len] == ip[len]) + len++; + + /* Format 1: [oooooLLL oooooooo] */ + if (len < 7) { + *op++ = ((off >> 8) << 3) + len; + *op++ = off; + + /* Format 2: [ooooo111 LLLLLLLL oooooooo] */ + } else { + *op++ = ((off >> 8) << 3) + 7; + *op++ = len - 7; + *op++ = off; + } + + lit = 0; + op++; + + ip += len - 1; /* ip = initial ip + #octets - 1 */ + + if (fx_expect_false(ip + 3 >= in_end)) { + ip++; /* Code following expects exit at bottom of loop */ + break; + } + + hval = LZFX_FRST(ip); + hval = LZFX_NEXT(hval, ip); + htab[LZFX_IDX(hval)] = ip; + + ip++; /* ip = initial ip + #octets */ + + } else { + /* Keep copying literal bytes */ + + if (fx_expect_false(op >= out_end)) + return LZFX_ESIZE; + + lit++; + *op++ = *ip++; + + if (fx_expect_false(lit == LZFX_MAX_LIT)) { + op[-lit - 1] = lit << 3; /* stop run */ + lit = 0; + op++; /* start run */ + } + + } /* if() found match in htab */ + + } /* while(ip < ilen -2) */ + + /* At most 3 bytes remain in input. We therefore need 4 bytes available + in the output buffer to store them (3 data + ctrl byte).*/ + if (op + 3 > out_end) + return LZFX_ESIZE; + + while (ip < in_end) { + + lit++; + *op++ = *ip++; + + if (fx_expect_false(lit == LZFX_MAX_LIT)) { + op[-lit - 1] = lit << 3; + lit = 0; + op++; + } + } + + op[-lit - 1] = lit << 3; + op -= !lit; + + *olen = op - (u8 *)obuf; + return 0; } /* Decompressor */ -int lzfx_decompress(const void* ibuf, unsigned int ilen, - void* obuf, unsigned int *olen){ +int lzfx_decompress(const void *ibuf, unsigned int ilen, void *obuf, unsigned int *olen) { - u8 const *ip = (const u8 *)ibuf; - u8 const *const in_end = ip + ilen; - u8 *op = (u8 *)obuf; - u8 const *const out_end = (olen == NULL ? NULL : op + *olen); - - unsigned int remain_len = 0; - int rc; + u8 const * ip = (const u8 *)ibuf; + u8 const *const in_end = ip + ilen; + u8 * op = (u8 *)obuf; + u8 const *const out_end = (olen == NULL ? NULL : op + *olen); - if(olen == NULL) return LZFX_EARGS; - if(ibuf == NULL){ - if(ilen != 0) return LZFX_EARGS; - *olen = 0; - return 0; - } - if(obuf == NULL){ - if(olen != 0) return LZFX_EARGS; - return lzfx_getsize(ibuf, ilen, olen); - } - - do { - unsigned int ctrl = *ip++; - - /* Format LLLLL000: a literal byte string follows, of length L */ - if((ctrl & 0x7) == 0) { - unsigned int len = ctrl >> 3; - - if(fx_expect_false(op + len > out_end)){ - --ip; /* Rewind to control byte */ - goto guess; - } - if(fx_expect_false(ip + len > in_end)) return LZFX_ECORRUPT; - - do - *op++ = *ip++; - while(--len); - - /* Format #1 [oooooLLL oooooooo]: backref of length L+1 - ^^^^^ ^^^^^^^^ - A B - #2 [ooooo111 LLLLLLLL oooooooo] backref of length L+7 - ^^^^^ ^^^^^^^^ - A B - In both cases the location of the backref is computed from the - remaining part of the data as follows: - - location = op - A*256 - B - 1 - */ - } else { - - unsigned int len = ctrl & 0x7; - u8 *ref = op - ((ctrl >> 3) << 8) - 1; - - if(len==7) len += *ip++; /* i.e. format #2 */ - - if(fx_expect_false(op + len > out_end)){ - ip -= (len >= 7) ? 2 : 1; /* Rewind to control byte */ - goto guess; - } - if(fx_expect_false(ip >= in_end)) return LZFX_ECORRUPT; - - ref -= *ip++; - - if(fx_expect_false(ref < (u8*)obuf)) return LZFX_ECORRUPT; - - do - *op++ = *ref++; - while (--len); - } - - } while (ip < in_end); - - *olen = op - (u8 *)obuf; + unsigned int remain_len = 0; + int rc; + if (olen == NULL) + return LZFX_EARGS; + if (ibuf == NULL) { + if (ilen != 0) + return LZFX_EARGS; + *olen = 0; return 0; + } + if (obuf == NULL) { + if (olen != 0) + return LZFX_EARGS; + return lzfx_getsize(ibuf, ilen, olen); + } + + do { + unsigned int ctrl = *ip++; + + /* Format LLLLL000: a literal byte string follows, of length L */ + if ((ctrl & 0x7) == 0) { + unsigned int len = ctrl >> 3; + + if (fx_expect_false(op + len > out_end)) { + --ip; /* Rewind to control byte */ + goto guess; + } + if (fx_expect_false(ip + len > in_end)) + return LZFX_ECORRUPT; + + do + *op++ = *ip++; + while (--len); + + /* Format #1 [oooooLLL oooooooo]: backref of length L+1 + ^^^^^ ^^^^^^^^ + A B + #2 [ooooo111 LLLLLLLL oooooooo] backref of length L+7 + ^^^^^ ^^^^^^^^ + A B + In both cases the location of the backref is computed from the + remaining part of the data as follows: + + location = op - A*256 - B - 1 + */ + } else { + + unsigned int len = ctrl & 0x7; + u8 * ref = op - ((ctrl >> 3) << 8) - 1; + + if (len == 7) + len += *ip++; /* i.e. format #2 */ + + if (fx_expect_false(op + len > out_end)) { + ip -= (len >= 7) ? 2 : 1; /* Rewind to control byte */ + goto guess; + } + if (fx_expect_false(ip >= in_end)) + return LZFX_ECORRUPT; + + ref -= *ip++; + + if (fx_expect_false(ref < (u8 *)obuf)) + return LZFX_ECORRUPT; + + do + *op++ = *ref++; + while (--len); + } + + } while (ip < in_end); + + *olen = op - (u8 *)obuf; + + return 0; guess: - rc = lzfx_getsize(ip, ilen - (ip-(u8*)ibuf), &remain_len); - if(rc>=0) *olen = remain_len + (op - (u8*)obuf); - return rc; + rc = lzfx_getsize(ip, ilen - (ip - (u8 *)ibuf), &remain_len); + if (rc >= 0) + *olen = remain_len + (op - (u8 *)obuf); + return rc; } /* Guess len. No parameters may be NULL; this is not checked. */ -static -int lzfx_getsize(const void* ibuf, unsigned int ilen, unsigned int *olen){ +static int lzfx_getsize(const void *ibuf, unsigned int ilen, unsigned int *olen) { - u8 const *ip = (const u8 *)ibuf; - u8 const *const in_end = ip + ilen; - int tot_len = 0; - - while (ip < in_end) { + u8 const * ip = (const u8 *)ibuf; + u8 const *const in_end = ip + ilen; + int tot_len = 0; - unsigned int ctrl = *ip++; + while (ip < in_end) { - if((ctrl & 0x7) == 0) { + unsigned int ctrl = *ip++; - if(ip + (ctrl >> 3) > in_end) - return LZFX_ECORRUPT; + if ((ctrl & 0x7) == 0) { - tot_len += (ctrl >> 3); - ip += (ctrl >> 3); + if (ip + (ctrl >> 3) > in_end) + return LZFX_ECORRUPT; - } else { + tot_len += (ctrl >> 3); + ip += (ctrl >> 3); - unsigned int len = ctrl & 0x7; + } else { - if(len==7){ /* i.e. format #2 */ - len += *ip++; - } + unsigned int len = ctrl & 0x7; - if(ip >= in_end) return LZFX_ECORRUPT; + if (len == 7) { /* i.e. format #2 */ + len += *ip++; + } - ip++; /* skip the ref byte */ + if (ip >= in_end) + return LZFX_ECORRUPT; - tot_len += len; - - } + ip++; /* skip the ref byte */ + tot_len += len; } + } - *olen = tot_len; + *olen = tot_len; - return 0; + return 0; } - - - - diff --git a/source/Core/lzfx/lzfx.h b/source/Core/lzfx/lzfx.h index 4d7c560b..7b6e472e 100644 --- a/source/Core/lzfx/lzfx.h +++ b/source/Core/lzfx/lzfx.h @@ -6,19 +6,19 @@ * codebase written by Marc Lehmann. This code is released under the BSD * license. License and original copyright statement follow. * - * + * * Copyright (c) 2000-2008 Marc Alexander Lehmann - * + * * Redistribution and use in source and binary forms, with or without modifica- * tion, are permitted provided that the following conditions are met: - * + * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. - * + * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * + * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MER- * CHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO @@ -29,7 +29,7 @@ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTH- * ERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. -*/ + */ #ifndef LZFX_H #define LZFX_H @@ -44,19 +44,19 @@ extern "C" { to read each other's output, although the output itself is not guaranteed to be byte-for-byte identical. */ -#define LZFX_VERSION_MAJOR 0 -#define LZFX_VERSION_MINOR 1 -#define LZFX_VERSION_STRING "0.1" +#define LZFX_VERSION_MAJOR 0 +#define LZFX_VERSION_MINOR 1 +#define LZFX_VERSION_STRING "0.1" /* Hashtable size (2**LZFX_HLOG entries) */ #ifndef LZFX_HLOG -# define LZFX_HLOG 16 +#define LZFX_HLOG 16 #endif /* Predefined errors. */ -#define LZFX_ESIZE -1 /* Output buffer too small */ -#define LZFX_ECORRUPT -2 /* Invalid data for decompression */ -#define LZFX_EARGS -3 /* Arguments invalid (NULL) */ +#define LZFX_ESIZE -1 /* Output buffer too small */ +#define LZFX_ECORRUPT -2 /* Invalid data for decompression */ +#define LZFX_EARGS -3 /* Arguments invalid (NULL) */ /* Buffer-to buffer compression. @@ -67,8 +67,7 @@ extern "C" { olen contains the compressed size in bytes. On failure, a negative value is returned and olen is not modified. */ -int lzfx_compress(const void* ibuf, unsigned int ilen, - void* obuf, unsigned int *olen); +int lzfx_compress(const void *ibuf, unsigned int ilen, void *obuf, unsigned int *olen); /* Buffer-to-buffer decompression. @@ -87,9 +86,7 @@ int lzfx_compress(const void* ibuf, unsigned int ilen, stream and is consequently very fast. Argument obuf may be NULL in this case only. */ -int lzfx_decompress(const void* ibuf, unsigned int ilen, - void* obuf, unsigned int *olen); - +int lzfx_decompress(const void *ibuf, unsigned int ilen, void *obuf, unsigned int *olen); #ifdef __cplusplus } /* extern "C" */