doom3-gpl
Doom 3 GPL source release
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
timeval.c
Go to the documentation of this file.
1 /***************************************************************************
2  * _ _ ____ _
3  * Project ___| | | | _ \| |
4  * / __| | | | |_) | |
5  * | (__| |_| | _ <| |___
6  * \___|\___/|_| \_\_____|
7  *
8  * Copyright (C) 1998 - 2004, Daniel Stenberg, <daniel@haxx.se>, et al.
9  *
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
15  * copies of the Software, and permit persons to whom the Software is
16  * furnished to do so, under the terms of the COPYING file.
17  *
18  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
19  * KIND, either express or implied.
20  *
21  * $Id: timeval.c,v 1.20 2004/03/11 13:13:35 bagder Exp $
22  ***************************************************************************/
23 
24 #include "timeval.h"
25 
26 #ifndef HAVE_GETTIMEOFDAY
27 
28 #ifdef WIN32
29 #include <mmsystem.h>
30 
31 static int gettimeofday(struct timeval *tp, void *nothing)
32 {
33 #ifdef WITHOUT_MM_LIB
34  SYSTEMTIME st;
35  time_t tt;
36  struct tm tmtm;
37  /* mktime converts local to UTC */
38  GetLocalTime (&st);
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;
45  tmtm.tm_isdst = -1;
46  tt = mktime (&tmtm);
47  tp->tv_sec = tt;
48  tp->tv_usec = st.wMilliseconds * 1000;
49 #else
50 
56  unsigned long Ticks = 0;
57  unsigned long Sec =0;
58  unsigned long Usec = 0;
59  Ticks = timeGetTime();
60 
61  Sec = Ticks/1000;
62  Usec = (Ticks - (Sec*1000))*1000;
63  tp->tv_sec = Sec;
64  tp->tv_usec = Usec;
65 #endif /* WITHOUT_MM_LIB */
66  (void)nothing;
67  return 0;
68 }
69 #else /* WIN32 */
70 /* non-win32 version of Curl_gettimeofday() */
71 static int gettimeofday(struct timeval *tp, void *nothing)
72 {
73  (void)nothing; /* we don't support specific time-zones */
74  tp->tv_sec = (long)time(NULL);
75  tp->tv_usec = 0;
76  return 0;
77 }
78 #endif /* WIN32 */
79 #endif /* HAVE_GETTIMEOFDAY */
80 
82 {
83  struct timeval now;
84  (void)gettimeofday(&now, NULL);
85  return now;
86 }
87 
88 /*
89  * Make sure that the first argument is the more recent time, as otherwise
90  * we'll get a weird negative time-diff back...
91  */
92 long Curl_tvdiff (struct timeval newer, struct timeval older)
93 {
94  return (newer.tv_sec-older.tv_sec)*1000+
95  (499+newer.tv_usec-older.tv_usec)/1000;
96 }
97 
98 long Curl_tvlong (struct timeval t1)
99 {
100  return t1.tv_sec;
101 }
long tv_sec
Definition: timeval.h:37
long Curl_tvlong(struct timeval t1)
Definition: timeval.c:98
long tv_usec
Definition: timeval.h:38
#define NULL
Definition: Lib.h:88
long Curl_tvdiff(struct timeval newer, struct timeval older)
Definition: timeval.c:92
GLfloat * st
Definition: qgl.h:89
time_t mktime(struct tm *)
typedef void(APIENTRYP PFNGLBLENDCOLORPROC)(GLclampf red
struct timeval Curl_tvnow(void)
Definition: timeval.c:81