* 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.
This commit is contained in:
Christopher Faylor
2005-07-29 17:04:46 +00:00
parent 728b9af5c9
commit 7d7d09aee8
8 changed files with 128 additions and 25 deletions

View File

@@ -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