Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2005-07-29 21:04:46 +0400
committerChristopher Faylor <me@cgf.cx>2005-07-29 21:04:46 +0400
commit7d7d09aee8fa09aab03d14b0b672a34805ce50b9 (patch)
tree1cb66c9528cb38296d698e2bbd03ad2dd68632e1 /winsup/cygwin/syscalls.cc
parent728b9af5c9abb690e0510916b38caf26360d4af9 (diff)
* 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.cc34
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