X-Git-Url: https://git.llucax.com/z.facultad/75.06/jacu.git/blobdiff_plain/ade05bc64de4853d99cdc1ea2657845728614f03..22942d33dcdd7cc185b9ad198fc1c35159f154ea:/src/statichuff/main_bychunk.c?ds=inline diff --git a/src/statichuff/main_bychunk.c b/src/statichuff/main_bychunk.c index 54ce628..12f8028 100644 --- a/src/statichuff/main_bychunk.c +++ b/src/statichuff/main_bychunk.c @@ -11,7 +11,7 @@ int main(int argc, char* argv[]) int dflag = 0; int tflag = 0; long int volumesize = 0; - int lastchunk,i,j,ch; + int lastchunk,i,j,ch,decoded = 0; while ((ch = getopt(argc, argv, "cdt:")) != -1) { @@ -39,7 +39,7 @@ int main(int argc, char* argv[]) if (cflag == 1) { /* Inicio un compresor huffman estatico por chunks */ - if ((shuff = shuff_init_static_bychunk(argv[optind+1],volumesize*1024)) == NULL) return 0; + if ((shuff = shuff_init_encoder_bychunk(argv[optind+1],volumesize*1024)) == NULL) return 0; /* Comprimo por chunks */ if ((fp = fopen(argv[optind],"rb")) == NULL) return 1; @@ -53,13 +53,13 @@ int main(int argc, char* argv[]) i++; } /* Comprimo el chunk con huffman estatico */ - shuff_encode_chunk(shuff,chunk,i,0); + shuff_scanfreq_chunk(shuff,chunk,i); } /* Le indico al huffman que efectivamente comprima los chunks */ shuff_encode_file(shuff); - /* De init shuffman by chunks */ - shuff_deinit_static_bychunk(shuff); + /* De init encoder */ + shuff_deinit_encoder(shuff); /* Free mem allocated by main */ free(shuff); @@ -70,8 +70,21 @@ int main(int argc, char* argv[]) } if (dflag == 1) { - /* Descomprimo */ - return shuff_decode_file(argv[optind],argv[optind+1]); + /* Init decoder */ + shuff = shuff_init_decoder(argv[optind],NULL); + fp = fopen(argv[optind+1],"w"); + + /* Gimme chunks till last one */ + while (shuff_decode_chunk(shuff,chunk,4,&decoded)) + fwrite(chunk,decoded,1,fp); + + /* Last chunk written alone */ + fwrite(chunk,decoded,1,fp); + fclose(fp); + + /* Deinit decoder */ + shuff_deinit_decoder(shuff); + free(shuff); } return 0;