diff options
author | Mark Adler <madler@alumni.caltech.edu> | 2011-12-14 04:21:00 -0800 |
---|---|---|
committer | Mark Adler <madler@alumni.caltech.edu> | 2011-12-14 04:21:00 -0800 |
commit | 2556706d67b471b45e0882ea4f32aa8b2efc14ec (patch) | |
tree | ed16d084027fa6726873eddfaa5187a64e05857e /gzread.c | |
parent | 850a198ff1879e506c961c91da30009539ed14b3 (diff) | |
download | zlib-2556706d67b471b45e0882ea4f32aa8b2efc14ec.tar.gz zlib-2556706d67b471b45e0882ea4f32aa8b2efc14ec.tar.bz2 zlib-2556706d67b471b45e0882ea4f32aa8b2efc14ec.zip |
Document gzread() capability to read concurrently written files.
Also since gzread() will no longer return an error for an incomplete
gzip file, have gzclose() return an error if the last gzread() ended
in the middle of a gzip stream.
Diffstat (limited to 'gzread.c')
-rw-r--r-- | gzread.c | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -553,7 +553,7 @@ int ZEXPORT gzdirect(file) | |||
553 | int ZEXPORT gzclose_r(file) | 553 | int ZEXPORT gzclose_r(file) |
554 | gzFile file; | 554 | gzFile file; |
555 | { | 555 | { |
556 | int ret; | 556 | int ret, err; |
557 | gz_statep state; | 557 | gz_statep state; |
558 | 558 | ||
559 | /* get internal structure */ | 559 | /* get internal structure */ |
@@ -571,9 +571,10 @@ int ZEXPORT gzclose_r(file) | |||
571 | free(state->out); | 571 | free(state->out); |
572 | free(state->in); | 572 | free(state->in); |
573 | } | 573 | } |
574 | err = state->err == Z_BUF_ERROR ? Z_BUF_ERROR : Z_OK; | ||
574 | gz_error(state, Z_OK, NULL); | 575 | gz_error(state, Z_OK, NULL); |
575 | free(state->path); | 576 | free(state->path); |
576 | ret = close(state->fd); | 577 | ret = close(state->fd); |
577 | free(state); | 578 | free(state); |
578 | return ret ? Z_ERRNO : Z_OK; | 579 | return ret ? Z_ERRNO : err; |
579 | } | 580 | } |