diff options
| author | Mark Adler <madler@alumni.caltech.edu> | 2025-05-11 14:49:04 -0700 |
|---|---|---|
| committer | Mark Adler <git@madler.net> | 2025-12-06 17:39:14 -0800 |
| commit | 1ab1026a20282383d9cd2282f81461655bea4028 (patch) | |
| tree | 511ef0996f9beb4c83ba15e72d7cc62d6252bb56 /gzread.c | |
| parent | 473f78532aed8f5a8d55cd6e7b305160db9cf742 (diff) | |
| download | zlib-1ab1026a20282383d9cd2282f81461655bea4028.tar.gz zlib-1ab1026a20282383d9cd2282f81461655bea4028.tar.bz2 zlib-1ab1026a20282383d9cd2282f81461655bea4028.zip | |
Add a "G" option to force gzip, disabling transparency in gzread().
If the input is not a gzip stream with this option, an error will
be returned.
Diffstat (limited to 'gzread.c')
| -rw-r--r-- | gzread.c | 10 |
1 files changed, 9 insertions, 1 deletions
| @@ -106,6 +106,14 @@ local int gz_look(gz_statep state) { | |||
| 106 | } | 106 | } |
| 107 | } | 107 | } |
| 108 | 108 | ||
| 109 | /* if transparent reading is disabled, simply read as gzip */ | ||
| 110 | if (state->direct == -1) { | ||
| 111 | inflateReset(strm); | ||
| 112 | state->how = GZIP; | ||
| 113 | state->direct = 0; | ||
| 114 | return 0; | ||
| 115 | } | ||
| 116 | |||
| 109 | /* get at least the magic bytes in the input buffer */ | 117 | /* get at least the magic bytes in the input buffer */ |
| 110 | if (strm->avail_in < 2) { | 118 | if (strm->avail_in < 2) { |
| 111 | if (gz_avail(state) == -1) | 119 | if (gz_avail(state) == -1) |
| @@ -567,7 +575,7 @@ int ZEXPORT gzdirect(gzFile file) { | |||
| 567 | (void)gz_look(state); | 575 | (void)gz_look(state); |
| 568 | 576 | ||
| 569 | /* return 1 if transparent, 0 if processing a gzip stream */ | 577 | /* return 1 if transparent, 0 if processing a gzip stream */ |
| 570 | return state->direct; | 578 | return state->direct == 1; |
| 571 | } | 579 | } |
| 572 | 580 | ||
| 573 | /* -- see zlib.h -- */ | 581 | /* -- see zlib.h -- */ |
