#include #include #include #include "fraenkel_compress.h" unsigned int compress_fraenkel( unsigned char * src, unsigned char * dst, unsigned int len ) { int i,j,r,s = 0,q=0; char * tmp = malloc(len); char * msrc = src; assert(len<1024*256); do { for(s=0,r=0,j=0,i=0;i 0); /* last run, from f until i and swap */ for(j=0;i>f;) odst[j++] = dst[--i]; return j; } #ifdef TEST_FRAENKEL int main(int argc, char ** argv) { unsigned char a[] = { /* 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 */ 0,0,1,4,0,0,0,1, 5,0,0,0,7,0,0,0, 0,0,0,7,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,7,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,7,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,7,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,7, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,7,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,7,0,0, 0,0,0,0,0,0,0,0, 0,0,1,4,0,0,0,1,99,0,0,0,7,0,0,0, 0,0,0,7,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 7,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,7,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,7,0, 0,0,0,0,0,0,0,0, 7,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,7,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,7,0 }; unsigned char b[ 1024 ]; unsigned char c[ 1024 ]; int i,l,m; printf("in :"); for(i=0;i %d (%.02f) -> %d\n",sizeof(a),l,100.0*l/sizeof(a),m); return(0); } #endif