diff options
Diffstat (limited to '')
-rw-r--r-- | src/lib/iostream-temp.h | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/lib/iostream-temp.h b/src/lib/iostream-temp.h new file mode 100644 index 0000000..bf5a45d --- /dev/null +++ b/src/lib/iostream-temp.h @@ -0,0 +1,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 |