]> git.llucax.com Git - z.facultad/75.06/jacu.git/blobdiff - src/blocksorting/main.c
Subo BS (Merge con exito!)
[z.facultad/75.06/jacu.git] / src / blocksorting / main.c
index c3ae3026eae0f336b4588c63b0886872c8bb2fe8..56e849b34caa8239de7c17023beb5b272a71eb66 100644 (file)
@@ -1,6 +1,21 @@
 
 #include "bs.h"
 
+void print_v(char *txt, char *data, Uint32 len)
+{
+       Uint32 i;
+
+       printf("%s", txt);
+       
+       for(i=0; i<len; i++) {
+               if (data[i] == '\n')
+                       printf("#");
+               else
+                       printf("%c", data[i]);
+       }
+       printf("\n");
+}
+
 int main(int argc, char *argv[])
 {
        char *data; 
@@ -23,7 +38,7 @@ int main(int argc, char *argv[])
        }
 
        data = malloc(sizeof(char)*len);
-       salida = malloc(sizeof(char)*(len+1));
+       salida = malloc(sizeof(char)*(len+1+sizeof(unsigned long int)));
        orig = malloc(sizeof(char)*(len+1));
 
        salida[len] = '\0';
@@ -31,24 +46,23 @@ int main(int argc, char *argv[])
 
        bs = bs_create(len);
 
-       c = fgetc(fp);
        total = 0;
        while (!feof(fp)) {
                i = 0;
-               while ((!feof(fp)) && (i < len)) {
-                       data[i++] = c;
-                       c = fgetc(fp);
-                       total++;
-               }
+               i = bs_readblock(fp, data, len, 1);
+               
+               total += i;
+               
                bs_solve(data, salida, bs, &k, i);
 
                /* XXX ACA SALIDA DEBERIA PASAR A LA SIGUIENTE ETAPA XXX */
                if (argc == 3) {
-                       printf("BS : %s -> %ld\n", salida, k);
-                       bs_restore(orig, salida, k, i);
-                       printf("Orig : %s\n", orig);
+                       bs_restore(orig, salida+sizeof(Uint32), k, i);
+                       print_v("Leido     : ", data, i);
+                       print_v("BS        : ", salida+sizeof(Uint32), i);
+                       /*print_v("Restorado : ", orig, i);*/
                } else
-                       fwrite(salida, 1, i, fp);
+                       fwrite(salida, 1, i, stdout);
        }
        fclose(fp);
        bs_destroy(bs);