X-Git-Url: https://git.llucax.com/z.facultad/75.06/jacu.git/blobdiff_plain/c37d2871b3f451fce12341d49c80a4ca9371f34f..64cd44addd33d589c56bf7c6b669f3a9b2c2a410:/src/statichuff/statichuff.c?ds=sidebyside diff --git a/src/statichuff/statichuff.c b/src/statichuff/statichuff.c index 8df625e..6d6de7f 100644 --- a/src/statichuff/statichuff.c +++ b/src/statichuff/statichuff.c @@ -120,7 +120,6 @@ SHUFFNODE *shuff_buildtree(SHUFFNODE *list, int listcount) { SHUFFNODE *lastsymbol = list+(listcount-1); SHUFFNODE *node1,*node2; - int i; while (lastsymbol > list) { /* Ordeno la lista por frecuencia descendente */ @@ -192,8 +191,8 @@ void shuff_buildcodes(SHUFFCODE *table, SHUFFNODE *node, int level, int code) -int shuff_encode_symbols(t_freq *ftable, SHUFFCODE *ctable, char* inputfile, char *outputfile) { - +int shuff_encode_symbols(t_freq *ftable, SHUFFCODE *ctable, char* inputfile, char *outputfile) +{ FILE *fpsource,*fpdest; int symbol,i; unsigned long int sourcesize; @@ -256,6 +255,11 @@ int shuff_encode_file(char *inputfile, char *outputfile) /* Encodeo byte per byte */ shuff_encode_symbols(freqtable,codetable,inputfile,outputfile); + /* Free up memory baby yeah */ + free(freqtable); + free(inputlist); + free(codetable); + return 1; } @@ -317,50 +321,10 @@ int shuff_decode_file(char *inputfile, char *outputfile) fclose(fpsource); fclose(fpdest); + /* Free up memory baby yeah */ + free(ftable); + free(inputlist); + return 1; } -int main(int argc, char* argv[]) -{ - int cflag = 0; - int dflag = 0; - int tflag = 0; - long int volumesize = 0; - int ch; - - while ((ch = getopt(argc, argv, "cdt:")) != -1) { - - switch (ch) { - case 'c': cflag = 1; - break; - - case 'd': dflag = 1; - break; - - case 't': tflag = 1; - volumesize = atoi(optarg); - break; - - default: fprintf(stderr, "Usage: %s [-cdt] sourcefile targetfile\n", argv[0]); - return(2); - } - } - - if ( (argc == 1) || (cflag & dflag) || !(cflag | dflag) || ((argc - optind) < 2) ) { - fprintf(stderr, "Usage: %s [-cdt] sourcefile targetfile\n", argv[0]); - if ((tflag == 1) && (volumesize <= 0)) fprintf(stderr,"Error: The volume size must be a non-zero value\n"); - return (2); - } - - if (cflag == 1) { - /* Comprimo */ - return shuff_encode_file(argv[optind],argv[optind+1]); - } - - if (dflag == 1) { - /* Descomprimo */ - return shuff_decode_file(argv[optind],argv[optind+1]); - } - - return 0; -}