]> granicus.if.org Git - python/commitdiff
Watcom changes.
authorGuido van Rossum <guido@python.org>
Thu, 23 May 1996 22:53:47 +0000 (22:53 +0000)
committerGuido van Rossum <guido@python.org>
Thu, 23 May 1996 22:53:47 +0000 (22:53 +0000)
Add mktime() overflow test and make it NeXT robust by initializing
the structure from localtime().

Modules/timemodule.c

index ee3fb8db983c5584696b6683829dd31cecd44242..d8c1b2b02799d1b1aefcd8915356c1c12e193c7d 100644 (file)
@@ -52,6 +52,9 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 #include <sys/timeb.h>
 #endif
 
+#ifdef __WATCOMC__
+#include <i86.h>
+#else
 #ifdef _M_IX86
 #include <windows.h>
 #define timezone _timezone
@@ -59,6 +62,7 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 #define daylight _daylight
 #define altzone _altzone
 #endif
+#endif
 
 /* Forward declarations */
 static int floatsleep PROTO((double));
@@ -268,9 +272,17 @@ time_mktime(self, args)
        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 @@ floatsleep(secs)
                        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 @@ floatsleep(secs)
        sleep((int)secs);
 #endif /* _M_IX86 */
 #endif /* !MSDOS */
+#endif /* !__WATCOMC__ */
 #endif /* !macintosh */
 #endif /* !HAVE_SELECT */
        return 0;