#include <sys/types.h>
#include <sys/stat.h>
+#ifdef HAVE_UNISTD_H
#include <unistd.h>
+#endif
#include <fcntl.h>
#include <errno.h>
+#ifdef HOST_WIN32
+#include <corecrt_io.h>
+#endif
#include "map.h"
#include "mph.h"
G_BEGIN_DECLS
+#ifndef HOST_WIN32
gint32
Mono_Posix_Syscall_fcntl (gint32 fd, gint32 cmd)
{
return fcntl (fd, cmd);
}
+gint32
+Mono_Posix_Syscall_fcntl_arg_int (gint32 fd, gint32 cmd, int arg)
+{
+ if (Mono_Posix_FromFcntlCommand (cmd, &cmd) == -1)
+ return -1;
+ return fcntl (fd, cmd, arg);
+}
+
+gint32
+Mono_Posix_Syscall_fcntl_arg_ptr (gint32 fd, gint32 cmd, void *arg)
+{
+ if (Mono_Posix_FromFcntlCommand (cmd, &cmd) == -1)
+ return -1;
+ return fcntl (fd, cmd, arg);
+}
+
gint32
Mono_Posix_Syscall_fcntl_arg (gint32 fd, gint32 cmd, gint64 arg)
{
return -1;
}
- mph_return_if_off_t_overflow (lock->l_start);
- mph_return_if_off_t_overflow (lock->l_len);
+ if (Mono_Posix_FromFlock (lock, &_lock) == -1)
+ return -1;
- if (Mono_Posix_FromLockType (lock->l_type, &lock->l_type) == -1)
+ if (Mono_Posix_FromFcntlCommand (cmd, &cmd) == -1)
return -1;
- _lock.l_type = lock->l_type;
- _lock.l_whence = lock->l_whence;
- _lock.l_start = lock->l_start;
- _lock.l_len = lock->l_len;
- _lock.l_pid = lock->l_pid;
r = fcntl (fd, cmd, &_lock);
- if (Mono_Posix_ToLockType (_lock.l_type, &_lock.l_type) == -1)
- r = -1;
- lock->l_type = _lock.l_type;
- lock->l_whence = _lock.l_whence;
- lock->l_start = _lock.l_start;
- lock->l_len = _lock.l_len;
- lock->l_pid = _lock.l_pid;
+ if (Mono_Posix_ToFlock (&_lock, lock) == -1)
+ return -1;
return r;
}
+#endif
gint32
Mono_Posix_Syscall_open (const char *pathname, gint32 flags)
return open (pathname, flags, mode);
}
+gint32
+Mono_Posix_Syscall_get_at_fdcwd ()
+{
+#ifdef AT_FDCWD
+ return AT_FDCWD;
+#else
+ return -1;
+#endif
+}
+
gint32
Mono_Posix_Syscall_creat (const char *pathname, guint32 mode)
{