Thu Jan 18 00:32:43 1996 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
[kopensolaris-gnu/glibc.git] / time / time.h
index 712356f..7d90b7a 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1992 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
 This file is part of the GNU C Library.
 
 The GNU C Library is free software; you can redistribute it and/or
@@ -99,55 +99,68 @@ struct tm
 extern clock_t clock __P ((void));
 
 /* Return the current time and put it in *TIMER if TIMER is not NULL.  */
-extern time_t time __P ((time_t * __timer));
-
-#ifndef        __CONSTVALUE
-#ifdef __GNUC__
-/* The `const' keyword tells GCC that a function's return value is
-   based solely on its arguments, and there are no side-effects.  */
-#define        __CONSTVALUE    __const
-#else
-#define        __CONSTVALUE
-#endif /* GCC.  */
-#endif /* __CONSTVALUE not defined.  */
+extern time_t time __P ((time_t *__timer));
 
 /* Return the difference between TIME1 and TIME0.  */
-extern __CONSTVALUE double difftime __P ((time_t __time1, time_t __time0));
+extern double difftime __P ((time_t __time1, time_t __time0))
+     __attribute__ ((__const__));
 
 /* Return the `time_t' representation of TP and normalize TP.  */
-extern time_t mktime __P ((struct tm * __tp));
+extern time_t mktime __P ((struct tm *__tp));
+
+/* Subroutine of `mktime'.  Return the `time_t' representation of TP and
+   normalize TP, given that a `struct tm *' maps to a `time_t' as performed
+   by FUNC.  Keep track of next guess for time_t offset in *OFFSET.  */
+extern time_t __mktime_internal __P ((struct tm *__tp,
+                                     struct tm *(*__func) (const time_t *,
+                                                           struct tm *),
+                                     time_t *__offset));
 
 
 /* Format TP into S according to FORMAT.
    Write no more than MAXSIZE characters and return the number
    of characters written, or 0 if it would exceed MAXSIZE.  */
 extern size_t strftime __P ((char *__s, size_t __maxsize,
-                        __const char *__format, __const struct tm * __tp));
+                        __const char *__format, __const struct tm *__tp));
 
 
 /* Return the `struct tm' representation of *TIMER
    in Universal Coordinated Time (aka Greenwich Mean Time).  */
-extern struct tm *gmtime __P ((__const time_t * __timer));
+extern struct tm *gmtime __P ((__const time_t *__timer));
 
 /* Return the `struct tm' representation
    of *TIMER in the local timezone.  */
-extern struct tm *localtime __P ((__const time_t * __timer));
-
-/* Return the `struct tm' representation of *TIMER,
-   offset OFFSET seconds east of Universal Coordinated Time.  */
-extern struct tm *__offtime __P ((__const time_t * __timer, long int __offset));
-
-#ifdef __OPTIMIZE__
-#define        gmtime(timer)   __offtime((timer), 0L)
-#endif /* Optimizing.  */
+extern struct tm *localtime __P ((__const time_t *__timer));
+
+#ifdef __USE_REENTRANT
+/* Return the `struct tm' representation of *TIMER in UTC,
+   using *TP to store the result.  */
+extern struct tm *__gmtime_r __P ((__const time_t *__timer,
+                                  struct tm *__tp));
+extern struct tm *gmtime_r __P ((__const time_t *__timer,
+                                struct tm *__tp));
+
+/* Return the `struct tm' representation of *TIMER in local time,
+   using *TP to store the result.  */
+extern struct tm *__localtime_r __P ((__const time_t *__timer,
+                                     struct tm *__tp));
+extern struct tm *localtime_r __P ((__const time_t *__timer,
+                                   struct tm *__tp));
+#endif
 
+/* Compute the `struct tm' representation of *T,
+   offset OFFSET seconds east of UTC,
+   and store year, yday, mon, mday, wday, hour, min, sec into *TP.  */
+extern void __offtime __P ((__const time_t *__timer,
+                           long int __offset,
+                           struct tm *__TP));
 
 /* Return a string of the form "Day Mon dd hh:mm:ss yyyy\n"
    that is the representation of TP in this format.  */
-extern char *asctime __P ((__const struct tm * __tp));
+extern char *asctime __P ((__const struct tm *__tp));
 
 /* Equivalent to `asctime(localtime(timer))'.  */
-extern char *ctime __P ((__const time_t * __timer));
+extern char *ctime __P ((__const time_t *__timer));
 
 
 /* Defined in localtime.c.  */
@@ -163,6 +176,8 @@ extern void __tzset __P ((void));
 /* Same as above.  */
 extern char *tzname[2];
 
+/* Return the maximum length of a timezone name.
+   This is what `sysconf (_SC_TZNAME_MAX)' does.  */
 extern long int __tzname_max __P ((void));
 
 extern void tzset __P ((void));
@@ -177,7 +192,7 @@ extern long int timezone;
 
 /* Set the system time to *WHEN.
    This call is restricted to the superuser.  */
-extern int stime __P ((__const time_t * __when));
+extern int stime __P ((__const time_t *__when));
 #endif
 
 
@@ -186,6 +201,22 @@ extern int stime __P ((__const time_t * __when));
 #define        __isleap(year)  \
   ((year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0))
 
+
+#ifdef __USE_MISC
+/* Miscellaneous functions many Unices inherited from the public domain
+   localtime package.  These are included only for compatibility.  */
+
+/* Like `mktime', but for TP represents Universal Time, not local time.  */
+extern time_t timegm __P ((struct tm *__tp));
+
+/* Another name for `mktime'.  */
+extern time_t timelocal __P ((struct tm *__tp));
+
+/* Return the number of days in YEAR.  */
+extern int dysize __P ((int __year));
+#endif
+
+
 __END_DECLS
 
 #endif /* <time.h> included.  */