Mercurial > dovecot > core-2.2
annotate src/lib/istream-data.c @ 22664:fea53c2725c0
director: Fix director_max_parallel_moves/kicks type
Should be uint, not time.
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Thu, 09 Nov 2017 12:24:16 +0200 |
parents | 2e2563132d5f |
children | cb108f786fb4 |
rev | line source |
---|---|
21390
2e2563132d5f
Updated copyright notices to include the year 2017.
Stephan Bosch <stephan.bosch@dovecot.fi>
parents:
20640
diff
changeset
|
1 /* Copyright (c) 2002-2017 Dovecot authors, see the included COPYING file */ |
764
f57c52738f90
Renamed IBuffer and OBuffer to IStream and OStream which describes their
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
2 |
f57c52738f90
Renamed IBuffer and OBuffer to IStream and OStream which describes their
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
3 #include "lib.h" |
13529
cf77e448295c
Renamed lib/*-internal.h files to lib/*-private.h for consistency.
Timo Sirainen <tss@iki.fi>
parents:
12782
diff
changeset
|
4 #include "istream-private.h" |
764
f57c52738f90
Renamed IBuffer and OBuffer to IStream and OStream which describes their
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
5 |
6420
a8b515e1a26f
Removed _ prefixes from function names.
Timo Sirainen <tss@iki.fi>
parents:
6419
diff
changeset
|
6 static ssize_t i_stream_data_read(struct istream_private *stream) |
764
f57c52738f90
Renamed IBuffer and OBuffer to IStream and OStream which describes their
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
7 { |
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
|
8 stream->istream.eof = TRUE; |
1667 | 9 return -1; |
764
f57c52738f90
Renamed IBuffer and OBuffer to IStream and OStream which describes their
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
10 } |
f57c52738f90
Renamed IBuffer and OBuffer to IStream and OStream which describes their
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
11 |
6420
a8b515e1a26f
Removed _ prefixes from function names.
Timo Sirainen <tss@iki.fi>
parents:
6419
diff
changeset
|
12 static void i_stream_data_seek(struct istream_private *stream, uoff_t v_offset, |
a8b515e1a26f
Removed _ prefixes from function names.
Timo Sirainen <tss@iki.fi>
parents:
6419
diff
changeset
|
13 bool mark ATTR_UNUSED) |
764
f57c52738f90
Renamed IBuffer and OBuffer to IStream and OStream which describes their
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
14 { |
f57c52738f90
Renamed IBuffer and OBuffer to IStream and OStream which describes their
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
15 stream->skip = v_offset; |
f57c52738f90
Renamed IBuffer and OBuffer to IStream and OStream which describes their
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
16 stream->istream.v_offset = v_offset; |
f57c52738f90
Renamed IBuffer and OBuffer to IStream and OStream which describes their
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
17 } |
f57c52738f90
Renamed IBuffer and OBuffer to IStream and OStream which describes their
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
18 |
6142
6c0bfc35af03
Removed memory pool parameter from iostreams. Default pool was almost always
Timo Sirainen <tss@iki.fi>
parents:
5483
diff
changeset
|
19 struct istream *i_stream_create_from_data(const void *data, size_t size) |
764
f57c52738f90
Renamed IBuffer and OBuffer to IStream and OStream which describes their
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
20 { |
6415
b0096861c390
Renamed struct _[io]stream to struct [io]stream_private. Also removed _
Timo Sirainen <tss@iki.fi>
parents:
6411
diff
changeset
|
21 struct istream_private *stream; |
764
f57c52738f90
Renamed IBuffer and OBuffer to IStream and OStream which describes their
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
22 |
6415
b0096861c390
Renamed struct _[io]stream to struct [io]stream_private. Also removed _
Timo Sirainen <tss@iki.fi>
parents:
6411
diff
changeset
|
23 stream = i_new(struct istream_private, 1); |
764
f57c52738f90
Renamed IBuffer and OBuffer to IStream and OStream which describes their
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
24 stream->buffer = data; |
f57c52738f90
Renamed IBuffer and OBuffer to IStream and OStream which describes their
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
25 stream->pos = size; |
13890
899a2359450a
istream-data: Avoid assert crashing due to recently added assert.
Timo Sirainen <tss@iki.fi>
parents:
13529
diff
changeset
|
26 stream->max_buffer_size = (size_t)-1; |
764
f57c52738f90
Renamed IBuffer and OBuffer to IStream and OStream which describes their
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
27 |
6420
a8b515e1a26f
Removed _ prefixes from function names.
Timo Sirainen <tss@iki.fi>
parents:
6419
diff
changeset
|
28 stream->read = i_stream_data_read; |
a8b515e1a26f
Removed _ prefixes from function names.
Timo Sirainen <tss@iki.fi>
parents:
6419
diff
changeset
|
29 stream->seek = i_stream_data_seek; |
764
f57c52738f90
Renamed IBuffer and OBuffer to IStream and OStream which describes their
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
30 |
9540
622509c562e8
Added struct istream.readable_fd, which is used to determine if sendfile() can be used.
Timo Sirainen <tss@iki.fi>
parents:
8590
diff
changeset
|
31 stream->istream.readable_fd = FALSE; |
5106
81394e71f92a
Added istream->blocking setting. It's now used to assert-crash early if a
Timo Sirainen <tss@iki.fi>
parents:
3863
diff
changeset
|
32 stream->istream.blocking = TRUE; |
3239
904a268921af
Added seekable variable to struct istream.
Timo Sirainen <tss@iki.fi>
parents:
2431
diff
changeset
|
33 stream->istream.seekable = TRUE; |
14688
128c598d2870
Avoid using (void)s by adding ATTR_NOWARN_UNUSED_RESULT attributes and other ways.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
34 i_stream_create(stream, NULL, -1); |
5483 | 35 stream->statbuf.st_size = size; |
14697
69334bf138cf
istreams: Set (file), (fd) or (buffer) as default name for those input streams.
Timo Sirainen <tss@iki.fi>
parents:
14688
diff
changeset
|
36 i_stream_set_name(&stream->istream, "(buffer)"); |
5483 | 37 return &stream->istream; |
764
f57c52738f90
Renamed IBuffer and OBuffer to IStream and OStream which describes their
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
38 } |
20640
9f7806638fa3
lib: Implemented i_stream_create_copy_from_data().
Stephan Bosch <stephan@rename-it.nl>
parents:
19552
diff
changeset
|
39 |
9f7806638fa3
lib: Implemented i_stream_create_copy_from_data().
Stephan Bosch <stephan@rename-it.nl>
parents:
19552
diff
changeset
|
40 static void i_stream_copied_data_free(void *data) |
9f7806638fa3
lib: Implemented i_stream_create_copy_from_data().
Stephan Bosch <stephan@rename-it.nl>
parents:
19552
diff
changeset
|
41 { |
9f7806638fa3
lib: Implemented i_stream_create_copy_from_data().
Stephan Bosch <stephan@rename-it.nl>
parents:
19552
diff
changeset
|
42 i_free(data); |
9f7806638fa3
lib: Implemented i_stream_create_copy_from_data().
Stephan Bosch <stephan@rename-it.nl>
parents:
19552
diff
changeset
|
43 } |
9f7806638fa3
lib: Implemented i_stream_create_copy_from_data().
Stephan Bosch <stephan@rename-it.nl>
parents:
19552
diff
changeset
|
44 struct istream * |
9f7806638fa3
lib: Implemented i_stream_create_copy_from_data().
Stephan Bosch <stephan@rename-it.nl>
parents:
19552
diff
changeset
|
45 i_stream_create_copy_from_data(const void *data, size_t size) |
9f7806638fa3
lib: Implemented i_stream_create_copy_from_data().
Stephan Bosch <stephan@rename-it.nl>
parents:
19552
diff
changeset
|
46 { |
9f7806638fa3
lib: Implemented i_stream_create_copy_from_data().
Stephan Bosch <stephan@rename-it.nl>
parents:
19552
diff
changeset
|
47 struct istream *stream; |
9f7806638fa3
lib: Implemented i_stream_create_copy_from_data().
Stephan Bosch <stephan@rename-it.nl>
parents:
19552
diff
changeset
|
48 void *buffer; |
9f7806638fa3
lib: Implemented i_stream_create_copy_from_data().
Stephan Bosch <stephan@rename-it.nl>
parents:
19552
diff
changeset
|
49 |
9f7806638fa3
lib: Implemented i_stream_create_copy_from_data().
Stephan Bosch <stephan@rename-it.nl>
parents:
19552
diff
changeset
|
50 if (size == 0) { |
9f7806638fa3
lib: Implemented i_stream_create_copy_from_data().
Stephan Bosch <stephan@rename-it.nl>
parents:
19552
diff
changeset
|
51 buffer = ""; |
9f7806638fa3
lib: Implemented i_stream_create_copy_from_data().
Stephan Bosch <stephan@rename-it.nl>
parents:
19552
diff
changeset
|
52 } else { |
9f7806638fa3
lib: Implemented i_stream_create_copy_from_data().
Stephan Bosch <stephan@rename-it.nl>
parents:
19552
diff
changeset
|
53 buffer = i_malloc(size); |
9f7806638fa3
lib: Implemented i_stream_create_copy_from_data().
Stephan Bosch <stephan@rename-it.nl>
parents:
19552
diff
changeset
|
54 memcpy(buffer, data, size); |
9f7806638fa3
lib: Implemented i_stream_create_copy_from_data().
Stephan Bosch <stephan@rename-it.nl>
parents:
19552
diff
changeset
|
55 } |
9f7806638fa3
lib: Implemented i_stream_create_copy_from_data().
Stephan Bosch <stephan@rename-it.nl>
parents:
19552
diff
changeset
|
56 stream = i_stream_create_from_data(buffer, size); |
9f7806638fa3
lib: Implemented i_stream_create_copy_from_data().
Stephan Bosch <stephan@rename-it.nl>
parents:
19552
diff
changeset
|
57 if (size > 0) { |
9f7806638fa3
lib: Implemented i_stream_create_copy_from_data().
Stephan Bosch <stephan@rename-it.nl>
parents:
19552
diff
changeset
|
58 i_stream_add_destroy_callback |
9f7806638fa3
lib: Implemented i_stream_create_copy_from_data().
Stephan Bosch <stephan@rename-it.nl>
parents:
19552
diff
changeset
|
59 (stream, i_stream_copied_data_free, buffer); |
9f7806638fa3
lib: Implemented i_stream_create_copy_from_data().
Stephan Bosch <stephan@rename-it.nl>
parents:
19552
diff
changeset
|
60 } |
9f7806638fa3
lib: Implemented i_stream_create_copy_from_data().
Stephan Bosch <stephan@rename-it.nl>
parents:
19552
diff
changeset
|
61 return stream; |
9f7806638fa3
lib: Implemented i_stream_create_copy_from_data().
Stephan Bosch <stephan@rename-it.nl>
parents:
19552
diff
changeset
|
62 } |