55 lines
961 B
C
55 lines
961 B
C
|
|
#include "exodecrunch.h"
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
static int read_byte(void *read_data)
|
|
{
|
|
FILE *in;
|
|
int c;
|
|
|
|
in = (FILE*)read_data;
|
|
c = fgetc(in);
|
|
|
|
return c;
|
|
}
|
|
|
|
int main(int argc, char *argv[])
|
|
{
|
|
FILE *in;
|
|
FILE *out;
|
|
struct exo_decrunch_ctx *ctx;
|
|
int c;
|
|
|
|
if(argc != 3)
|
|
{
|
|
fprintf(stderr, "Error: usage: %s <infile> <outfile>\n", argv[0]);
|
|
exit(-1);
|
|
}
|
|
in = fopen(argv[1], "rb");
|
|
if(in == NULL)
|
|
{
|
|
fprintf(stderr, "Error: can't open %s for input.\n", argv[1]);
|
|
exit(-1);
|
|
}
|
|
out = fopen(argv[2], "wb");
|
|
if(in == NULL)
|
|
{
|
|
fprintf(stderr, "Error: can't open %s for output.\n", argv[2]);
|
|
exit(-1);
|
|
}
|
|
|
|
ctx = exo_decrunch_new(MAX_OFFSET, read_byte, in);
|
|
|
|
while((c = exo_read_decrunched_byte(ctx)) != EOF)
|
|
{
|
|
fputc(c, out);
|
|
}
|
|
|
|
exo_decrunch_delete(ctx);
|
|
|
|
fclose(out);
|
|
fclose(in);
|
|
|
|
return 0;
|
|
}
|