1/**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the mingw-w64 runtime package.
4 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5 */
6#ifndef _TIMEB_H_
7#define _TIMEB_H_
8
9#include <crtdefs.h>
10
11#ifndef _WIN32
12#error Only Win32 target is supported!
13#endif
14
15#pragma pack(push,_CRT_PACKING)
16
17#ifdef __cplusplus
18extern "C" {
19#endif
20
21#ifndef _CRTIMP
22#define _CRTIMP __declspec(dllimport)
23#endif
24
25#ifdef _USE_32BIT_TIME_T
26#ifdef _WIN64
27#undef _USE_32BIT_TIME_T
28#endif
29#endif
30
31#ifndef _TIME32_T_DEFINED
32  typedef long __time32_t;
33#define _TIME32_T_DEFINED
34#endif
35
36#ifndef _TIME64_T_DEFINED
37  __MINGW_EXTENSION typedef __int64 __time64_t;
38#define _TIME64_T_DEFINED
39#endif
40
41#ifndef _TIME_T_DEFINED
42#ifdef _USE_32BIT_TIME_T
43  typedef __time32_t time_t;
44#else
45  typedef __time64_t time_t;
46#endif
47#define _TIME_T_DEFINED
48#endif
49
50#ifndef _TIMEB_DEFINED
51#define _TIMEB_DEFINED
52
53  struct __timeb32 {
54    __time32_t time;
55    unsigned short millitm;
56    short timezone;
57    short dstflag;
58  };
59
60#ifndef	NO_OLDNAMES
61  struct timeb {
62    time_t time;
63    unsigned short millitm;
64    short timezone;
65    short dstflag;
66  };
67#endif
68
69  struct __timeb64 {
70    __time64_t time;
71    unsigned short millitm;
72    short timezone;
73    short dstflag;
74  };
75
76#endif
77
78  _CRTIMP void __cdecl _ftime64(struct __timeb64 *_Time);
79
80#ifdef _WIN64
81#define _timeb __timeb64
82  _CRTIMP void __cdecl _ftime(struct __timeb64 *);
83#else
84#define _timeb __timeb32
85  _CRTIMP void __cdecl _ftime(struct __timeb32 *);
86#endif
87
88#ifndef _TIMESPEC_DEFINED
89#define _TIMESPEC_DEFINED
90struct timespec {
91  time_t  tv_sec;   /* Seconds */
92  long    tv_nsec;  /* Nanoseconds */
93};
94
95struct itimerspec {
96  struct timespec  it_interval;  /* Timer period */
97  struct timespec  it_value;     /* Timer expiration */
98};
99#endif
100
101#if !defined (RC_INVOKED) && !defined (NO_OLDNAMES)
102  void __cdecl ftime (struct timeb *);
103
104#ifndef __CRT__NO_INLINE
105  /* TODO: Avoid structure cast here !!!! */
106#ifndef _USE_32BIT_TIME_T
107  __CRT_INLINE void __cdecl ftime(struct timeb *_Tmb) {
108    _ftime64((struct __timeb64 *)_Tmb);
109  }
110#else
111  __CRT_INLINE void __cdecl ftime(struct timeb *_Tmb) {
112    _ftime((struct __timeb32 *)_Tmb);
113  }
114#endif /* _USE_32BIT_TIME_T */
115#endif /* !__CRT__NO_INLINE */
116#endif
117
118#ifdef __cplusplus
119}
120#endif
121
122#pragma pack(pop)
123
124#include <sec_api/sys/timeb_s.h>
125#endif
126