annotate src/lib/istream-limit.c @ 6142:6c0bfc35af03 HEAD

Removed memory pool parameter from iostreams. Default pool was almost always used, and the stream usually required destroying anyway so it didn't even make freeing memory easier.
author Timo Sirainen <tss@iki.fi>
date Tue, 24 Jul 2007 06:59:56 +0300
parents be4fb0976c1d
children 6a64e64fa3a3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1870
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1 /* Copyright (C) 2003 Timo Sirainen */
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
2
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
3 #include "lib.h"
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
4 #include "istream-internal.h"
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
5
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
6 struct limit_istream {
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
7 struct _istream istream;
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
8
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
9 struct istream *input;
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
10 uoff_t v_start_offset, v_size;
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
11 };
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
12
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
13 static void _close(struct _iostream *stream __attr_unused__)
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
14 {
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
15 }
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
16
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
17 static void _destroy(struct _iostream *stream)
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
18 {
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
19 struct limit_istream *lstream = (struct limit_istream *) stream;
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
20
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
21 /* get to same position in parent stream */
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
22 i_stream_seek(lstream->input, lstream->v_start_offset +
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
23 lstream->istream.istream.v_offset);
3879
928229f8b3e6 deinit, unref, destroy, close, free, etc. functions now take a pointer to
Timo Sirainen <tss@iki.fi>
parents: 3863
diff changeset
24 i_stream_unref(&lstream->input);
1870
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
25 }
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
26
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
27 static void _set_max_buffer_size(struct _iostream *stream, size_t max_size)
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
28 {
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
29 struct limit_istream *lstream = (struct limit_istream *) stream;
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
30
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
31 i_stream_set_max_buffer_size(lstream->input, max_size);
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
32 }
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
33
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
34 static ssize_t _read(struct _istream *stream)
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
35 {
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
36 struct limit_istream *lstream = (struct limit_istream *) stream;
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
37 uoff_t left;
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
38 ssize_t ret;
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
39 size_t pos;
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
40
1874
Timo Sirainen <tss@iki.fi>
parents: 1870
diff changeset
41 if (stream->istream.v_offset +
2441
b65224a24696 When we reach the limit, set eof = true
Timo Sirainen <tss@iki.fi>
parents: 2431
diff changeset
42 (stream->pos - stream->skip) >= lstream->v_size) {
b65224a24696 When we reach the limit, set eof = true
Timo Sirainen <tss@iki.fi>
parents: 2431
diff changeset
43 stream->istream.eof = TRUE;
1870
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
44 return -1;
2441
b65224a24696 When we reach the limit, set eof = true
Timo Sirainen <tss@iki.fi>
parents: 2431
diff changeset
45 }
1870
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
46
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
47 if (lstream->input->v_offset !=
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
48 lstream->v_start_offset + stream->istream.v_offset) {
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
49 i_stream_seek(lstream->input,
1874
Timo Sirainen <tss@iki.fi>
parents: 1870
diff changeset
50 lstream->v_start_offset +
Timo Sirainen <tss@iki.fi>
parents: 1870
diff changeset
51 stream->istream.v_offset);
1870
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
52 }
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
53
2295
545c1d3ead54 Wrapper streams shouldn't try to read data if it's already buffered in main
Timo Sirainen <tss@iki.fi>
parents: 2166
diff changeset
54 stream->buffer = i_stream_get_data(lstream->input, &pos);
545c1d3ead54 Wrapper streams shouldn't try to read data if it's already buffered in main
Timo Sirainen <tss@iki.fi>
parents: 2166
diff changeset
55 if (pos <= stream->pos) {
2444
881e265febfa Fixes for nonblocking streams.
Timo Sirainen <tss@iki.fi>
parents: 2441
diff changeset
56 if ((ret = i_stream_read(lstream->input)) == -2) {
2295
545c1d3ead54 Wrapper streams shouldn't try to read data if it's already buffered in main
Timo Sirainen <tss@iki.fi>
parents: 2166
diff changeset
57 if (stream->skip == 0)
545c1d3ead54 Wrapper streams shouldn't try to read data if it's already buffered in main
Timo Sirainen <tss@iki.fi>
parents: 2166
diff changeset
58 return -2;
545c1d3ead54 Wrapper streams shouldn't try to read data if it's already buffered in main
Timo Sirainen <tss@iki.fi>
parents: 2166
diff changeset
59 }
5207
be4fb0976c1d Keep stream_errno updated in filter streams.
Timo Sirainen <tss@iki.fi>
parents: 5106
diff changeset
60 stream->istream.stream_errno = lstream->input->stream_errno;
2431
8e9d8cb1e674 Removed istream.disconnected, it's too much of a special case and the only
Timo Sirainen <tss@iki.fi>
parents: 2421
diff changeset
61 stream->istream.eof = lstream->input->eof;
2295
545c1d3ead54 Wrapper streams shouldn't try to read data if it's already buffered in main
Timo Sirainen <tss@iki.fi>
parents: 2166
diff changeset
62 stream->buffer = i_stream_get_data(lstream->input, &pos);
2444
881e265febfa Fixes for nonblocking streams.
Timo Sirainen <tss@iki.fi>
parents: 2441
diff changeset
63 } else {
881e265febfa Fixes for nonblocking streams.
Timo Sirainen <tss@iki.fi>
parents: 2441
diff changeset
64 ret = 0;
1870
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
65 }
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
66
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
67 stream->pos -= stream->skip;
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
68 stream->skip = 0;
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
69
2166
ed6b3d59ce93 minor fix
Timo Sirainen <tss@iki.fi>
parents: 2160
diff changeset
70 if (lstream->v_size != (uoff_t)-1) {
ed6b3d59ce93 minor fix
Timo Sirainen <tss@iki.fi>
parents: 2160
diff changeset
71 left = lstream->v_size - stream->istream.v_offset;
3423
61ea539ee5f1 Set stream->eof immediately after we have read up to our limit.
Timo Sirainen <tss@iki.fi>
parents: 3241
diff changeset
72 if (pos >= left) {
2166
ed6b3d59ce93 minor fix
Timo Sirainen <tss@iki.fi>
parents: 2160
diff changeset
73 pos = left;
3423
61ea539ee5f1 Set stream->eof immediately after we have read up to our limit.
Timo Sirainen <tss@iki.fi>
parents: 3241
diff changeset
74 stream->istream.eof = TRUE;
61ea539ee5f1 Set stream->eof immediately after we have read up to our limit.
Timo Sirainen <tss@iki.fi>
parents: 3241
diff changeset
75 }
2166
ed6b3d59ce93 minor fix
Timo Sirainen <tss@iki.fi>
parents: 2160
diff changeset
76 }
1870
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
77
2444
881e265febfa Fixes for nonblocking streams.
Timo Sirainen <tss@iki.fi>
parents: 2441
diff changeset
78 ret = pos > stream->pos ? (ssize_t)(pos - stream->pos) :
881e265febfa Fixes for nonblocking streams.
Timo Sirainen <tss@iki.fi>
parents: 2441
diff changeset
79 (ret == 0 ? 0 : -1);
1874
Timo Sirainen <tss@iki.fi>
parents: 1870
diff changeset
80 stream->pos = pos;
1870
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
81 return ret;
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
82 }
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
83
3629
e05a1af4bbc7 Added i_stream_seek_mark() and used it
Timo Sirainen <tss@iki.fi>
parents: 3423
diff changeset
84 static void _seek(struct _istream *stream, uoff_t v_offset,
3863
55df57c028d4 Added "bool" type and changed all ints that were used as booleans to bool.
Timo Sirainen <tss@iki.fi>
parents: 3647
diff changeset
85 bool mark __attr_unused__)
1870
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
86 {
2983
c20a64efd608 Added assert.
Timo Sirainen <tss@iki.fi>
parents: 2444
diff changeset
87 struct limit_istream *lstream = (struct limit_istream *) stream;
c20a64efd608 Added assert.
Timo Sirainen <tss@iki.fi>
parents: 2444
diff changeset
88
c20a64efd608 Added assert.
Timo Sirainen <tss@iki.fi>
parents: 2444
diff changeset
89 i_assert(v_offset <= lstream->v_size);
c20a64efd608 Added assert.
Timo Sirainen <tss@iki.fi>
parents: 2444
diff changeset
90
1870
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
91 stream->istream.stream_errno = 0;
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
92 stream->istream.v_offset = v_offset;
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
93 stream->skip = stream->pos = 0;
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
94 }
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
95
3863
55df57c028d4 Added "bool" type and changed all ints that were used as booleans to bool.
Timo Sirainen <tss@iki.fi>
parents: 3647
diff changeset
96 static const struct stat *_stat(struct _istream *stream, bool exact)
1870
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
97 {
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
98 struct limit_istream *lstream = (struct limit_istream *) stream;
3241
b79853b4b005 Replaced i_stream_get_size() with i_stream_stat(). Added i_stream_sync().
Timo Sirainen <tss@iki.fi>
parents: 3239
diff changeset
99 const struct stat *st;
1870
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
100
3647
7af5162d934c Added exact parameter to i_stream_stat()
Timo Sirainen <tss@iki.fi>
parents: 3629
diff changeset
101 st = i_stream_stat(lstream->input, exact);
3241
b79853b4b005 Replaced i_stream_get_size() with i_stream_stat(). Added i_stream_sync().
Timo Sirainen <tss@iki.fi>
parents: 3239
diff changeset
102 if (st == NULL)
b79853b4b005 Replaced i_stream_get_size() with i_stream_stat(). Added i_stream_sync().
Timo Sirainen <tss@iki.fi>
parents: 3239
diff changeset
103 return NULL;
b79853b4b005 Replaced i_stream_get_size() with i_stream_stat(). Added i_stream_sync().
Timo Sirainen <tss@iki.fi>
parents: 3239
diff changeset
104
b79853b4b005 Replaced i_stream_get_size() with i_stream_stat(). Added i_stream_sync().
Timo Sirainen <tss@iki.fi>
parents: 3239
diff changeset
105 stream->statbuf = *st;
b79853b4b005 Replaced i_stream_get_size() with i_stream_stat(). Added i_stream_sync().
Timo Sirainen <tss@iki.fi>
parents: 3239
diff changeset
106 if (lstream->v_size != (uoff_t)-1)
b79853b4b005 Replaced i_stream_get_size() with i_stream_stat(). Added i_stream_sync().
Timo Sirainen <tss@iki.fi>
parents: 3239
diff changeset
107 stream->statbuf.st_size = lstream->v_size;
b79853b4b005 Replaced i_stream_get_size() with i_stream_stat(). Added i_stream_sync().
Timo Sirainen <tss@iki.fi>
parents: 3239
diff changeset
108 return &stream->statbuf;
1870
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
109 }
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
110
6142
6c0bfc35af03 Removed memory pool parameter from iostreams. Default pool was almost always
Timo Sirainen <tss@iki.fi>
parents: 5207
diff changeset
111 struct istream *i_stream_create_limit(struct istream *input,
1870
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
112 uoff_t v_start_offset, uoff_t v_size)
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
113 {
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
114 struct limit_istream *lstream;
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
115
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
116 i_stream_ref(input);
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
117
6142
6c0bfc35af03 Removed memory pool parameter from iostreams. Default pool was almost always
Timo Sirainen <tss@iki.fi>
parents: 5207
diff changeset
118 lstream = i_new(struct limit_istream, 1);
1870
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
119 lstream->input = input;
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
120 lstream->v_start_offset = v_start_offset;
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
121 lstream->v_size = v_size;
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
122
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
123 lstream->istream.istream.v_offset =
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
124 input->v_offset < v_start_offset ? 0 :
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
125 input->v_offset - v_start_offset > v_size ? v_size :
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
126 input->v_offset - v_start_offset;
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
127
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
128 lstream->istream.iostream.close = _close;
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
129 lstream->istream.iostream.destroy = _destroy;
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
130 lstream->istream.iostream.set_max_buffer_size = _set_max_buffer_size;
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
131
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
132 lstream->istream.read = _read;
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
133 lstream->istream.seek = _seek;
3241
b79853b4b005 Replaced i_stream_get_size() with i_stream_stat(). Added i_stream_sync().
Timo Sirainen <tss@iki.fi>
parents: 3239
diff changeset
134 lstream->istream.stat = _stat;
1870
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
135
5106
81394e71f92a Added istream->blocking setting. It's now used to assert-crash early if a
Timo Sirainen <tss@iki.fi>
parents: 3879
diff changeset
136 lstream->istream.istream.blocking = input->blocking;
3239
904a268921af Added seekable variable to struct istream.
Timo Sirainen <tss@iki.fi>
parents: 2983
diff changeset
137 lstream->istream.istream.seekable = input->seekable;
6142
6c0bfc35af03 Removed memory pool parameter from iostreams. Default pool was almost always
Timo Sirainen <tss@iki.fi>
parents: 5207
diff changeset
138 return _i_stream_create(&lstream->istream, i_stream_get_fd(input),
1870
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
139 input->real_stream->abs_start_offset +
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
140 v_start_offset);
c972ea085643 istream rewrite. instead of directly setting any limits to stream, you now
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
141 }