diff options
author | Christopher Faylor <me@cgf.cx> | 2005-07-29 17:04:46 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2005-07-29 17:04:46 +0000 |
commit | 7d7d09aee8fa09aab03d14b0b672a34805ce50b9 (patch) | |
tree | 1cb66c9528cb38296d698e2bbd03ad2dd68632e1 /winsup/cygwin/syscalls.cc | |
parent | 728b9af5c9abb690e0510916b38caf26360d4af9 (diff) | |
download | cygnal-7d7d09aee8fa09aab03d14b0b672a34805ce50b9.tar.gz cygnal-7d7d09aee8fa09aab03d14b0b672a34805ce50b9.tar.bz2 cygnal-7d7d09aee8fa09aab03d14b0b672a34805ce50b9.zip |
* fhandler.h (fhandler_base::pread): Declare new function.
(fhandler_base::pwrite): Ditto.
(fhandler_disk_file::pread): Ditto.
(fhandler_disk_file::pwrite): Ditto.
* fhandler.cc (fhandler_base::pread): Define new function.
(fhandler_base::pwrite): Ditto.
* fhandler_disk_file.cc (fhandler_base::pread): Ditto.
(fhandler_base::pwrite): Ditto.
* syscalls.cc (pread): Define new function.
(pwrite): Ditto.
* cygwin.din: Export pread, pwrite.
* include/sys/ioctl.h: Guard some _IO* declarations to avoid conflict with
socket.h.
Diffstat (limited to 'winsup/cygwin/syscalls.cc')
-rw-r--r-- | winsup/cygwin/syscalls.cc | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index 37f3b74eb..c359d4689 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -20,6 +20,8 @@ details. */ #define _open64 __FOO_open64__ #define _lseek64 __FOO_lseek64__ #define _fstat64 __FOO_fstat64__ +#define pread __FOO_pread +#define pwrite __FOO_pwrite #include "winsup.h" #include <sys/stat.h> @@ -46,6 +48,8 @@ details. */ #undef fstat #undef lstat #undef stat +#undef pread +#undef pwrite #include <cygwin/version.h> #include <sys/cygwin.h> @@ -388,6 +392,36 @@ read (int fd, void *ptr, size_t len) return readv (fd, &iov, 1); } +extern "C" ssize_t +pread (int fd, void *ptr, size_t len, _off64_t off) +{ + ssize_t res; + cygheap_fdget cfd (fd); + if (cfd < 0) + res = -1; + else + res = cfd->pread (ptr, len, off); + + syscall_printf ("%d = pread (%d, %p, %d, %d), errno %d", + res, fd, ptr, len, off, get_errno ()); + return res; +} + +extern "C" ssize_t +pwrite (int fd, void *ptr, size_t len, _off64_t off) +{ + ssize_t res; + cygheap_fdget cfd (fd); + if (cfd < 0) + res = -1; + else + res = cfd->pwrite (ptr, len, off); + + syscall_printf ("%d = pwrite (%d, %p, %d, %d), errno %d", + res, fd, ptr, len, off, get_errno ()); + return res; +} + EXPORT_ALIAS (read, _read) extern "C" ssize_t |