diff options
| author | Mark Adler <madler@alumni.caltech.edu> | 2011-09-09 23:27:08 -0700 |
|---|---|---|
| committer | Mark Adler <madler@alumni.caltech.edu> | 2011-09-09 23:27:08 -0700 |
| commit | 7df877eccdd826e94df53215f65dee639428e83f (patch) | |
| tree | 11ed5070798961e28a4c69d9272ecaada500abc3 /gzlib.c | |
| parent | dc5a43ebfadb6b775f6e64bfeb5a461c66acb394 (diff) | |
| download | zlib-1.2.3.7.tar.gz zlib-1.2.3.7.tar.bz2 zlib-1.2.3.7.zip | |
zlib 1.2.3.7v1.2.3.7
Diffstat (limited to 'gzlib.c')
| -rw-r--r-- | gzlib.c | 28 |
1 files changed, 14 insertions, 14 deletions
| @@ -15,7 +15,7 @@ | |||
| 15 | 15 | ||
| 16 | /* Local functions */ | 16 | /* Local functions */ |
| 17 | local void gz_reset OF((gz_statep)); | 17 | local void gz_reset OF((gz_statep)); |
| 18 | local gzFile gz_open OF((const char *, int, const char *, int)); | 18 | local gzFile gz_open OF((const char *, int, const char *)); |
| 19 | 19 | ||
| 20 | #if defined UNDER_CE && defined NO_ERRNO_H | 20 | #if defined UNDER_CE && defined NO_ERRNO_H |
| 21 | 21 | ||
| @@ -73,10 +73,11 @@ char ZEXPORT *gz_strwinerror (error) | |||
| 73 | local void gz_reset(state) | 73 | local void gz_reset(state) |
| 74 | gz_statep state; | 74 | gz_statep state; |
| 75 | { | 75 | { |
| 76 | state->how = 0; /* look for gzip header */ | ||
| 77 | if (state->mode == GZ_READ) { /* for reading ... */ | 76 | if (state->mode == GZ_READ) { /* for reading ... */ |
| 78 | state->have = 0; /* no output data available */ | 77 | state->have = 0; /* no output data available */ |
| 79 | state->eof = 0; /* not at end of file */ | 78 | state->eof = 0; /* not at end of file */ |
| 79 | state->how = LOOK; /* look for gzip header */ | ||
| 80 | state->direct = 1; /* default for empty file */ | ||
| 80 | } | 81 | } |
| 81 | state->seek = 0; /* no seek request pending */ | 82 | state->seek = 0; /* no seek request pending */ |
| 82 | gz_error(state, Z_OK, NULL); /* clear error */ | 83 | gz_error(state, Z_OK, NULL); /* clear error */ |
| @@ -85,11 +86,10 @@ local void gz_reset(state) | |||
| 85 | } | 86 | } |
| 86 | 87 | ||
| 87 | /* Open a gzip file either by name or file descriptor. */ | 88 | /* Open a gzip file either by name or file descriptor. */ |
| 88 | local gzFile gz_open(path, fd, mode, large) | 89 | local gzFile gz_open(path, fd, mode) |
| 89 | const char *path; | 90 | const char *path; |
| 90 | int fd; | 91 | int fd; |
| 91 | const char *mode; | 92 | const char *mode; |
| 92 | int large; | ||
| 93 | { | 93 | { |
| 94 | gz_statep state; | 94 | gz_statep state; |
| 95 | 95 | ||
| @@ -152,13 +152,9 @@ local gzFile gz_open(path, fd, mode, large) | |||
| 152 | /* open the file with the appropriate mode (or just use fd) */ | 152 | /* open the file with the appropriate mode (or just use fd) */ |
| 153 | state->fd = fd != -1 ? fd : | 153 | state->fd = fd != -1 ? fd : |
| 154 | open(path, | 154 | open(path, |
| 155 | (large ? | ||
| 156 | #ifdef O_LARGEFILE | 155 | #ifdef O_LARGEFILE |
| 157 | O_LARGEFILE | 156 | O_LARGEFILE | |
| 158 | #else | ||
| 159 | 0 | ||
| 160 | #endif | 157 | #endif |
| 161 | : 0) | | ||
| 162 | #ifdef O_BINARY | 158 | #ifdef O_BINARY |
| 163 | O_BINARY | | 159 | O_BINARY | |
| 164 | #endif | 160 | #endif |
| @@ -178,6 +174,10 @@ local gzFile gz_open(path, fd, mode, large) | |||
| 178 | 174 | ||
| 179 | /* save the path name for error messages */ | 175 | /* save the path name for error messages */ |
| 180 | state->path = malloc(strlen(path) + 1); | 176 | state->path = malloc(strlen(path) + 1); |
| 177 | if (state->path == NULL) { | ||
| 178 | free(state); | ||
| 179 | return NULL; | ||
| 180 | } | ||
| 181 | strcpy(state->path, path); | 181 | strcpy(state->path, path); |
| 182 | 182 | ||
| 183 | /* save the current position for rewinding (only if reading) */ | 183 | /* save the current position for rewinding (only if reading) */ |
| @@ -198,7 +198,7 @@ gzFile ZEXPORT gzopen(path, mode) | |||
| 198 | const char *path; | 198 | const char *path; |
| 199 | const char *mode; | 199 | const char *mode; |
| 200 | { | 200 | { |
| 201 | return gz_open(path, -1, mode, 0); | 201 | return gz_open(path, -1, mode); |
| 202 | } | 202 | } |
| 203 | 203 | ||
| 204 | /* -- see zlib.h -- */ | 204 | /* -- see zlib.h -- */ |
| @@ -206,7 +206,7 @@ gzFile ZEXPORT gzopen64(path, mode) | |||
| 206 | const char *path; | 206 | const char *path; |
| 207 | const char *mode; | 207 | const char *mode; |
| 208 | { | 208 | { |
| 209 | return gz_open(path, -1, mode, 1); | 209 | return gz_open(path, -1, mode); |
| 210 | } | 210 | } |
| 211 | 211 | ||
| 212 | /* -- see zlib.h -- */ | 212 | /* -- see zlib.h -- */ |
| @@ -216,14 +216,14 @@ gzFile ZEXPORT gzdopen(fd, mode) | |||
| 216 | { | 216 | { |
| 217 | char path[46]; /* identifier for error messages */ | 217 | char path[46]; /* identifier for error messages */ |
| 218 | 218 | ||
| 219 | if (fd < 0) | 219 | if (fd == -1) |
| 220 | return NULL; | 220 | return NULL; |
| 221 | #ifdef NO_snprintf | 221 | #ifdef NO_snprintf |
| 222 | sprintf(path, "<fd:%d>", fd); /* big enough for 128-bit integers */ | 222 | sprintf(path, "<fd:%d>", fd); /* big enough for 128-bit integers */ |
| 223 | #else | 223 | #else |
| 224 | snprintf(path, sizeof(path), "<fd:%d>", fd); | 224 | snprintf(path, sizeof(path), "<fd:%d>", fd); |
| 225 | #endif | 225 | #endif |
| 226 | return gz_open(path, fd, mode, 0); | 226 | return gz_open(path, fd, mode); |
| 227 | } | 227 | } |
| 228 | 228 | ||
| 229 | /* -- see zlib.h -- */ | 229 | /* -- see zlib.h -- */ |
| @@ -303,7 +303,7 @@ z_off64_t ZEXPORT gzseek64(file, offset, whence) | |||
| 303 | offset -= state->pos; | 303 | offset -= state->pos; |
| 304 | 304 | ||
| 305 | /* if within raw area while reading, just go there */ | 305 | /* if within raw area while reading, just go there */ |
| 306 | if (state->mode == GZ_READ && state->how == 1 && | 306 | if (state->mode == GZ_READ && state->how == COPY && |
| 307 | state->pos + offset >= state->raw) { | 307 | state->pos + offset >= state->raw) { |
| 308 | ret = LSEEK(state->fd, offset, SEEK_CUR); | 308 | ret = LSEEK(state->fd, offset, SEEK_CUR); |
| 309 | if (ret == -1) | 309 | if (ret == -1) |
