]> git.llucax.com Git - z.facultad/75.06/jacu.git/blobdiff - src/statichuff/main_bychunk.c
Mejor manejo de memoria, still debe haber sus buenos holes en un rato lo reviso con...
[z.facultad/75.06/jacu.git] / src / statichuff / main_bychunk.c
index eafe694df01b5682177f52625c9b894406dc42e8..12f8028ef5a06d3d506f1e45753bdc16572df44c 100644 (file)
@@ -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) { 
                 
@@ -58,7 +58,7 @@ int main(int argc, char* argv[])
                /* Le indico al huffman que efectivamente comprima los chunks */
                shuff_encode_file(shuff);
                
-               /* De init shuffman by chunks */
+               /* De init encoder */
                shuff_deinit_encoder(shuff);
                
                /* Free mem allocated by main */
@@ -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;