From eb9264fc2ef786e8c4e3d430834b9b9e9e0b9c0a Mon Sep 17 00:00:00 2001 From: Rob Austein Date: Mon, 9 Oct 2006 16:00:16 +0000 Subject: OpenSSL 0.9.8d base code import svn path=/openssl/vendor/0.9.8d/CHANGES; revision=373 --- openssl/vendor/0.9.8d/crypto/comp/c_rle.c | 62 +++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 openssl/vendor/0.9.8d/crypto/comp/c_rle.c (limited to 'openssl/vendor/0.9.8d/crypto/comp/c_rle.c') diff --git a/openssl/vendor/0.9.8d/crypto/comp/c_rle.c b/openssl/vendor/0.9.8d/crypto/comp/c_rle.c new file mode 100644 index 00000000..efd366fa --- /dev/null +++ b/openssl/vendor/0.9.8d/crypto/comp/c_rle.c @@ -0,0 +1,62 @@ +#include +#include +#include +#include +#include + +static int rle_compress_block(COMP_CTX *ctx, unsigned char *out, + unsigned int olen, unsigned char *in, unsigned int ilen); +static int rle_expand_block(COMP_CTX *ctx, unsigned char *out, + unsigned int olen, unsigned char *in, unsigned int ilen); + +static COMP_METHOD rle_method={ + NID_rle_compression, + LN_rle_compression, + NULL, + NULL, + rle_compress_block, + rle_expand_block, + NULL, + NULL, + }; + +COMP_METHOD *COMP_rle(void) + { + return(&rle_method); + } + +static int rle_compress_block(COMP_CTX *ctx, unsigned char *out, + unsigned int olen, unsigned char *in, unsigned int ilen) + { + /* int i; */ + + if (olen < (ilen+1)) + { + /* ZZZZZZZZZZZZZZZZZZZZZZ */ + return(-1); + } + + *(out++)=0; + memcpy(out,in,ilen); + return(ilen+1); + } + +static int rle_expand_block(COMP_CTX *ctx, unsigned char *out, + unsigned int olen, unsigned char *in, unsigned int ilen) + { + int i; + + if (olen < (ilen-1)) + { + /* ZZZZZZZZZZZZZZZZZZZZZZ */ + return(-1); + } + + i= *(in++); + if (i == 0) + { + memcpy(out,in,ilen-1); + } + return(ilen-1); + } + -- cgit v1.2.3