| /***************************************************************************** |
| * _ _ ____ _ |
| * Project ___| | | | _ \| | |
| * / __| | | | |_) | | |
| * | (__| |_| | _ <| |___ |
| * \___|\___/|_| \_\_____| |
| * |
| * The contents of this file are subject to the Mozilla Public License |
| * Version 1.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.mozilla.org/MPL/ |
| * |
| * Software distributed under the License is distributed on an "AS IS" |
| * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the |
| * License for the specific language governing rights and limitations |
| * under the License. |
| * |
| * The Original Code is Curl. |
| * |
| * The Initial Developer of the Original Code is Daniel Stenberg. |
| * |
| * Portions created by the Initial Developer are Copyright (C) 1998. |
| * All Rights Reserved. |
| * |
| * ------------------------------------------------------------ |
| * Main author: |
| * - Daniel Stenberg <[email protected]> |
| * |
| * http://curl.haxx.se |
| * |
| * $Source$ |
| * $Revision$ |
| * $Date$ |
| * $Author$ |
| * $State$ |
| * $Locker$ |
| * |
| * ------------------------------------------------------------ |
| ****************************************************************************/ |
| |
| #ifdef WIN32 |
| #include <windows.h> |
| #endif |
| #include "timeval.h" |
| |
| #ifndef HAVE_GETTIMEOFDAY |
| |
| #ifdef WIN32 |
| int |
| gettimeofday (struct timeval *tp, void *nothing) |
| { |
| SYSTEMTIME st; |
| time_t tt; |
| struct tm tmtm; |
| /* mktime converts local to UTC */ |
| GetLocalTime (&st); |
| tmtm.tm_sec = st.wSecond; |
| tmtm.tm_min = st.wMinute; |
| tmtm.tm_hour = st.wHour; |
| tmtm.tm_mday = st.wDay; |
| tmtm.tm_mon = st.wMonth - 1; |
| tmtm.tm_year = st.wYear - 1900; |
| tmtm.tm_isdst = -1; |
| tt = mktime (&tmtm); |
| tp->tv_sec = tt; |
| tp->tv_usec = st.wMilliseconds * 1000; |
| return 1; |
| } |
| #define HAVE_GETTIMEOFDAY |
| #endif |
| #endif |
| |
| struct timeval tvnow () |
| { |
| struct timeval now; |
| #ifdef HAVE_GETTIMEOFDAY |
| gettimeofday (&now, NULL); |
| #else |
| now.tv_sec = (long) time(NULL); |
| now.tv_usec = 0; |
| #endif |
| return now; |
| } |
| |
| double tvdiff (struct timeval t1, struct timeval t2) |
| { |
| return (double)(t1.tv_sec - t2.tv_sec) + ((t1.tv_usec-t2.tv_usec)/1000000.0); |
| } |
| |
| long tvlong (struct timeval t1) |
| { |
| return t1.tv_sec; |
| } |