]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
New hacks for include files to get time_t in the most portable way.
authorGuido van Rossum <guido@python.org>
Tue, 16 Apr 1991 08:47:51 +0000 (08:47 +0000)
committerGuido van Rossum <guido@python.org>
Tue, 16 Apr 1991 08:47:51 +0000 (08:47 +0000)
Added Turbo C milli functions (courtesy Mark Anacker)
Disable THINK C sleep for 4.0

Modules/timemodule.c

index b98e14054c92c8ca52c0d18b28be43333527c79f..738887d5c1fd4d26bb24acec3cced0519b5a5c83 100644 (file)
@@ -33,13 +33,30 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 #include <signal.h>
 #include <setjmp.h>
 
-#ifdef __STDC__
+/* What happens here is not trivial.
+   The BSD_TIME code needs <sys/time.h> (for struct timeval).
+   The rest of the code needs only time_t, except some MS-DOS
+   code which needs clock_t as well.
+   Standard C says that time_t is defined in <time.h>, and
+   does not have <sys/types.h>; THINK C agrees (MS-DOS too?).
+   What's worse, in pure 4.3 BSD, older SunOS versions, and
+   probably everything derived from BSD, you can't #include
+   both <time.h> and <sys/time.h> in the same file, since
+   <sys/time.h> includes <time.h> without any protection,
+   and <time.h> contains a typedef, which can't be parsed twice!
+   So on traditional UNIX systems we include <sys/types.h>
+   and <sys/time.h> and hope this implies <time.h> and time_t,
+   while on other systems, including conforming Standard C
+   systems (where 'unix' can't be defined), we rely on <time.h>.
+   Still one problem: BSD_TIME won't work with strict Standard C...
+*/
+
+#ifdef unix
+#include <sys/types.h>
+#include <sys/time.h> /* Implies <time.h> everywhere, as far as I know */
+#else /* !unix */
 #include <time.h>
-#else /* !__STDC__ */
-typedef unsigned long time_t;
-extern time_t time();
-#endif /* !__STDC__ */
-
+#endif /* !unix */
 
 /* Time methods */
 
@@ -51,7 +68,7 @@ time_time(self, args)
        time_t secs;
        if (!getnoarg(args))
                return NULL;
-       secs = time((time_t *)NULL);
+       time(&secs);
 #ifdef THINK_C
 #ifndef THINK_C_3_0
 /* Difference in origin between Mac and Unix clocks: */
@@ -109,6 +126,10 @@ extern long sys_milli();
 #define DO_MILLI
 #endif /* BSD_TIME */
 
+#ifdef TURBO_C
+#define DO_MILLI
+#endif
+
 #ifdef DO_MILLI
 
 static object *
@@ -172,6 +193,7 @@ inittime()
 
 #define MacTicks       (* (long *)0x16A)
 
+#ifdef THINK_C_3_0
 sleep(msecs)
        int msecs;
 {
@@ -183,6 +205,7 @@ sleep(msecs)
                        sleep_catcher(SIGINT);
        }
 }
+#endif
 
 millisleep(msecs)
        long msecs;
@@ -207,9 +230,6 @@ millitimer()
 
 #ifdef BSD_TIME
 
-#include <sys/types.h>
-#include <sys/time.h>
-
 long
 millitimer()
 {
@@ -232,3 +252,27 @@ millisleep(msecs)
 
 #endif /* BSD_TIME */
 
+
+#ifdef TURBO_C /* Maybe also for MS-DOS? */
+
+#ifndef CLOCKS_PER_SEC
+#define CLOCKS_PER_SEC 55      /* 54.945 msec per tick (18.2 HZ clock) */
+#endif
+
+static
+millisleep(msecs)
+       long msecs;
+{
+       delay(msecs);
+}
+
+static long
+millitimer()
+{
+       clock_t ticks;
+
+       ticks = clock();        /* ticks since program start */
+       return ticks * CLOCKS_PER_SEC;
+}
+
+#endif /* TURBO_C */