From 816b508c140a36259ad9864d1b655b8336e9ac30 Mon Sep 17 00:00:00 2001 From: Ricardo Markiewicz Date: Mon, 21 Jun 2004 20:47:10 +0000 Subject: [PATCH] Agrego descompresor. No funciona porque me esta faltando el vector "pos" del MTF que no estoy seguro de donde sacarlo, hay que ver donde lo guardamos en el archivo (delante de cada bloque ?) --- src/jacu.c | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/src/jacu.c b/src/jacu.c index 21f31c5..3d18ed3 100644 --- a/src/jacu.c +++ b/src/jacu.c @@ -103,8 +103,39 @@ int main(int argc, char* argv[]) if (dflag == 1) { /* Descomprimo */ - return shuff_decode_file(argv[optind],argv[optind+1]); + FILE *fp_out; + VFILE *fp_in; + unsigned long int block_size, k; + char *block, *mtf, *orig; + int *pos; + + shuff_decode_file(argv[optind], "tmp.comp"); /*argv[optind+1]);*/ + fp_in = vfopen("tmp.comp", "r", 0); + fp_out = fopen(argv[optind+1], "wb"); + + while (!vfeof(fp_in)) { + block_size = 0; + vfread(&block_size, sizeof(unsigned long int), 1, fp_in); + if (block_size > 0) { + block = malloc((block_size+sizeof(unsigned long int))*sizeof(char)); + orig = malloc(block_size*sizeof(char)); + vfread(block, block_size, sizeof(char), fp_in); + + mtf = jacu_mtf_inv(block, /*XXX NO LO TENGO XXX */pos, block_size); + + memcpy(&k, block, sizeof(unsigned long int)); + + bs_restore(orig, block+sizeof(unsigned long int), k, block_size); + + fwrite(orig, block_size, sizeof(char), fp_out); + free(block); + free(orig); + free(mtf); + } + } + vfclose(fp_in); + fclose(fp_out); } - + return 0; } -- 2.43.0