Lines Matching refs:zstream

31 	struct lzma_istream *zstream = (struct lzma_istream *)stream;
33 if (!zstream->strm_closed) {
34 lzma_end(&zstream->strm);
35 zstream->strm_closed = TRUE;
38 i_stream_close(zstream->istream.parent);
41 static void lzma_read_error(struct lzma_istream *zstream, const char *error)
43 io_stream_set_error(&zstream->istream.iostream,
45 i_stream_get_name(&zstream->istream.istream), error,
46 i_stream_get_absolute_offset(&zstream->istream.istream));
47 if (zstream->log_errors)
48 i_error("%s", zstream->istream.iostream.error);
51 static void lzma_stream_end(struct lzma_istream *zstream)
53 zstream->eof_offset = zstream->istream.istream.v_offset +
54 (zstream->istream.pos - zstream->istream.skip);
55 zstream->stream_size = zstream->eof_offset;
60 struct lzma_istream *zstream = (struct lzma_istream *)stream;
67 if (zstream->eof_offset == high_offset) {
68 i_assert(zstream->high_pos == 0 ||
69 zstream->high_pos == stream->pos);
74 if (stream->pos < zstream->high_pos) {
76 ret = zstream->high_pos - stream->pos;
77 stream->pos = zstream->high_pos;
78 zstream->high_pos = 0;
80 if (zstream->eof_offset != (uoff_t)-1) {
83 i_assert(zstream->eof_offset == high_offset);
88 zstream->high_pos = 0;
90 if (!zstream->marked) {
105 lzma_stream_end(zstream);
116 zstream->strm.next_in = data;
117 zstream->strm.avail_in = size;
119 zstream->strm.next_out = stream->w_buffer + stream->pos;
120 zstream->strm.avail_out = out_size;
121 ret = lzma_code(&zstream->strm, LZMA_RUN);
123 out_size -= zstream->strm.avail_out;
126 i_stream_skip(stream->parent, size - zstream->strm.avail_in);
133 lzma_read_error(zstream, "corrupted data");
137 lzma_read_error(zstream, "wrong magic in header (not xz file?)");
141 lzma_read_error(zstream, "Unsupported xz options");
148 lzma_stream_end(zstream);
155 lzma_read_error(zstream, t_strdup_printf(
167 static void i_stream_lzma_init(struct lzma_istream *zstream)
171 ret = lzma_stream_decoder(&zstream->strm, LZMA_MEMORY_LIMIT,
183 static void i_stream_lzma_reset(struct lzma_istream *zstream)
185 struct istream_private *stream = &zstream->istream;
188 zstream->eof_offset = (uoff_t)-1;
189 zstream->strm.next_in = NULL;
190 zstream->strm.avail_in = 0;
195 zstream->high_pos = 0;
197 lzma_end(&zstream->strm);
198 i_stream_lzma_init(zstream);
204 struct lzma_istream *zstream = (struct lzma_istream *) stream;
209 i_stream_lzma_reset(zstream);
211 } else if (zstream->high_pos != 0) {
212 stream->pos = zstream->high_pos;
213 zstream->high_pos = 0;
220 zstream->high_pos = stream->pos;
257 zstream->marked = TRUE;
263 struct lzma_istream *zstream = (struct lzma_istream *) stream;
280 if (zstream->stream_size == (uoff_t)-1) {
291 if (zstream->stream_size == (uoff_t)-1)
294 stream->statbuf.st_size = zstream->stream_size;
300 struct lzma_istream *zstream = (struct lzma_istream *) stream;
304 if (memcmp(&zstream->last_parent_statbuf,
310 zstream->last_parent_statbuf = *st;
312 i_stream_lzma_reset(zstream);
317 struct lzma_istream *zstream;
319 zstream = i_new(struct lzma_istream, 1);
320 zstream->eof_offset = (uoff_t)-1;
321 zstream->stream_size = (uoff_t)-1;
322 zstream->log_errors = log_errors;
324 i_stream_lzma_init(zstream);
326 zstream->istream.iostream.close = i_stream_lzma_close;
327 zstream->istream.max_buffer_size = input->real_stream->max_buffer_size;
328 zstream->istream.read = i_stream_lzma_read;
329 zstream->istream.seek = i_stream_lzma_seek;
330 zstream->istream.stat = i_stream_lzma_stat;
331 zstream->istream.sync = i_stream_lzma_sync;
333 zstream->istream.istream.readable_fd = FALSE;
334 zstream->istream.istream.blocking = input->blocking;
335 zstream->istream.istream.seekable = input->seekable;
337 return i_stream_create(&zstream->istream, input,