-/* ----------------------------------------------------------------------------
- * $Id$
- * ----------------------------------------------------------------------------
- * Public Domain C Library - http://pdclib.sourceforge.net
- * This code is Public Domain. Use, modify, and redistribute at will.
- * ----------------------------------------------------------------------------
- * Date and time
- * --------------------------------------------------------------------------*/
-
-#ifndef _TIME_H
-#define _TIME_H _TIME_H
-
-#ifndef _NULL
-#include "__intern.h"
+/* Date and time <time.h>
+
+ This file is part of the Public Domain C Library (PDCLib).
+ Permission is granted to use, modify, and / or redistribute at will.
+*/
+
+#ifndef _PDCLIB_TIME_H
+#define _PDCLIB_TIME_H _PDCLIB_TIME_H
+#include "_PDCLIB_aux.h"
+#include "_PDCLIB_int.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef _PDCLIB_SIZE_T_DEFINED
+#define _PDCLIB_SIZE_T_DEFINED _PDCLIB_SIZE_T_DEFINED
+typedef _PDCLIB_size_t size_t;
+#endif
+
+#ifndef _PDCLIB_NULL_DEFINED
+#define _PDCLIB_NULL_DEFINED _PDCLIB_NULL_DEFINED
+#define NULL _PDCLIB_NULL
#endif
-/* TODO: Documentation. */
+typedef _PDCLIB_time_t time_t;
+typedef _PDCLIB_clock_t clock_t;
-/* ----------------------------------------------------------------------------
- * MACROS
- * --------------------------------------------------------------------------*/
+#define CLOCKS_PER_SEC _PDCLIB_CLOCKS_PER_SEC
+#define TIME_UTC _PDCLIB_TIME_UTC
-#define NULL _NULL
+struct timespec
+{
+ time_t tv_sec;
+ long tv_nsec;
+};
-#define CLOCKS_PER_SEC /* TODO - to __intern.h / __personality.h? */
+struct tm
+{
+ int tm_sec; /* 0-60 */
+ int tm_min; /* 0-59 */
+ int tm_hour; /* 0-23 */
+ int tm_mday; /* 1-31 */
+ int tm_mon; /* 0-11 */
+ int tm_year; /* years since 1900 */
+ int tm_wday; /* 0-6 */
+ int tm_yday; /* 0-365 */
+ int tm_isdst; /* >0 DST, 0 no DST, <0 information unavailable */
+};
-/* ----------------------------------------------------------------------------
- * TYPES
- * --------------------------------------------------------------------------*/
+/* Returns the number of "clocks" in processor time since the invocation
+ of the program. Divide by CLOCKS_PER_SEC to get the value in seconds.
+ Returns -1 if the value cannot be represented in the return type or is
+ not available.
+*/
+clock_t clock( void ) _PDCLIB_nothrow;
-/* TODO: Get struct tm into __intern.h */
+/* Returns the difference between two calendar times in seconds. */
+double difftime( time_t time1, time_t time0 ) _PDCLIB_nothrow;
-#ifndef _SIZE_T
-#define _SIZE_T _SIZE_T
-typedef __size_t size_t;
-#endif /* _SIZE_T */
+time_t mktime( struct tm * timeptr ) _PDCLIB_nothrow;
-typedef clock_t; /* TODO - to __intern.h / __personality.h? */
-typedef time_t; /* TODO - to __intern.h / __personality.h? */
+time_t time( time_t * timer ) _PDCLIB_nothrow;
-/* ----------------------------------------------------------------------------
- * FUNCTIONS
- * --------------------------------------------------------------------------*/
+int timespec_get( struct timespec * ts, int base ) _PDCLIB_nothrow;
-char * asctime( const struct tm * tptr );
-clock_t clock( void );
-char * ctime( const time_t * tod );
-double difftime( time_t t1, time_t t0 );
-struct tm * gmtime( const time_t * tod );
-struct tm * localtime( const time_t * tod );
-time_t mktime( struct tm * tptr );
-size_t strftime( char * restrict s, size_t n, const char * restrict format,
- const struct tm * restrict tptr );
-time_t time( time_t * tod );
+char * asctime( const struct tm * timeptr ) _PDCLIB_nothrow;
-#endif /* _TIME_H */
+char * ctime( const time_t * timer ) _PDCLIB_nothrow;
+
+struct tm * gmtime( const time_t * timer ) _PDCLIB_nothrow;
+
+struct tm * localtime( const time_t * timer ) _PDCLIB_nothrow;
+
+size_t strftime( char * _PDCLIB_restrict s, size_t maxsize, const char * _PDCLIB_restrict format, const struct tm * _PDCLIB_restrict timeptr );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif