mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 15:41:43 +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. */
							 | 
						||
| 
								 | 
							
								}
							 |