mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-11-03 21:40:52 -05:00 
			
		
		
		
	
		
			
	
	
		
			75 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			75 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								 * timeval.h    1.0 01/12/19
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * Defines gettimeofday, timeval, etc. for Win32
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * By Wu Yongwei
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifndef _TIMEVAL_H
							 | 
						||
| 
								 | 
							
								#define _TIMEVAL_H
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifdef _WIN32
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define WIN32_LEAN_AND_MEAN
							 | 
						||
| 
								 | 
							
								#include <windows.h>
							 | 
						||
| 
								 | 
							
								#include <time.h>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifndef __GNUC__
							 | 
						||
| 
								 | 
							
								#define EPOCHFILETIME (116444736000000000i64)
							 | 
						||
| 
								 | 
							
								#else
							 | 
						||
| 
								 | 
							
								#define EPOCHFILETIME (116444736000000000LL)
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								//struct timeval {
							 | 
						||
| 
								 | 
							
								//    long tv_sec;        /* seconds */
							 | 
						||
| 
								 | 
							
								//    long tv_usec;  /* microseconds */
							 | 
						||
| 
								 | 
							
								//};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct timezone {
							 | 
						||
| 
								 | 
							
								    int tz_minuteswest; /* minutes W of Greenwich */
							 | 
						||
| 
								 | 
							
								    int tz_dsttime;     /* type of dst correction */
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								__inline int gettimeofday(struct timeval *tv, struct timezone *tz)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    FILETIME        ft;
							 | 
						||
| 
								 | 
							
								    LARGE_INTEGER   li;
							 | 
						||
| 
								 | 
							
								    __int64         t;
							 | 
						||
| 
								 | 
							
								    static int      tzflag;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (tv)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        GetSystemTimeAsFileTime(&ft);
							 | 
						||
| 
								 | 
							
								        li.LowPart  = ft.dwLowDateTime;
							 | 
						||
| 
								 | 
							
								        li.HighPart = ft.dwHighDateTime;
							 | 
						||
| 
								 | 
							
								        t  = li.QuadPart;       /* In 100-nanosecond intervals */
							 | 
						||
| 
								 | 
							
								        t -= EPOCHFILETIME;     /* Offset to the Epoch time */
							 | 
						||
| 
								 | 
							
								        t /= 10;                /* In microseconds */
							 | 
						||
| 
								 | 
							
								        tv->tv_sec  = (long)(t / 1000000);
							 | 
						||
| 
								 | 
							
								        tv->tv_usec = (long)(t % 1000000);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (tz)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        if (!tzflag)
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            _tzset();
							 | 
						||
| 
								 | 
							
								            tzflag++;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        tz->tz_minuteswest = _timezone / 60;
							 | 
						||
| 
								 | 
							
								        tz->tz_dsttime = _daylight;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    return 0;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#else  /* _WIN32 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <sys/time.h>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif /* _WIN32 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif /* _TIMEVAL_H */
							 |