]> git.llucax.com Git - z.facultad/75.06/jacu.git/blobdiff - src/jacu.c
* Agrego al MTF 2 parametros para recuperar el Z y Z_len a fin de meterlos en el...
[z.facultad/75.06/jacu.git] / src / jacu.c
index e870c999c66d87e4831b043e7614ce6b804f41ce..e1d6eeae218000dc5f79e004424da9c9acc8a64a 100644 (file)
@@ -67,6 +67,9 @@ int main(int argc, char* argv[])
                Uint32 i, j, total, k;
                char *mtf;
                char *salida, *data, c;
+               char *z;
+               int z_len;
+
                data = malloc(sizeof(char)*pagesize);
                /* Reservo lugar tambien para guardar el k y el tamaño  */
                salida = malloc(sizeof(char)*(pagesize)+sizeof(Uint32)*2);
@@ -89,21 +92,28 @@ int main(int argc, char* argv[])
                        bs_solve(data, salida, bs, &k, i);
 
                        /* Le aplico el MTF, salteo el tamaño del bloque para que no se pierda. */
-                       mtf = jacu_mtf(salida+sizeof(Uint32), i+sizeof(Uint32));
+                       mtf = jacu_mtf(salida+sizeof(Uint32), i+sizeof(Uint32), &z, &z_len);
 
                        /* Si me lo piden, aplico ZG. */
-                       if (zflag)
-                       {
+                       if (zflag) {
                                size_t len;
                                char buff[2];
                                ZG zg;
                                zg_init(&zg);
+                               /* TODO HACER LO MISMO QUE EN EL ELSE XXX */
                                for (j = 0; j < i; ++j)
                                        if ((len = zg_group(&zg, buff, mtf[j]))) fwrite(buff, 1, len, fp_out);
-                       }
-                       else
-                       {
-                               for(j=0; j<i; j++)
+                       } else {
+                               /* Guardo el PageSize */
+                               for(j=0; j<sizeof(Uint32); j++)
+                                       fputc(mtf[j], fp_out);
+
+                               /* Guardo el Z len y el Z */
+                               fwrite(&z_len, sizeof(int), 1, fp_out);
+                               fwrite(z, z_len, sizeof(char), fp_out);
+
+                               /* Guardo la salida del MTF */
+                               for(j=sizeof(Uint32); j<i; j++)
                                        fputc(mtf[j], fp_out);
                        }
                        free(mtf);