mirror of
https://github.com/postgres/postgres.git
synced 2025-09-02 04:21:28 +03:00
Provide pg_pread() and pg_pwrite() for random I/O.
Forward to POSIX pread() and pwrite(), or emulate them if unavailable. The emulation is not perfect as the file position is changed, so we'll put pg_ prefixes on the names to minimize the risk of confusion in future patches that might inadvertently try to mix pread() and read() on the same file descriptor. Author: Thomas Munro Reviewed-by: Tom Lane, Jesper Pedersen Discussion: https://postgr.es/m/CAEepm=02rapCpPR3ZGF2vW=SBHSdFYO_bz_f-wwWJonmA3APgw@mail.gmail.com
This commit is contained in:
@@ -392,6 +392,23 @@ extern double rint(double x);
|
||||
extern int inet_aton(const char *cp, struct in_addr *addr);
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Windows and older Unix don't have pread(2) and pwrite(2). We have
|
||||
* replacement functions, but they have slightly different semantics so we'll
|
||||
* use a name with a pg_ prefix to avoid confusion.
|
||||
*/
|
||||
#ifdef HAVE_PREAD
|
||||
#define pg_pread pread
|
||||
#else
|
||||
extern ssize_t pg_pread(int fd, void *buf, size_t nbyte, off_t offset);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_PWRITE
|
||||
#define pg_pwrite pwrite
|
||||
#else
|
||||
extern ssize_t pg_pwrite(int fd, const void *buf, size_t nbyte, off_t offset);
|
||||
#endif
|
||||
|
||||
#if !HAVE_DECL_STRLCAT
|
||||
extern size_t strlcat(char *dst, const char *src, size_t siz);
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user