]> git.llucax.com Git - z.facultad/75.06/jacu.git/blobdiff - src/blocksorting/main.c
Agrego Header GNU a los archivos que faltaban.
[z.facultad/75.06/jacu.git] / src / blocksorting / main.c
index 704c570653a3a3a15482f28d98c51cecf3732746..8e234847577b9e34c25c36ae8b68ef7462ce6c87 100644 (file)
@@ -1,6 +1,42 @@
+/*----------------------------------------------------------------------------
+ *                   jacu - Just Another Compression Utility
+ *----------------------------------------------------------------------------
+ * This file is part of jacu.
+ *
+ * jacu is free software; you can redistribute it and/or modify it under the
+ * terms of the GNU General Public License as published by the Free Software
+ * Foundation; either version 2 of the License, or (at your option) any later
+ * version.
+ *
+ * jacu is distributed in the hope that it will be useful, but WITHOUT ANY
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with jacu; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA  02111-1307  USA
+ *----------------------------------------------------------------------------
+ */
+
 
 #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; 
@@ -15,7 +51,7 @@ int main(int argc, char *argv[])
                fp = fopen(argv[1], "r");
                len = atoi(argv[2]);
        } else if (argc == 2) {
-               fp = stdin; /*fopen(argv[1], "r");*/
+               fp = stdin;
                len = atoi(argv[1]);
        } else {
                printf("no, no\n");
@@ -23,7 +59,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,30 +67,28 @@ 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
-                       printf("(%s)\n", salida);
+                       fwrite(salida, 1, i, stdout);
        }
        fclose(fp);
        bs_destroy(bs);
 
-       printf("Total bytes : %ld\n", total);
-       free(data);
+       /*printf("Total bytes : %ld\n", total);*/
        free(salida);
        free(orig);
        return 0;