added watt32 headers and brought the DOS version up to parity with UNIX
[oftp] / libs / watt32 / sys / wtime.h
diff --git a/libs/watt32/sys/wtime.h b/libs/watt32/sys/wtime.h
new file mode 100644 (file)
index 0000000..37986eb
--- /dev/null
@@ -0,0 +1,112 @@
+/*!\file sys/wtime.h
+ *
+ * Watt-32 time functions.
+ */
+
+#ifndef __SYS_WTIME_H
+#define __SYS_WTIME_H
+
+/*
+ * The naming <sys/wtime.h> is required for those compilers that
+ * have <sys/time.h> in the usual place but doesn't define
+ * the following.
+ */
+
+#include <time.h>
+
+#ifdef __BORLANDC__
+#undef timezone   /* a macro in bcc 5+ */
+#endif
+
+#ifndef __SYS_W32API_H
+#include <sys/w32api.h>
+#endif
+
+#ifndef __SYS_CDEFS_H
+#include <sys/cdefs.h>
+#endif
+
+#if defined(__DJGPP__)
+  #include <sys/time.h>
+  #include <sys/times.h>
+
+#elif defined(__MINGW32__)
+  #include <sys/time.h>
+
+#else
+  struct timeval {
+         time_t tv_sec;
+         long   tv_usec;
+       };
+  #define STRUCT_TIMEVAL_DEFINED
+#endif
+
+#if !defined(__DJGPP__)
+  struct timezone {
+         int tz_minuteswest;
+         int tz_dsttime;
+       };
+
+  struct tms {
+         unsigned long tms_utime;
+         unsigned long tms_cstime;
+         unsigned long tms_cutime;
+         unsigned long tms_stime;
+       };
+  #define STRUCT_TIMEZONE_DEFINED
+  #define STRUCT_TMS_DEFINED
+
+  __BEGIN_DECLS
+
+  #define ITIMER_REAL  0
+  #define ITIMER_PROF  1
+
+  struct itimerval {
+         struct timeval it_interval;  /* timer interval */
+         struct timeval it_value;     /* current value */
+       };
+
+  W32_FUNC int getitimer (int, struct itimerval *);
+  W32_FUNC int setitimer (int, struct itimerval *, struct itimerval *);
+
+  W32_FUNC int gettimeofday (struct timeval *tp, struct timezone *tz);
+
+  __END_DECLS
+
+#endif      /* !__DJGPP__ */
+
+#if !defined(_STRUCT_TIMESPEC) && !defined(_pthread_signal_h)
+  #define _STRUCT_TIMESPEC
+  struct timespec {
+         time_t tv_sec;
+         long   tv_nsec;
+       };
+#endif
+
+#ifndef HZ
+#define HZ 18.2F
+#endif
+
+__BEGIN_DECLS
+
+W32_FUNC unsigned long net_times (struct tms *buffer);
+W32_FUNC int           gettimeofday2 (struct timeval *tv, struct timezone *tz);
+
+__END_DECLS
+
+/*
+ * Operations on timevals.
+ *
+ * NB: timercmp does not work for >= or <=.
+ */
+#ifndef timerisset
+  #define timerisset(tvp)         ((tvp)->tv_sec || (tvp)->tv_usec)
+
+  #define timercmp(tvp, uvp, cmp) ((tvp)->tv_sec cmp (uvp)->tv_sec || \
+                                   ((tvp)->tv_sec == (uvp)->tv_sec &&  \
+                                    (tvp)->tv_usec cmp (uvp)->tv_usec))
+
+  #define timerclear(tvp)         (tvp)->tv_sec = (tvp)->tv_usec = 0
+#endif
+
+#endif  /* !__SYS_WTIME_H */