sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: sl@0: EXPORT_C COMP_CTX *COMP_CTX_new(COMP_METHOD *meth) sl@0: { sl@0: COMP_CTX *ret; sl@0: sl@0: if ((ret=(COMP_CTX *)OPENSSL_malloc(sizeof(COMP_CTX))) == NULL) sl@0: { sl@0: /* ZZZZZZZZZZZZZZZZ */ sl@0: return(NULL); sl@0: } sl@0: memset(ret,0,sizeof(COMP_CTX)); sl@0: ret->meth=meth; sl@0: if ((ret->meth->init != NULL) && !ret->meth->init(ret)) sl@0: { sl@0: OPENSSL_free(ret); sl@0: ret=NULL; sl@0: } sl@0: return(ret); sl@0: } sl@0: sl@0: EXPORT_C void COMP_CTX_free(COMP_CTX *ctx) sl@0: { sl@0: if(ctx == NULL) sl@0: return; sl@0: sl@0: if (ctx->meth->finish != NULL) sl@0: ctx->meth->finish(ctx); sl@0: sl@0: OPENSSL_free(ctx); sl@0: } sl@0: sl@0: EXPORT_C int COMP_compress_block(COMP_CTX *ctx, unsigned char *out, int olen, sl@0: unsigned char *in, int ilen) sl@0: { sl@0: int ret; sl@0: if (ctx->meth->compress == NULL) sl@0: { sl@0: /* ZZZZZZZZZZZZZZZZZ */ sl@0: return(-1); sl@0: } sl@0: ret=ctx->meth->compress(ctx,out,olen,in,ilen); sl@0: if (ret > 0) sl@0: { sl@0: ctx->compress_in+=ilen; sl@0: ctx->compress_out+=ret; sl@0: } sl@0: return(ret); sl@0: } sl@0: sl@0: EXPORT_C int COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen, sl@0: unsigned char *in, int ilen) sl@0: { sl@0: int ret; sl@0: sl@0: if (ctx->meth->expand == NULL) sl@0: { sl@0: /* ZZZZZZZZZZZZZZZZZ */ sl@0: return(-1); sl@0: } sl@0: ret=ctx->meth->expand(ctx,out,olen,in,ilen); sl@0: if (ret > 0) sl@0: { sl@0: ctx->expand_in+=ilen; sl@0: ctx->expand_out+=ret; sl@0: } sl@0: return(ret); sl@0: }