Watcom changes.
Add mktime() overflow test and make it NeXT robust by initializing
the structure from localtime().
diff --git a/Modules/timemodule.c b/Modules/timemodule.c
index ee3fb8d..d8c1b2b 100644
--- a/Modules/timemodule.c
+++ b/Modules/timemodule.c
@@ -52,6 +52,9 @@
 #include <sys/timeb.h>
 #endif
 
+#ifdef __WATCOMC__
+#include <i86.h>
+#else
 #ifdef _M_IX86
 #include <windows.h>
 #define timezone _timezone
@@ -59,6 +62,7 @@
 #define daylight _daylight
 #define altzone _altzone
 #endif
+#endif
 
 /* Forward declarations */
 static int floatsleep PROTO((double));
@@ -268,9 +272,17 @@
 	object *args;
 {
 	struct tm buf;
+	time_t tt;
+	tt = time(&tt);
+	buf = *localtime(&tt);
 	if (!gettmarg(args, &buf))
 		return NULL;
-	return newintobject((long)mktime(&buf));
+	tt = mktime(&buf);
+	if (tt == (time_t)(-1)) {
+		err_setstr(OverflowError, "mktime argument out of range");
+		return NULL;
+	}
+	return newfloatobject((double)tt);
 }
 
 static struct methodlist time_methods[] = {
@@ -423,6 +435,10 @@
 			return -1;
 	}
 #else /* !macintosh */
+#ifdef __WATCOMC__
+	/* XXX Can't interrupt this sleep */
+	delay((int)(secs * 1000 + 0.5));  /* delay() uses milliseconds */
+#else /* !__WATCOMC__ */
 #ifdef MSDOS
 	struct timeb t1, t2;
 	double frac;
@@ -459,6 +475,7 @@
 	sleep((int)secs);
 #endif /* _M_IX86 */
 #endif /* !MSDOS */
+#endif /* !__WATCOMC__ */
 #endif /* !macintosh */
 #endif /* !HAVE_SELECT */
 	return 0;