Watcom changes.

Add mktime() overflow test and make it NeXT robust by initializing
the structure from localtime().
This commit is contained in:
Guido van Rossum 1996-05-23 22:53:47 +00:00
parent dadc824c6e
commit bceeac8dc1
1 changed files with 18 additions and 1 deletions

View 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;