1
/*****************************************************************************
3
* Project ___| | | | _ \| |
5
* | (__| |_| | _ <| |___
1
/***************************************************************************
3
* Project ___| | | | _ \| |
5
* | (__| |_| | _ <| |___
6
6
* \___|\___/|_| \_\_____|
8
* Copyright (C) 2000, Daniel Stenberg, <daniel@haxx.se>, et al.
8
* Copyright (C) 1998 - 2004, Daniel Stenberg, <daniel@haxx.se>, et al.
10
* In order to be useful for every potential user, curl and libcurl are
11
* dual-licensed under the MPL and the MIT/X-derivate licenses.
10
* This software is licensed as described in the file COPYING, which
11
* you should have received as part of this distribution. The terms
12
* are also available at http://curl.haxx.se/docs/copyright.html.
13
14
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
14
15
* copies of the Software, and permit persons to whom the Software is
15
* furnished to do so, under the terms of the MPL or the MIT/X-derivate
16
* licenses. You may pick one of these licenses.
16
* furnished to do so, under the terms of the COPYING file.
18
18
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
19
19
* KIND, either express or implied.
21
* $Id: timeval.c,v 1.11 2001/11/12 22:10:09 bagder Exp $
22
*****************************************************************************/
21
* $Id: timeval.c,v 1.23 2004/04/09 09:36:31 bagder Exp $
22
***************************************************************************/
27
24
#include "timeval.h"
29
26
#ifndef HAVE_GETTIMEOFDAY
33
gettimeofday (struct timeval *tp, void *nothing)
38
/* mktime converts local to UTC */
40
tmtm.tm_sec = st.wSecond;
41
tmtm.tm_min = st.wMinute;
42
tmtm.tm_hour = st.wHour;
43
tmtm.tm_mday = st.wDay;
44
tmtm.tm_mon = st.wMonth - 1;
45
tmtm.tm_year = st.wYear - 1900;
49
tp->tv_usec = st.wMilliseconds * 1000;
52
#define HAVE_GETTIMEOFDAY
56
struct timeval Curl_tvnow (void)
31
static int gettimeofday(struct timeval *tp, void *nothing)
59
#ifdef HAVE_GETTIMEOFDAY
60
gettimeofday (&now, NULL);
37
/* mktime converts local to UTC */
39
tmtm.tm_sec = st.wSecond;
40
tmtm.tm_min = st.wMinute;
41
tmtm.tm_hour = st.wHour;
42
tmtm.tm_mday = st.wDay;
43
tmtm.tm_mon = st.wMonth - 1;
44
tmtm.tm_year = st.wYear - 1900;
48
tp->tv_usec = st.wMilliseconds * 1000;
62
now.tv_sec = (long) time(NULL);
51
** The earlier time calculations using GetLocalTime
52
** had a time resolution of 10ms.The timeGetTime, part
53
** of multimedia apis offer a better time resolution
54
** of 1ms.Need to link against winmm.lib for this
56
unsigned long Ticks = 0;
58
unsigned long Usec = 0;
59
Ticks = timeGetTime();
62
Usec = (Ticks - (Sec*1000))*1000;
65
#endif /* WITHOUT_MM_LIB */
70
/* non-win32 version of Curl_gettimeofday() */
71
static int gettimeofday(struct timeval *tp, void *nothing)
73
(void)nothing; /* we don't support specific time-zones */
74
tp->tv_sec = (long)time(NULL);
79
#endif /* HAVE_GETTIMEOFDAY */
81
/* Return the current time in a timeval struct */
82
struct timeval curlx_tvnow(void)
85
(void)gettimeofday(&now, NULL);
69
90
* Make sure that the first argument is the more recent time, as otherwise
70
91
* we'll get a weird negative time-diff back...
93
* Returns: the time difference in number of milliseconds.
72
long Curl_tvdiff (struct timeval newer, struct timeval older)
95
long curlx_tvdiff(struct timeval newer, struct timeval older)
74
97
return (newer.tv_sec-older.tv_sec)*1000+
75
(499+newer.tv_usec-older.tv_usec)/1000;
78
long Curl_tvlong (struct timeval t1)
98
(newer.tv_usec-older.tv_usec)/1000;
85
* eval: (load-file "../curl-mode.el")
88
* vim: et sw=2 ts=2 sts=2 tw=78
102
* Same as curlx_tvdiff but with full usec resolution.
104
* Returns: the time difference in seconds with subsecond resolution.
106
double curlx_tvdiff_secs(struct timeval newer, struct timeval older)
108
return (double)(newer.tv_sec-older.tv_sec)+
109
(double)(newer.tv_usec-older.tv_usec)/1000000.0;
112
/* return the number of seconds in the given input timeval struct */
113
long Curl_tvlong(struct timeval t1)