summaryrefslogtreecommitdiffstats
path: root/bbexample.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--bbexample.c (renamed from bbexample.cc)57
1 files changed, 30 insertions, 27 deletions
diff --git a/bbexample.cc b/bbexample.c
index df91300..f174875 100644
--- a/bbexample.cc
+++ b/bbexample.c
@@ -1,5 +1,5 @@
/* Buff to buff example - A test program for the lzlib library
- Copyright (C) 2010, 2011 Antonio Diaz Diaz.
+ Copyright (C) 2010, 2011, 2012 Antonio Diaz Diaz.
This program is free software: you have unlimited permission
to copy, distribute and modify it.
@@ -14,10 +14,10 @@
#ifndef __cplusplus
#include <stdbool.h>
#endif
+#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include <stdint.h>
#include <unistd.h>
#include "lzlib.h"
@@ -33,27 +33,27 @@
#endif
-// Compresses `size' bytes from `data'. Returns the address of a
-// malloc'd buffer containing the compressed data and its size in
-// `*out_sizep'.
-// In case of error, returns 0 and does not modify `*out_sizep'.
-
+/* Compresses 'size' bytes from 'data'. Returns the address of a
+ malloc'd buffer containing the compressed data and its size in
+ '*out_sizep'.
+ In case of error, returns 0 and does not modify '*out_sizep'.
+*/
uint8_t * bbcompress( const uint8_t * const data, const int size,
int * const out_sizep )
{
- int dict_size = 8 << 20; // 8 MiB
const int match_len_limit = 36;
const long long member_size = LLONG_MAX;
- if( dict_size > size ) dict_size = size;
+ int dict_size = 8 << 20; /* 8 MiB */
+ if( dict_size > size ) dict_size = size; /* saves memory */
if( dict_size < LZ_min_dictionary_size() )
dict_size = LZ_min_dictionary_size();
- struct LZ_Encoder * encoder =
+ struct LZ_Encoder * const encoder =
LZ_compress_open( dict_size, match_len_limit, member_size );
if( !encoder || LZ_compress_errno( encoder ) != LZ_ok )
{ LZ_compress_close( encoder ); return 0; }
- const int delta_size = (size < 256) ? 64 : size / 4; // size may be zero
- int new_data_size = delta_size; // initial size
+ const int delta_size = (size < 256) ? 64 : size / 4; /* size may be zero */
+ int new_data_size = delta_size; /* initial size */
uint8_t * new_data = (uint8_t *)malloc( new_data_size );
if( !new_data )
{ LZ_compress_close( encoder ); return 0; }
@@ -81,9 +81,10 @@ uint8_t * bbcompress( const uint8_t * const data, const int size,
if( LZ_compress_finished( encoder ) == 1 ) break;
if( new_pos >= new_data_size )
{
- void * const tmp = realloc( new_data, new_data_size + delta_size );
+ uint8_t * const tmp =
+ (uint8_t *)realloc( new_data, new_data_size + delta_size );
if( !tmp ) { error = true; break; }
- new_data = (uint8_t *)tmp;
+ new_data = tmp;
new_data_size += delta_size;
}
}
@@ -95,20 +96,20 @@ uint8_t * bbcompress( const uint8_t * const data, const int size,
}
-// Decompresses `size' bytes from `data'. Returns the address of a
-// malloc'd buffer containing the decompressed data and its size in
-// `*out_sizep'.
-// In case of error, returns 0 and does not modify `*out_sizep'.
-
+/* Decompresses 'size' bytes from 'data'. Returns the address of a
+ malloc'd buffer containing the decompressed data and its size in
+ '*out_sizep'.
+ In case of error, returns 0 and does not modify '*out_sizep'.
+*/
uint8_t * bbdecompress( const uint8_t * const data, const int size,
int * const out_sizep )
{
- struct LZ_Decoder * decoder = LZ_decompress_open();
+ struct LZ_Decoder * const decoder = LZ_decompress_open();
if( !decoder || LZ_decompress_errno( decoder ) != LZ_ok )
{ LZ_decompress_close( decoder ); return 0; }
- const int delta_size = size;
- int new_data_size = delta_size; // initial size
+ const int delta_size = size; /* size must be > zero */
+ int new_data_size = delta_size; /* initial size */
uint8_t * new_data = (uint8_t *)malloc( new_data_size );
if( !new_data )
{ LZ_decompress_close( decoder ); return 0; }
@@ -136,9 +137,10 @@ uint8_t * bbdecompress( const uint8_t * const data, const int size,
if( LZ_decompress_finished( decoder ) == 1 ) break;
if( new_pos >= new_data_size )
{
- void * const tmp = realloc( new_data, new_data_size + delta_size );
+ uint8_t * const tmp =
+ (uint8_t *)realloc( new_data, new_data_size + delta_size );
if( !tmp ) { error = true; break; }
- new_data = (uint8_t *)tmp;
+ new_data = tmp;
new_data_size += delta_size;
}
}
@@ -161,7 +163,7 @@ int main( const int argc, const char * const argv[] )
FILE *file = fopen( argv[1], "rb" );
if( !file )
{
- fprintf( stderr, "bbexample: Can't open file `%s' for reading\n", argv[1] );
+ fprintf( stderr, "bbexample: Can't open file '%s' for reading\n", argv[1] );
return 1;
}
@@ -172,10 +174,11 @@ int main( const int argc, const char * const argv[] )
fprintf( stderr, "bbexample: Not enough memory.\n" );
return 1;
}
+
const int in_size = fread( in_buffer, 1, in_buffer_size, file );
if( in_size >= in_buffer_size )
{
- fprintf( stderr, "bbexample: Input file `%s' is too big.\n", argv[1] );
+ fprintf( stderr, "bbexample: Input file '%s' is too big.\n", argv[1] );
return 1;
}
fclose( file );
@@ -197,7 +200,7 @@ int main( const int argc, const char * const argv[] )
}
if( in_size != out_size ||
- ( out_size > 0 && memcmp( in_buffer, out_buffer, out_size ) ) )
+ ( in_size > 0 && memcmp( in_buffer, out_buffer, in_size ) != 0 ) )
{
fprintf( stderr, "bbexample: Decompressed data differs from original.\n" );
return 1;