| /* Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| #ifndef ATIME_H |
| #define ATIME_H |
| |
| #include "apr_private.h" |
| #include "apr_time.h" |
| #if APR_HAVE_TIME_H |
| #include <time.h> |
| #endif |
| |
| struct atime_t { |
| apr_pool_t *cntxt; |
| apr_time_t currtime; |
| SYSTEMTIME *explodedtime; |
| }; |
| |
| |
| /* 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; |
| } |
| |
| |
| __inline void AprTimeToFileTime(LPFILETIME pft, apr_time_t t) |
| { |
| LONGLONG ll; |
| t += APR_DELTA_EPOCH_IN_USEC; |
| ll = t * 10; |
| pft->dwLowDateTime = (DWORD)ll; |
| pft->dwHighDateTime = (DWORD) (ll >> 32); |
| return; |
| } |
| |
| |
| #endif /* ! ATIME_H */ |
| |