summaryrefslogtreecommitdiff
path: root/winsup/cygwin/syscalls.cc
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/syscalls.cc')
-rw-r--r--winsup/cygwin/syscalls.cc29
1 files changed, 25 insertions, 4 deletions
diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc
index 22a73df67d5..520a6d5ed0f 100644
--- a/winsup/cygwin/syscalls.cc
+++ b/winsup/cygwin/syscalls.cc
@@ -13,6 +13,9 @@ details. */
#define _open __FOO_open__
#define _read __FOO_read__
#define _write __FOO_write__
+#define _open64 __FOO_open64__
+#define _lseek64 __FOO_lseek64__
+#define _fstat64 __FOO_fstat64__
#include "winsup.h"
#include <sys/stat.h>
@@ -52,6 +55,9 @@ details. */
#undef _open
#undef _read
#undef _write
+#undef _open64
+#undef _lseek64
+#undef _fstat64
SYSTEM_INFO system_info;
@@ -516,6 +522,9 @@ open (const char *unix_path, int flags, ...)
extern "C" int _open (const char *, int flags, ...)
__attribute__ ((alias ("open")));
+extern "C" int _open64 (const char *, int flags, ...)
+ __attribute__ ((alias ("open")));
+
extern "C" __off64_t
lseek64 (int fd, __off64_t pos, int dir)
{
@@ -540,6 +549,9 @@ lseek64 (int fd, __off64_t pos, int dir)
return res;
}
+extern "C" int _lseek64 (int fd, __off64_t pos, int dir)
+ __attribute__ ((alias ("lseek64")));
+
extern "C" __off32_t
lseek (int fd, __off32_t pos, int dir)
{
@@ -1020,6 +1032,9 @@ fstat64 (int fd, struct __stat64 *buf)
return res;
}
+extern "C" int _fstat64 (int fd, __off64_t pos, int dir)
+ __attribute__ ((alias ("fstat64")));
+
extern "C" int
_fstat (int fd, struct __stat32 *buf)
{
@@ -1954,7 +1969,7 @@ mknod_worker (const char *path, mode_t type, mode_t mode, _major_t major,
}
extern "C" int
-mknod (const char *path, mode_t mode, dev_t dev)
+mknod32 (const char *path, mode_t mode, __dev32_t dev)
{
if (check_null_empty_str_errno (path))
return -1;
@@ -1970,8 +1985,8 @@ mknod (const char *path, mode_t mode, dev_t dev)
}
mode_t type = mode & S_IFMT;
- _major_t major = dev >> 8 /* SIGH. _major (dev) */;
- _minor_t minor = dev & 0xff /* SIGH _minor (dev) */;
+ _major_t major = _major (dev);
+ _minor_t minor = _minor (dev);
switch (type)
{
case S_IFCHR:
@@ -1980,7 +1995,7 @@ mknod (const char *path, mode_t mode, dev_t dev)
case S_IFIFO:
major = _major (FH_FIFO);
- minor = _minor (FH_FIFO) & 0xff; /* SIGH again */
+ minor = _minor (FH_FIFO);
break;
case 0:
@@ -2002,6 +2017,12 @@ mknod (const char *path, mode_t mode, dev_t dev)
}
extern "C" int
+mknod (const char *_path, mode_t mode, __dev16_t dev)
+{
+ return mknod32 (_path, mode, (__dev32_t) dev);
+}
+
+extern "C" int
mkfifo (const char *_path, mode_t mode)
{
return -1;