bf132be3fe1c9e8de84f10d0b05c0b46ca542ac4Timo Sirainen#ifndef ISTREAM_FILE_PRIVATE_H
bf132be3fe1c9e8de84f10d0b05c0b46ca542ac4Timo Sirainen#define ISTREAM_FILE_PRIVATE_H
bf132be3fe1c9e8de84f10d0b05c0b46ca542ac4Timo Sirainen
bf132be3fe1c9e8de84f10d0b05c0b46ca542ac4Timo Sirainen#include "istream-private.h"
bf132be3fe1c9e8de84f10d0b05c0b46ca542ac4Timo Sirainen
bf132be3fe1c9e8de84f10d0b05c0b46ca542ac4Timo Sirainenstruct file_istream {
bf132be3fe1c9e8de84f10d0b05c0b46ca542ac4Timo Sirainen struct istream_private istream;
bf132be3fe1c9e8de84f10d0b05c0b46ca542ac4Timo Sirainen
bf132be3fe1c9e8de84f10d0b05c0b46ca542ac4Timo Sirainen uoff_t skip_left;
bf132be3fe1c9e8de84f10d0b05c0b46ca542ac4Timo Sirainen
0dffa25d211be541ee3c953b23566a1a990789dfTimo Sirainen bool file:1;
0dffa25d211be541ee3c953b23566a1a990789dfTimo Sirainen bool autoclose_fd:1;
0dffa25d211be541ee3c953b23566a1a990789dfTimo Sirainen bool seen_eof:1;
bf132be3fe1c9e8de84f10d0b05c0b46ca542ac4Timo Sirainen};
bf132be3fe1c9e8de84f10d0b05c0b46ca542ac4Timo Sirainen
bf132be3fe1c9e8de84f10d0b05c0b46ca542ac4Timo Sirainenstruct istream *
bf132be3fe1c9e8de84f10d0b05c0b46ca542ac4Timo Siraineni_stream_create_file_common(struct file_istream *fstream,
bf132be3fe1c9e8de84f10d0b05c0b46ca542ac4Timo Sirainen int fd, const char *path,
bf132be3fe1c9e8de84f10d0b05c0b46ca542ac4Timo Sirainen size_t max_buffer_size, bool autoclose_fd);
bf132be3fe1c9e8de84f10d0b05c0b46ca542ac4Timo Sirainenssize_t i_stream_file_read(struct istream_private *stream);
bf132be3fe1c9e8de84f10d0b05c0b46ca542ac4Timo Sirainenvoid i_stream_file_close(struct iostream_private *stream, bool close_parent);
bf132be3fe1c9e8de84f10d0b05c0b46ca542ac4Timo Sirainen
bf132be3fe1c9e8de84f10d0b05c0b46ca542ac4Timo Sirainen#endif