* Authors:
* Jonathan Pryor (jonpryor@vt.edu)
*
- * Copyright (C) 2004 Jonathan Pryor
+ * Copyright (C) 2004-2006 Jonathan Pryor
*/
#include <sys/types.h>
G_BEGIN_DECLS
-struct Mono_Posix_Syscall_Timeval {
- /* time_t */ mph_time_t tv_sec; /* seconds */
- /* suseconds_t */ gint64 tv_usec; /* microseconds */
-};
-
-struct Mono_Posix_Syscall_Timezone {
- int tz_minuteswest; /* minutes W of Greenwich */
- int tz_dsttime; /* ignored */
-};
-
gint32
Mono_Posix_Syscall_gettimeofday (
- struct Mono_Posix_Syscall_Timeval *tv,
- struct Mono_Posix_Syscall_Timezone *tz)
+ struct Mono_Posix_Timeval *tv,
+ void *tz)
{
struct timeval _tv;
struct timezone _tz;
tv->tv_usec = _tv.tv_usec;
}
if (tz) {
- tz->tz_minuteswest = _tz.tz_minuteswest;
- tz->tz_dsttime = 0;
+ struct Mono_Posix_Timezone *tz_ = (struct Mono_Posix_Timezone *) tz;
+ tz_->tz_minuteswest = _tz.tz_minuteswest;
+ tz_->tz_dsttime = 0;
}
}
gint32
Mono_Posix_Syscall_settimeofday (
- const struct Mono_Posix_Syscall_Timeval *tv,
- const struct Mono_Posix_Syscall_Timezone *tz)
+ struct Mono_Posix_Timeval *tv,
+ struct Mono_Posix_Timezone *tz)
{
struct timeval _tv = {0};
struct timeval *ptv = NULL;
return r;
}
+/* Remove this at some point in the future */
gint32
-Mono_Posix_Syscall_utimes (const char *filename,
- struct Mono_Posix_Syscall_Timeval *tv)
+Mono_Posix_Syscall_utimes_bad (const char *filename,
+ struct Mono_Posix_Timeval *tv)
{
struct timeval _tv;
struct timeval *ptv = NULL;
return utimes (filename, ptv);
}
+static inline struct timeval*
+copy_utimes (struct timeval* to, struct Mono_Posix_Timeval *from)
+{
+ if (from) {
+ to[0].tv_sec = from->tv_sec;
+ to[0].tv_usec = from->tv_usec;
+ to[1].tv_sec = from->tv_sec;
+ to[1].tv_usec = from->tv_usec;
+ return to;
+ }
+
+ return NULL;
+}
+
+gint32
+Mono_Posix_Syscall_utimes(const char *filename, struct Mono_Posix_Timeval *tv)
+{
+ struct timeval _tv[2];
+ struct timeval *ptv;
+
+ ptv = copy_utimes (_tv, tv);
+
+ return utimes (filename, ptv);
+}
+
+#ifdef HAVE_LUTIMES
+gint32
+Mono_Posix_Syscall_lutimes(const char *filename, struct Mono_Posix_Timeval *tv)
+{
+ struct timeval _tv[2];
+ struct timeval *ptv;
+
+ ptv = copy_utimes (_tv, tv);
+
+ return lutimes (filename, ptv);
+}
+#endif /* def HAVE_LUTIMES */
+
+gint32
+Mono_Posix_Syscall_futimes(int fd, struct Mono_Posix_Timeval *tv)
+{
+ struct timeval _tv[2];
+ struct timeval *ptv;
+
+ ptv = copy_utimes (_tv, tv);
+
+ return futimes (fd, ptv);
+}
+
G_END_DECLS
/*