Fossil SCM
| 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 | } |