t@CAZN^ԍAǎ蒷w肵āACSOǍ
Ԓl ۂɓǂݍ񂾒 / G[̏ꍇ-1Ԃ
int cso_read(char *buff, int sector, int length, char *path);





deflateks
Ԓl k̃TCY / G[̏ꍇ-1Ԃ
int deflate_cso(char* o_buff, char* i_buff, int length)

deflateꂽf[^𕜍
Ԓl WJ̃TCY / G[̏ꍇ-1Ԃ
int inflate_cso(char* o_buff, char* i_buff, int length);

void do_decompress(void)        /* WJij */
{
    int count, status;

    /* ׂẴǗCuɔC */
    z.zalloc = Z_NULL;
    z.zfree = Z_NULL;
    z.opaque = Z_NULL;

    /*  */
    z.next_in = Z_NULL;
    z.avail_in = 0;
    if (inflateInit(&z) != Z_OK) {
        fprintf(stderr, "inflateInit: %s\n", (z.msg) ? z.msg : "???");
        exit(1);
    }

    z.next_out = outbuf;        /* o̓|C^ */
    z.avail_out = OUTBUFSIZ;    /* o̓obt@c */
    status = Z_OK;

    while (status != Z_STREAM_END) {
        if (z.avail_in == 0) {  /* ͎cʂ[ɂȂ */
            z.next_in = inbuf;  /* ̓|C^ɖ߂ */
            z.avail_in = fread(inbuf, 1, INBUFSIZ, fin); /* f[^ǂ */
        }
        status = inflate(&z, Z_NO_FLUSH); /* WJ */
        if (status == Z_STREAM_END) break; /*  */
        if (status != Z_OK) {   /* G[ */
            fprintf(stderr, "inflate: %s\n", (z.msg) ? z.msg : "???");
            exit(1);
        }
        if (z.avail_out == 0) { /* o̓obt@s */
            /* ܂Ƃ߂ďo */
            if (fwrite(outbuf, 1, OUTBUFSIZ, fout) != OUTBUFSIZ) {
                fprintf(stderr, "Write error\n");
                exit(1);
            }
            z.next_out = outbuf; /* o̓|C^ɖ߂ */
            z.avail_out = OUTBUFSIZ; /* o̓obt@cʂɖ߂ */
        }
    }

    /* cfo */
    if ((count = OUTBUFSIZ - z.avail_out) != 0) {
        if (fwrite(outbuf, 1, count, fout) != count) {
            fprintf(stderr, "Write error\n");
            exit(1);
        }
    }

    /* n */
    if (inflateEnd(&z) != Z_OK) {
        fprintf(stderr, "inflateEnd: %s\n", (z.msg) ? z.msg : "???");
        exit(1);
    }
}



ZN^ԍAݒw肵āACSOɏ
Ԓl ۂɏ񂾒 / G[̏ꍇ-1Ԃ
int cso_write(char *buff, int sector, int length, char *path);

