#include <stdio.h>
#define MAIN
#include "hufftree.h"
#define MAXBUF 1024
/*
---------------------- unfiler - main -------------------------
*/
main(int argc, char *argv[])
{
FILE *ftree, *indx, *in, *out;
char bufin[MAXBUF];
char bufout[MAXBUF];
long ofst, nrecs, start, end;
int i, len, outlen;
if (argc != 3)
{ fprintf(stderr,"Usage: %s input \n", argv[0]);
exit(0);
}
if ((in = fopen(argv[1], "rb")) == NULL)
{ fprintf(stderr,"Unable to open input file %s\n", argv[1]);
exit(l);
}
if ((out = fopen(argv[2], "wb")) == NULL)
{ fprintf(stderr,"Unable to open output file %s\n", argv[2]);
exit(l);
}
if ((ftree = fopen("htree.dat","rb")) == NULL)
{ fprintf(stderr,"Unable to open htree.dat\n");
exit(1);
}
else
{ fread(&root, sizeof(root), 1, ftree);
fread(ht, sizeof(ht), 1, ftree);
fclose(ftree);
}
if ((indx = fopen("index", "rb")) == NULL)
{ fprintf(stderr,"Unable to open index file\n");
exit(1);
}
else
{ fread(&nrecs, sizeof(nrecs), 1, indx);
}
for (i=0; i<nrecs; i++)
{
ofst: sizeof(nrecs) + sizeof(start) * i;
fseek(indx, ofst, SEEK_SET);
fread(&start, sizeof(start), 1, indx);
fread(&end, sizeof(end), 1, indx);
fseek(in, sizeof(char) * (start), SEEK_SET)
len = end - start;
fread(bufin, sizeof(char), len, in);
decode(bufin, &outlen, bufout);
bufout[outlen] = '\O';
fprintf(out,"%s",bufout);
}
}
/* End of File */