mingw-5.1.4/win32/include/time.h
changeset 0 76b1f169d9fe
equal deleted inserted replaced
-1:000000000000 0:76b1f169d9fe
       
     1 /* 
       
     2  * time.h
       
     3  * This file has no copyright assigned and is placed in the Public Domain.
       
     4  * This file is a part of the mingw-runtime package.
       
     5  * No warranty is given; refer to the file DISCLAIMER within the package.
       
     6  *
       
     7  * Date and time functions and types.
       
     8  *
       
     9  */
       
    10 
       
    11 #ifndef	_TIME_H_
       
    12 #define	_TIME_H_
       
    13 
       
    14 /* All the headers include this file. */
       
    15 #include <_mingw.h>
       
    16 
       
    17 #define __need_wchar_t
       
    18 #define __need_size_t
       
    19 #define __need_NULL
       
    20 #ifndef RC_INVOKED
       
    21 #include <stddef.h>
       
    22 #endif	/* Not RC_INVOKED */
       
    23 
       
    24 /*
       
    25  * Number of clock ticks per second. A clock tick is the unit by which
       
    26  * processor time is measured and is returned by 'clock'.
       
    27  */
       
    28 #define	CLOCKS_PER_SEC	((clock_t)1000)
       
    29 #define	CLK_TCK		CLOCKS_PER_SEC
       
    30 
       
    31 
       
    32 #ifndef RC_INVOKED
       
    33 
       
    34 /*
       
    35  * A type for storing the current time and date. This is the number of
       
    36  * seconds since midnight Jan 1, 1970.
       
    37  * NOTE: This is also defined in non-ISO sys/types.h.
       
    38  */
       
    39 #ifndef _TIME_T_DEFINED
       
    40 typedef	long	time_t;
       
    41 #define _TIME_T_DEFINED
       
    42 #endif
       
    43 
       
    44 #ifndef __STRICT_ANSI__
       
    45 /* A 64-bit time_t to get to Y3K */
       
    46 #ifndef _TIME64_T_DEFINED
       
    47 typedef __int64 __time64_t;
       
    48 #define _TIME64_T_DEFINED
       
    49 #endif
       
    50 #endif
       
    51 /*
       
    52  * A type for measuring processor time (in clock ticks).
       
    53  */
       
    54 #ifndef _CLOCK_T_DEFINED
       
    55 typedef	long	clock_t;
       
    56 #define _CLOCK_T_DEFINED
       
    57 #endif
       
    58 
       
    59 #ifndef _TM_DEFINED
       
    60 /*
       
    61  * A structure for storing all kinds of useful information about the
       
    62  * current (or another) time.
       
    63  */
       
    64 struct tm
       
    65 {
       
    66 	int	tm_sec;		/* Seconds: 0-59 (K&R says 0-61?) */
       
    67 	int	tm_min;		/* Minutes: 0-59 */
       
    68 	int	tm_hour;	/* Hours since midnight: 0-23 */
       
    69 	int	tm_mday;	/* Day of the month: 1-31 */
       
    70 	int	tm_mon;		/* Months *since* january: 0-11 */
       
    71 	int	tm_year;	/* Years since 1900 */
       
    72 	int	tm_wday;	/* Days since Sunday (0-6) */
       
    73 	int	tm_yday;	/* Days since Jan. 1: 0-365 */
       
    74 	int	tm_isdst;	/* +1 Daylight Savings Time, 0 No DST,
       
    75 				 * -1 don't know */
       
    76 };
       
    77 #define _TM_DEFINED
       
    78 #endif
       
    79 
       
    80 #ifdef	__cplusplus
       
    81 extern "C" {
       
    82 #endif
       
    83 
       
    84 _CRTIMP clock_t __cdecl __MINGW_NOTHROW	clock (void);
       
    85 _CRTIMP time_t __cdecl __MINGW_NOTHROW	time (time_t*);
       
    86 _CRTIMP double __cdecl __MINGW_NOTHROW	difftime (time_t, time_t);
       
    87 _CRTIMP time_t __cdecl __MINGW_NOTHROW	mktime (struct tm*);
       
    88 
       
    89 /*
       
    90  * These functions write to and return pointers to static buffers that may
       
    91  * be overwritten by other function calls. Yikes!
       
    92  *
       
    93  * NOTE: localtime, and perhaps the others of the four functions grouped
       
    94  * below may return NULL if their argument is not 'acceptable'. Also note
       
    95  * that calling asctime with a NULL pointer will produce an Invalid Page
       
    96  * Fault and crap out your program. Guess how I know. Hint: stat called on
       
    97  * a directory gives 'invalid' times in st_atime etc...
       
    98  */
       
    99 _CRTIMP char* __cdecl __MINGW_NOTHROW		asctime (const struct tm*);
       
   100 _CRTIMP char* __cdecl __MINGW_NOTHROW		ctime (const time_t*);
       
   101 _CRTIMP struct tm*  __cdecl __MINGW_NOTHROW	gmtime (const time_t*);
       
   102 _CRTIMP struct tm*  __cdecl __MINGW_NOTHROW	localtime (const time_t*);
       
   103 
       
   104 _CRTIMP size_t __cdecl __MINGW_NOTHROW		strftime (char*, size_t, const char*, const struct tm*);
       
   105 
       
   106 #ifndef __STRICT_ANSI__
       
   107 
       
   108 extern _CRTIMP void __cdecl __MINGW_NOTHROW	_tzset (void);
       
   109 
       
   110 #ifndef _NO_OLDNAMES
       
   111 extern _CRTIMP void __cdecl __MINGW_NOTHROW	tzset (void);
       
   112 #endif
       
   113 
       
   114 _CRTIMP char* __cdecl __MINGW_NOTHROW	_strdate(char*);
       
   115 _CRTIMP char* __cdecl __MINGW_NOTHROW	_strtime(char*);
       
   116 
       
   117 /* These require newer versions of msvcrt.dll (6.10 or higher). */ 
       
   118 #if __MSVCRT_VERSION__ >= 0x0601
       
   119 _CRTIMP __time64_t __cdecl __MINGW_NOTHROW  _time64( __time64_t*);
       
   120 _CRTIMP __time64_t __cdecl __MINGW_NOTHROW  _mktime64 (struct tm*);
       
   121 _CRTIMP char* __cdecl __MINGW_NOTHROW _ctime64 (const __time64_t*);
       
   122 _CRTIMP struct tm*  __cdecl __MINGW_NOTHROW _gmtime64 (const __time64_t*);
       
   123 _CRTIMP struct tm*  __cdecl __MINGW_NOTHROW _localtime64 (const __time64_t*);
       
   124 #endif /* __MSVCRT_VERSION__ >= 0x0601 */
       
   125 
       
   126 /*
       
   127  * _daylight: non zero if daylight savings time is used.
       
   128  * _timezone: difference in seconds between GMT and local time.
       
   129  * _tzname: standard/daylight savings time zone names (an array with two
       
   130  *          elements).
       
   131  */
       
   132 #ifdef __MSVCRT__
       
   133 
       
   134 /* These are for compatibility with pre-VC 5.0 suppied MSVCRT. */
       
   135 extern _CRTIMP int* __cdecl __MINGW_NOTHROW	__p__daylight (void);
       
   136 extern _CRTIMP long* __cdecl __MINGW_NOTHROW	__p__timezone (void);
       
   137 extern _CRTIMP char** __cdecl __MINGW_NOTHROW	__p__tzname (void);
       
   138 
       
   139 __MINGW_IMPORT int	_daylight;
       
   140 __MINGW_IMPORT long	_timezone;
       
   141 __MINGW_IMPORT char 	*_tzname[2];
       
   142 
       
   143 #else /* not __MSVCRT (ie. crtdll) */
       
   144 
       
   145 #ifndef __DECLSPEC_SUPPORTED
       
   146 
       
   147 extern int*	_imp___daylight_dll;
       
   148 extern long*	_imp___timezone_dll;
       
   149 extern char**	_imp___tzname;
       
   150 
       
   151 #define _daylight	(*_imp___daylight_dll)
       
   152 #define _timezone	(*_imp___timezone_dll)
       
   153 #define _tzname		(*_imp___tzname)
       
   154 
       
   155 #else /* __DECLSPEC_SUPPORTED */
       
   156 
       
   157 __MINGW_IMPORT int	_daylight_dll;
       
   158 __MINGW_IMPORT long	_timezone_dll;
       
   159 __MINGW_IMPORT char*	_tzname[2];
       
   160 
       
   161 #define _daylight	_daylight_dll
       
   162 #define _timezone	_timezone_dll
       
   163 
       
   164 #endif /* __DECLSPEC_SUPPORTED */
       
   165 
       
   166 #endif /* not __MSVCRT__ */
       
   167 
       
   168 #ifndef _NO_OLDNAMES
       
   169 
       
   170 #ifdef __MSVCRT__
       
   171 
       
   172 /* These go in the oldnames import library for MSVCRT. */
       
   173 __MINGW_IMPORT int	daylight;
       
   174 __MINGW_IMPORT long	timezone;
       
   175 __MINGW_IMPORT char 	*tzname[2];
       
   176 
       
   177 #else /* not __MSVCRT__ */
       
   178 
       
   179 /* CRTDLL is royally messed up when it comes to these macros.
       
   180    TODO: import and alias these via oldnames import library instead 
       
   181    of macros.  */
       
   182 
       
   183 #define daylight        _daylight
       
   184 /* NOTE: timezone not defined as macro because it would conflict with
       
   185    struct timezone in sys/time.h.
       
   186    Also, tzname used to a be macro, but now it's in moldname. */
       
   187 __MINGW_IMPORT char 	*tzname[2];
       
   188 
       
   189 #endif /* not __MSVCRT__ */
       
   190 
       
   191 #endif	/* Not _NO_OLDNAMES */
       
   192 #endif	/* Not __STRICT_ANSI__ */
       
   193 
       
   194 #ifndef _WTIME_DEFINED
       
   195 /* wide function prototypes, also declared in wchar.h */
       
   196 #ifndef __STRICT_ANSI__
       
   197 #ifdef __MSVCRT__
       
   198 _CRTIMP wchar_t* __cdecl __MINGW_NOTHROW	_wasctime(const struct tm*);
       
   199 _CRTIMP wchar_t* __cdecl __MINGW_NOTHROW	_wctime(const time_t*);
       
   200 _CRTIMP wchar_t* __cdecl __MINGW_NOTHROW	_wstrdate(wchar_t*);
       
   201 _CRTIMP wchar_t* __cdecl __MINGW_NOTHROW	_wstrtime(wchar_t*);
       
   202 #if __MSVCRT_VERSION__ >= 0x0601
       
   203 _CRTIMP wchar_t* __cdecl __MINGW_NOTHROW	_wctime64 (const __time64_t*);
       
   204 #endif
       
   205 #endif /*  __MSVCRT__ */
       
   206 #endif /* __STRICT_ANSI__ */
       
   207 _CRTIMP size_t __cdecl __MINGW_NOTHROW		wcsftime (wchar_t*, size_t, const wchar_t*, const struct tm*);
       
   208 #define _WTIME_DEFINED
       
   209 #endif /* _WTIME_DEFINED */ 
       
   210 
       
   211 #ifdef	__cplusplus
       
   212 }
       
   213 #endif
       
   214 
       
   215 #endif	/* Not RC_INVOKED */
       
   216 
       
   217 #endif	/* Not _TIME_H_ */
       
   218