22 #ifndef XAPIAN_INCLUDED_IO_UTILS_H
23 #define XAPIAN_INCLUDED_IO_UTILS_H
26 # error config.h must be included first in each C++ source file
29 #include <sys/types.h>
75 #if defined HAVE_FDATASYNC
78 return fdatasync(fd) == 0;
79 #elif defined HAVE_FSYNC
80 return fsync(fd) == 0;
81 #elif defined __WIN32__
82 return _commit(fd) == 0;
84 # error Cannot implement io_sync() without fdatasync(), fsync(), or _commit()
101 if (fcntl(fd, F_FULLFSYNC, 0) == 0)
117 size_t io_read(
int fd,
char * p,
size_t n,
size_t min = 0);
120 void io_write(
int fd,
const char * p,
size_t n);
122 inline void io_write(
int fd,
const unsigned char * p,
size_t n) {
123 io_write(fd,
reinterpret_cast<const char *
>(p), n);
130 #ifdef HAVE_POSIX_FADVISE
137 void io_read_block(
int fd,
char * p,
size_t n, off_t b, off_t o = 0);
140 void io_write_block(
int fd,
const char * p,
size_t n, off_t b, off_t o = 0);
158 bool io_unlink(
const std::string & filename);
168 bool io_tmp_rename(
const std::string & tmp_file,
const std::string & real_file);
void io_write_block(int fd, const char *p, size_t n, off_t b, off_t o=0)
Write block b size n bytes from buffer p to file descriptor fd, offset o.
size_t io_read(int fd, char *p, size_t n, size_t min=0)
Read n bytes (or until EOF) into block pointed to by p from file descriptor fd.
int io_open_block_wr(const char *filename, bool anew)
Open a block-based file for writing.
bool io_unlink(const std::string &filename)
Delete a file.
void io_write(int fd, const char *p, size_t n)
Write n bytes from block pointed to by p to file descriptor fd.
bool io_sync(int fd)
Ensure all data previously written to file descriptor fd has been written to disk.
bool io_full_sync(int fd)
void io_read_block(int fd, char *p, size_t n, off_t b, off_t o=0)
Read block b size n bytes into buffer p from file descriptor fd, offset o.
bool io_readahead_block(int, size_t, off_t, off_t=0)
Readahead block b size n bytes from file descriptor fd.
bool io_tmp_rename(const std::string &tmp_file, const std::string &real_file)
Rename a temporary file to its final position.
int io_open_block_rd(const char *filename)
Open a block-based file for reading.
WritableDatabase open()
Construct a WritableDatabase object for a new, empty InMemory database.
include <fcntl.h>, but working around broken platforms.
<unistd.h>, but with compat.