X-Git-Url: https://git.llucax.com/z.facultad/75.06/jacu.git/blobdiff_plain/b7363b3e0c059ce04f5f2bfa913e06940915aa7c..d53cc94464bba53e0be1297ca0cc746901ec113b:/src/jacu.c diff --git a/src/jacu.c b/src/jacu.c index 1648e82..8f9beb0 100644 --- a/src/jacu.c +++ b/src/jacu.c @@ -24,7 +24,7 @@ typedef struct _flags_ { } t_Flags; int comprimir(char *src, char *dst, Uint32 pagesize, Uint32 volumesize, t_Flags *flags, char *staticmodel); -int descomprimir(char *src, char *dst); +int descomprimir(char *src, char *dst, t_Flags *flags); int main(int argc, char* argv[]) { @@ -111,7 +111,7 @@ int main(int argc, char* argv[]) } if (flags.dflag == 1) { - return descomprimir(argv[optind], argv[optind+1]); + return descomprimir(argv[optind], argv[optind+1], &flags); } return 0; @@ -219,14 +219,14 @@ int comprimir(char *src, char *dst, Uint32 pagesize, Uint32 volumesize, t_Flags return 0; } -int descomprimir(char *src, char *dst) +int descomprimir(char *src, char *dst, t_Flags *flags) { /* Descomprimo */ FILE *fp_out; Uint32 block_size = 0, k; unsigned char *block, *mtf, *orig; unsigned char *z; - int z_len=0,moredata = 0,decoded = 0; + Uint32 z_len=0,moredata = 0,decoded = 0; unsigned char use_zg = 0,retbytes = 0; HUFF_STATE *shuff; @@ -298,7 +298,11 @@ int descomprimir(char *src, char *dst) /* Obtengo el chunk original aplicando BS Inverso */ bs_restore(orig, mtf+sizeof(Uint32), k, decoded - sizeof(Uint32)); - fwrite(orig, decoded - sizeof(Uint32), sizeof(unsigned char), fp_out); + /* XXX AHORA METO EL FLAG EN EL ARCHIVO; DON'T WORRRRRYYYYYYY XXX */ + if (flags->rflag == 1) + orig = bs_finalblock(orig, decoded-sizeof(Uint32), &decoded); + + fwrite(orig, decoded, sizeof(unsigned char), fp_out); free(mtf); free(z); }