for __cplusplus. (gettimeofday): Add prototype. * mingwex/gettimeofday.c: New file. * mingwex/makefile.in: Add gettimeofday source and object.
		
			
				
	
	
		
			50 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
/*
 | 
						|
 * gettimeofday
 | 
						|
 * Implementation according to:
 | 
						|
 * The Open Group Base Specifications Issue 6
 | 
						|
 * IEEE Std 1003.1, 2004 Edition
 | 
						|
 */
 | 
						|
  
 | 
						|
/*
 | 
						|
 *  THIS SOFTWARE IS NOT COPYRIGHTED
 | 
						|
 *
 | 
						|
 *  This source code is offered for use in the public domain. You may
 | 
						|
 *  use, modify or distribute it freely.
 | 
						|
 *
 | 
						|
 *  This code is distributed in the hope that it will be useful but
 | 
						|
 *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
 | 
						|
 *  DISCLAIMED. This includes but is not limited to warranties of
 | 
						|
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 | 
						|
 *
 | 
						|
 *  Contributed by:
 | 
						|
 *  Danny Smith <dannysmith@users.sourceforge.net>
 | 
						|
 */
 | 
						|
 | 
						|
#include <sys/time.h>
 | 
						|
#define WIN32_LEAN_AND_MEAN
 | 
						|
#include <windows.h>
 | 
						|
 | 
						|
/* Offset between 1/1/1601 and 1/1/1970 in 100 nanosec units */
 | 
						|
#define _W32_FT_OFFSET (116444736000000000ULL)
 | 
						|
 | 
						|
 | 
						|
int __cdecl gettimeofday(struct timeval *__restrict__ tp,
 | 
						|
			 void *__restrict__ tzp __attribute__((unused)))
 | 
						|
 {
 | 
						|
  union {
 | 
						|
    unsigned long long ns100; /*time since 1 Jan 1601 in 100ns units */
 | 
						|
    FILETIME ft;
 | 
						|
  }  _now;
 | 
						|
 | 
						|
  if(tp)
 | 
						|
    {
 | 
						|
      GetSystemTimeAsFileTime (&_now.ft);
 | 
						|
      tp->tv_usec=(long)((_now.ns100 / 10ULL) % 1000000ULL );
 | 
						|
      tp->tv_sec= (long)((_now.ns100 - _W32_FT_OFFSET) / 10000000ULL);
 | 
						|
    }
 | 
						|
  /* Always return 0 as per Open Group Base Specifications Issue 6.
 | 
						|
     Do not set errno on error.  */
 | 
						|
  return 0;
 | 
						|
}
 | 
						|
 |