]> git.llucax.com Git - z.facultad/75.06/jacu.git/blob - src/blocksorting/main.c
2c8abb925789144bff1ad2536bd11a5bd89aa016
[z.facultad/75.06/jacu.git] / src / blocksorting / main.c
1
2 #include "bs.h"
3
4 int main(int argc, char *argv[])
5 {
6         char *data; 
7         char *salida;
8         char *orig;
9         unsigned long int len, i, k, total;
10         FILE *fp;
11         char c;
12         t_BlockSort *bs;
13         
14         if (argc == 3) {
15                 fp = fopen(argv[1], "r");
16                 len = atoi(argv[2]);
17         } else if (argc == 2) {
18                 fp = stdin; /*fopen(argv[1], "r");*/
19                 len = atoi(argv[1]);
20         } else {
21                 printf("no, no\n");
22                 return 1;
23         }
24
25         data = malloc(sizeof(char)*len);
26         salida = malloc(sizeof(char)*(len+1));
27         orig = malloc(sizeof(char)*(len+1));
28
29         salida[len] = '\0';
30         orig[len] = '\0';
31
32         bs = bs_create(len);
33
34         c = fgetc(fp);
35         total = 0;
36         while (!feof(fp)) {
37                 i = 0;
38                 while ((!feof(fp)) && (i < len)) {
39                         data[i++] = c;
40                         c = fgetc(fp);
41                         total++;
42                 }
43                 bs_solve(data, salida, bs, &k, i);
44
45                 /* XXX ACA SALIDA DEBERIA PASAR A LA SIGUIENTE ETAPA XXX */
46                 if (argc == 3) {
47                         printf("BS : %s -> %ld\n", salida, k);
48                         bs_restore(orig, salida, k, i);
49                         printf("Orig : %s\n", orig);
50                 } else
51                         printf("%s", salida);
52         }
53         fclose(fp);
54         bs_destroy(bs);
55
56         printf("Total bytes : %ld\n", total);
57         free(data);
58         free(salida);
59         free(orig);
60         return 0;
61 }
62
63