Move openssl-0.9/ to openssl/.
[dragonfly.git] / crypto / openssl / crypto / comp / c_rle.c
blobefd366fa2239aa08594f50c3d3fe4a266164be55
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <string.h>
4 #include <openssl/objects.h>
5 #include <openssl/comp.h>
7 static int rle_compress_block(COMP_CTX *ctx, unsigned char *out,
8 unsigned int olen, unsigned char *in, unsigned int ilen);
9 static int rle_expand_block(COMP_CTX *ctx, unsigned char *out,
10 unsigned int olen, unsigned char *in, unsigned int ilen);
12 static COMP_METHOD rle_method={
13 NID_rle_compression,
14 LN_rle_compression,
15 NULL,
16 NULL,
17 rle_compress_block,
18 rle_expand_block,
19 NULL,
20 NULL,
23 COMP_METHOD *COMP_rle(void)
25 return(&rle_method);
28 static int rle_compress_block(COMP_CTX *ctx, unsigned char *out,
29 unsigned int olen, unsigned char *in, unsigned int ilen)
31 /* int i; */
33 if (olen < (ilen+1))
35 /* ZZZZZZZZZZZZZZZZZZZZZZ */
36 return(-1);
39 *(out++)=0;
40 memcpy(out,in,ilen);
41 return(ilen+1);
44 static int rle_expand_block(COMP_CTX *ctx, unsigned char *out,
45 unsigned int olen, unsigned char *in, unsigned int ilen)
47 int i;
49 if (olen < (ilen-1))
51 /* ZZZZZZZZZZZZZZZZZZZZZZ */
52 return(-1);
55 i= *(in++);
56 if (i == 0)
58 memcpy(out,in,ilen-1);
60 return(ilen-1);