blob: bf5a45d15d29958243e44409d057dc29ac8ba1d4 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
#ifndef IOSTREAM_TEMP_H
#define IOSTREAM_TEMP_H
enum iostream_temp_flags {
/* if o_stream_send_istream() is called with a readable fd, don't
actually copy the input stream, just have iostream_temp_finish()
return a new iostream pointing to the fd dup()ed */
IOSTREAM_TEMP_FLAG_TRY_FD_DUP = 0x01
};
/* Start writing to given output stream. The data is initially written to
memory, and later to a temporary file that is immediately unlinked. */
struct ostream *iostream_temp_create(const char *temp_path_prefix,
enum iostream_temp_flags flags);
struct ostream *iostream_temp_create_named(const char *temp_path_prefix,
enum iostream_temp_flags flags,
const char *name);
struct ostream *iostream_temp_create_sized(const char *temp_path_prefix,
enum iostream_temp_flags flags,
const char *name,
size_t max_mem_size);
/* Finished writing to stream. Return input stream for it and free the
output stream. (It's also possible to abort iostream-temp by simply
destroying the ostream.) */
struct istream *iostream_temp_finish(struct ostream **output,
size_t max_buffer_size);
/* For internal testing: */
int o_stream_temp_move_to_memory(struct ostream *output);
#endif
|