Denis A Ustimenko wrote:
> On Sun, Oct 13, 2002 at 09:02:55PM -0700, Joe Conway wrote:
> > Denis A Ustimenko wrote:
> > >>Bruce, why have all precise time calculations been droped out in 1.206? 
> > >>If there is no
> > >>gettimeofday in win32?
> > 
> > gettimeofday was not portable to win32 (at least not that I could find) and 
> > hence broke the win32 build of the clients.
> > 
> 
> GetSystemTimeAsFileTime should help.
> 
> 
>http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/getsystemtimeasfiletime.asp

It's not clear to me how we could get this into something we can deal
with like gettimeofday.

I looked at the Apache APR project, and they have a routine that returns
the microseconds since 1970 for Unix:
        
        /* NB NB NB NB This returns GMT!!!!!!!!!! */
        APR_DECLARE(apr_time_t) apr_time_now(void)
        {
            struct timeval tv;
            gettimeofday(&tv, NULL);
            return tv.tv_sec * APR_USEC_PER_SEC + tv.tv_usec;
        }

and for Win32:
        
        APR_DECLARE(apr_time_t) apr_time_now(void)
        {
            LONGLONG aprtime = 0;
            FILETIME time;
        #ifndef _WIN32_WCE
            GetSystemTimeAsFileTime(&time);
        #else
            SYSTEMTIME st;
            GetSystemTime(&st);
            SystemTimeToFileTime(&st, &time);
        #endif
            FileTimeToAprTime(&aprtime, &time);
            return aprtime; 
        }

and FileTimeToAprTime() is:
        
        /* Number of micro-seconds between the beginning of the Windows epoch
         * (Jan. 1, 1601) and the Unix epoch (Jan. 1, 1970) 
         */
        #define APR_DELTA_EPOCH_IN_USEC   APR_TIME_C(11644473600000000);
        
        
        __inline void FileTimeToAprTime(apr_time_t *result, FILETIME *input)
        {
            /* Convert FILETIME one 64 bit number so we can work with it. */
            *result = input->dwHighDateTime;
            *result = (*result) << 32;
            *result |= input->dwLowDateTime;
            *result /= 10;    /* Convert from 100 nano-sec periods to micro-seconds. */
            *result -= APR_DELTA_EPOCH_IN_USEC;  /* Convert from Windows epoch to Unix 
epoch */
            return;
        }

So, this is what needs to be dealt with to get it working.

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  [EMAIL PROTECTED]               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

---------------------------(end of broadcast)---------------------------
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]

Reply via email to