mirror of
				https://github.com/python/cpython.git
				synced 2025-10-24 18:33:49 +00:00 
			
		
		
		
	
		
			
	
	
		
			61 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			61 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
|   | #include "Python.h"
 | ||
|  | 
 | ||
|  | #ifdef __APPLE__
 | ||
|  | #if defined(HAVE_GETTIMEOFDAY) && defined(HAVE_FTIME)
 | ||
|  |   /*
 | ||
|  |    * _PyTime_gettimeofday falls back to ftime when getttimeofday fails because the latter | ||
|  |    * might fail on some platforms. This fallback is unwanted on MacOSX because | ||
|  |    * that makes it impossible to use a binary build on OSX 10.4 on earlier | ||
|  |    * releases of the OS. Therefore claim we don't support ftime. | ||
|  |    */ | ||
|  | # undef HAVE_FTIME
 | ||
|  | #endif
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #ifdef HAVE_FTIME
 | ||
|  | #include <sys/timeb.h>
 | ||
|  | #if !defined(MS_WINDOWS) && !defined(PYOS_OS2)
 | ||
|  | extern int ftime(struct timeb *); | ||
|  | #endif /* MS_WINDOWS */
 | ||
|  | #endif /* HAVE_FTIME */
 | ||
|  | 
 | ||
|  | void | ||
|  | _PyTime_gettimeofday(_PyTime_timeval *tp) | ||
|  | { | ||
|  |     /* There are three ways to get the time:
 | ||
|  |       (1) gettimeofday() -- resolution in microseconds | ||
|  |       (2) ftime() -- resolution in milliseconds | ||
|  |       (3) time() -- resolution in seconds | ||
|  |       In all cases the return value in a timeval struct. | ||
|  |       Since on some systems (e.g. SCO ODT 3.0) gettimeofday() may | ||
|  |       fail, so we fall back on ftime() or time(). | ||
|  |       Note: clock resolution does not imply clock accuracy! */ | ||
|  | #ifdef HAVE_GETTIMEOFDAY
 | ||
|  | #ifdef GETTIMEOFDAY_NO_TZ
 | ||
|  |     if (gettimeofday(tp) == 0) | ||
|  |         return; | ||
|  | #else /* !GETTIMEOFDAY_NO_TZ */
 | ||
|  |     if (gettimeofday(tp, (struct timezone *)NULL) == 0) | ||
|  |         return; | ||
|  | #endif /* !GETTIMEOFDAY_NO_TZ */
 | ||
|  | #endif /* !HAVE_GETTIMEOFDAY */
 | ||
|  | #if defined(HAVE_FTIME)
 | ||
|  |     { | ||
|  |         struct timeb t; | ||
|  |         ftime(&t); | ||
|  |         tp->tv_sec = t.time; | ||
|  |         tp->tv_usec = t.millitm * 1000; | ||
|  |     } | ||
|  | #else /* !HAVE_FTIME */
 | ||
|  |     tp->tv_sec = time(NULL); | ||
|  |     tp->tv_usec = 0; | ||
|  | #endif /* !HAVE_FTIME */
 | ||
|  |     return; | ||
|  | } | ||
|  | 
 | ||
|  | void | ||
|  | _PyTime_Init() | ||
|  | { | ||
|  |     /* Do nothing.  Needed to force linking. */ | ||
|  | } |