]> git.sur5r.net Git - cc65/blobdiff - include/time.h
Merge pull request #628 from ops/VIAFIX_PET
[cc65] / include / time.h
index 195ce1448f2236109c9cc23c589150dce20cd74f..22e24a56e0ac8d5d44be23070c893d4da3387aeb 100644 (file)
@@ -1,9 +1,35 @@
-/*
- * time.h
- *
- * Ullrich von Bassewitz, 17.06.1998
- *
- */
+/*****************************************************************************/
+/*                                                                           */
+/*                                  time.h                                   */
+/*                                                                           */
+/*                               Date and time                               */
+/*                                                                           */
+/*                                                                           */
+/*                                                                           */
+/* (C) 1998-2012 Ullrich von Bassewitz                                       */
+/*               Roemerstrasse 52                                            */
+/*               D-70794 Filderstadt                                         */
+/* EMail:        uz@cc65.org                                                 */
+/*                                                                           */
+/*                                                                           */
+/* This software is provided 'as-is', without any expressed or implied       */
+/* warranty.  In no event will the authors be held liable for any damages    */
+/* arising from the use of this software.                                    */
+/*                                                                           */
+/* Permission is granted to anyone to use this software for any purpose,     */
+/* including commercial applications, and to alter it and redistribute it    */
+/* freely, subject to the following restrictions:                            */
+/*                                                                           */
+/* 1. The origin of this software must not be misrepresented; you must not   */
+/*    claim that you wrote the original software. If you use this software   */
+/*    in a product, an acknowledgment in the product documentation would be  */
+/*    appreciated but is not required.                                       */
+/* 2. Altered source versions must be plainly marked as such, and must not   */
+/*    be misrepresented as being the original software.                      */
+/* 3. This notice may not be removed or altered from any source              */
+/*    distribution.                                                          */
+/*                                                                           */
+/*****************************************************************************/
 
 
 
 
 
 
-#include <stddef.h>
-
+/* NULL pointer */
+#ifndef _HAVE_NULL
+#define NULL    0
+#define _HAVE_NULL
+#endif
 
+/* size_t is needed */
+#ifndef _HAVE_size_t
+#define _HAVE_size_t
+typedef unsigned size_t;
+#endif
 
 typedef unsigned long time_t;
 typedef unsigned long clock_t;
 
 /* Structure for broken down time */
-struct tm {
-    int        tm_sec;
-    int tm_min;
-    int tm_hour;
-    int tm_mday;
-    int tm_mon;
-    int tm_year;
-    int tm_wday;
-    int tm_yday;
-    int tm_isdst;
+struct tm {     
+    int     tm_sec;
+    int     tm_min;
+    int     tm_hour;
+    int     tm_mday;
+    int     tm_mon;
+    int     tm_year;
+    int     tm_wday;
+    int     tm_yday;
+    int     tm_isdst;
 };
 
-/* The 610 gets its clock from the AC current */
-#ifdef __CBM__
-#  ifdef __CBM610__
-#    define CLK_TCK                    50      /* POSIX */
-#    define CLOCKS_PER_TICK    50      /* ANSI */
+/* Timezone representation, default is UTC */
+extern struct _timezone {
+    char    daylight;   /* True if daylight savings time active */
+    long    timezone;   /* Number of seconds behind UTC */
+    char    tzname[5];  /* Name of timezone, e.g. CET */
+    char    dstname[5]; /* Name when daylight true, e.g. CEST */
+} _tz;
+
+
+
+#if defined(__ATARI__)
+/* The clock depends on the video standard, so read it at runtime */
+unsigned _clocks_per_sec (void);
+#  define CLK_TCK               _clocks_per_sec()
+#  define CLOCKS_PER_SEC        _clocks_per_sec()
+#elif defined(__ATARI5200__)
+#  define CLK_TCK               60      /* POSIX */
+#  define CLOCKS_PER_SEC        60      /* ANSI */
+#elif defined(__ATMOS__)
+#  define CLK_TCK               100     /* POSIX */
+#  define CLOCKS_PER_SEC        100     /* ANSI */
+#elif defined(__CBM__)
+#  if defined(__CBM510__) || defined(__CBM610__)
+/* The 510/610 gets its clock from the AC current */
+#    define CLK_TCK             50      /* POSIX */
+#    define CLOCKS_PER_SEC      50      /* ANSI */
 #  else
-#    define CLK_TCK            60      /* POSIX */
-#    define CLOCKS_PER_TICK    60      /* ANSI */
+#    define CLK_TCK             60      /* POSIX */
+#    define CLOCKS_PER_SEC      60      /* ANSI */
 #  endif
+#elif defined(__NES__)
+#  define CLK_TCK               50      /* POSIX */
+#  define CLOCKS_PER_SEC        50      /* ANSI */
+#elif defined(__PCE__)
+#  define CLK_TCK               60      /* POSIX */
+#  define CLOCKS_PER_SEC        60      /* ANSI */
+#elif  defined(__GAMATE__)
+#  define CLK_TCK               135     /* POSIX */     /* FIXME */
+#  define CLOCKS_PER_SEC        135     /* ANSI */      /* FIXME */
+#elif  defined(__GEOS__)
+#  define CLK_TCK               1       /* POSIX */
+#  define CLOCKS_PER_SEC        1       /* ANSI */
+#elif defined(__LYNX__)
+/* The clock-rate depends on the video scan-rate;
+** so, read it at run-time.
+*/
+extern clock_t _clk_tck (void);
+#  define CLK_TCK               _clk_tck()
+#  define CLOCKS_PER_SEC        _clk_tck()
 #endif
 
 
 
-/* Function prototypes */
+time_t _systime (void);
+/* Similar to time(), but:
+**   - Is not ISO C
+**   - Does not take the additional pointer
+**   - Does not set errno when returning -1
+*/
+
+/* ISO C function prototypes */
+char* __fastcall__ asctime (const struct tm* timep);
 clock_t clock (void);
+char* __fastcall__ ctime (const time_t* timep);
+struct tm* __fastcall__ gmtime (const time_t* timep);
+struct tm* __fastcall__ localtime (const time_t* timep);
+time_t __fastcall__ mktime (struct tm* timep);
+size_t __fastcall__ strftime (char* buf, size_t bufsize, const char* format, const struct tm* tm);
+time_t __fastcall__ time (time_t* t);