X-Git-Url: https://git.llucax.com/z.facultad/75.06/jacu.git/blobdiff_plain/ccf1b7bc66344171e458324c6b702caa18c934ca..6d6d7068e6cde94ff373ccfd25f1f9533fc75e70:/src/jacu.c?ds=sidebyside diff --git a/src/jacu.c b/src/jacu.c index e1d6eea..ee98a05 100644 --- a/src/jacu.c +++ b/src/jacu.c @@ -117,6 +117,7 @@ int main(int argc, char* argv[]) fputc(mtf[j], fp_out); } free(mtf); + free(z); } /* Limpiando */ @@ -138,22 +139,27 @@ int main(int argc, char* argv[]) if (dflag == 1) { /* Descomprimo */ FILE *fp_out; - VFILE *fp_in; + FILE *fp_in; Uint32 block_size, k; char *block, *mtf, *orig; char *z; + int z_len; shuff_decode_file(argv[optind], "tmp.comp"); /*argv[optind+1]);*/ - fp_in = vfopen("tmp.comp", "r", 0); + fp_in = fopen("tmp.comp", "rb"); fp_out = fopen(argv[optind+1], "wb"); - while (!vfeof(fp_in)) { + while (!feof(fp_in)) { block_size = 0; - vfread(&block_size, sizeof(Uint32), 1, fp_in); + fread(&block_size, sizeof(Uint32), 1, fp_in); + fread(&z_len, sizeof(int), 1, fp_in); + z = malloc(sizeof(char)*z_len); + fread(z, z_len, sizeof(char), fp_in); + if (block_size > 0) { - block = malloc((block_size+sizeof(Uint32))*sizeof(char)); + block = malloc(block_size*sizeof(char)+sizeof(Uint32)); orig = malloc(block_size*sizeof(char)); - vfread(block, block_size, sizeof(char), fp_in); + fread(block, block_size, sizeof(char), fp_in); mtf = jacu_mtf_inv(z, block, block_size); @@ -167,7 +173,7 @@ int main(int argc, char* argv[]) free(mtf); } } - vfclose(fp_in); + fclose(fp_in); fclose(fp_out); }