Fossil SCM

fossil-scm / compat / zlib / contrib / blast / blast-test.c
Source Blame History 42 lines
6ea30fb… florian 1 #include "blast.h" /* prototype for blast() */
6ea30fb… florian 2
6ea30fb… florian 3 /* Example of how to use blast() */
6ea30fb… florian 4 #include <stdio.h>
6ea30fb… florian 5 #include <stdlib.h>
6ea30fb… florian 6
6ea30fb… florian 7 #define CHUNK 16384
6ea30fb… florian 8
6ea30fb… florian 9 local unsigned inf(void *how, unsigned char **buf)
6ea30fb… florian 10 {
6ea30fb… florian 11 static unsigned char hold[CHUNK];
6ea30fb… florian 12
6ea30fb… florian 13 *buf = hold;
6ea30fb… florian 14 return fread(hold, 1, CHUNK, (FILE *)how);
6ea30fb… florian 15 }
6ea30fb… florian 16
6ea30fb… florian 17 local int outf(void *how, unsigned char *buf, unsigned len)
6ea30fb… florian 18 {
6ea30fb… florian 19 return fwrite(buf, 1, len, (FILE *)how) != len;
6ea30fb… florian 20 }
6ea30fb… florian 21
6ea30fb… florian 22 /* Decompress a PKWare Compression Library stream from stdin to stdout */
6ea30fb… florian 23 int main(void)
6ea30fb… florian 24 {
6ea30fb… florian 25 int ret;
6ea30fb… florian 26 unsigned left;
6ea30fb… florian 27
6ea30fb… florian 28 /* decompress to stdout */
6ea30fb… florian 29 left = 0;
6ea30fb… florian 30 ret = blast(inf, stdin, outf, stdout, &left, NULL);
6ea30fb… florian 31 if (ret != 0)
6ea30fb… florian 32 fprintf(stderr, "blast error: %d\n", ret);
6ea30fb… florian 33
6ea30fb… florian 34 /* count any leftover bytes */
6ea30fb… florian 35 while (getchar() != EOF)
6ea30fb… florian 36 left++;
6ea30fb… florian 37 if (left)
6ea30fb… florian 38 fprintf(stderr, "blast warning: %u unused bytes of input\n", left);
6ea30fb… florian 39
6ea30fb… florian 40 /* return blast() error code */
6ea30fb… florian 41 return ret;
6ea30fb… florian 42 }

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button