| 1 | /* | 
|---|
| 2 | * Copyright (c) 1989, 1993 | 
|---|
| 3 | *      The Regents of the University of California.  All rights reserved. | 
|---|
| 4 | * (c) UNIX System Laboratories, Inc. | 
|---|
| 5 | * All or some portions of this file are derived from material licensed | 
|---|
| 6 | * to the University of California by American Telephone and Telegraph | 
|---|
| 7 | * Co. or Unix System Laboratories, Inc. and are reproduced herein with | 
|---|
| 8 | * the permission of UNIX System Laboratories, Inc. | 
|---|
| 9 | * | 
|---|
| 10 | * Redistribution and use in source and binary forms, with or without | 
|---|
| 11 | * modification, are permitted provided that the following conditions | 
|---|
| 12 | * are met: | 
|---|
| 13 | * 1. Redistributions of source code must retain the above copyright | 
|---|
| 14 | *    notice, this list of conditions and the following disclaimer. | 
|---|
| 15 | * 2. Redistributions in binary form must reproduce the above copyright | 
|---|
| 16 | *    notice, this list of conditions and the following disclaimer in the | 
|---|
| 17 | *    documentation and/or other materials provided with the distribution. | 
|---|
| 18 | * 3. All advertising materials mentioning features or use of this software | 
|---|
| 19 | *    must display the following acknowledgement: | 
|---|
| 20 | *      This product includes software developed by the University of | 
|---|
| 21 | *      California, Berkeley and its contributors. | 
|---|
| 22 | * 4. Neither the name of the University nor the names of its contributors | 
|---|
| 23 | *    may be used to endorse or promote products derived from this software | 
|---|
| 24 | *    without specific prior written permission. | 
|---|
| 25 | * | 
|---|
| 26 | * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND | 
|---|
| 27 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 
|---|
| 28 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | 
|---|
| 29 | * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE | 
|---|
| 30 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | 
|---|
| 31 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | 
|---|
| 32 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | 
|---|
| 33 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | 
|---|
| 34 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | 
|---|
| 35 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | 
|---|
| 36 | * SUCH DAMAGE. | 
|---|
| 37 | * | 
|---|
| 38 | *      @(#)time.h      8.3 (Berkeley) 1/21/94 | 
|---|
| 39 | */ | 
|---|
| 40 |  | 
|---|
| 41 | /* | 
|---|
| 42 | * $FreeBSD: src/include/time.h,v 1.30 2002/09/06 11:23:32 tjr Exp $ | 
|---|
| 43 | */ | 
|---|
| 44 |  | 
|---|
| 45 | /** @file | 
|---|
| 46 | * FreeBSD 5.1 | 
|---|
| 47 | * | 
|---|
| 48 | * @changed EMX isms. | 
|---|
| 49 | * @changed Removed timezone() function as it clashes with the timezone | 
|---|
| 50 | *          variable defined in EMX and OGBSI6. | 
|---|
| 51 | * @changed Changed CLK_TCK and CLOCKS_PER_SEC to 100. | 
|---|
| 52 | * @changed Commented out tm_gmtoff and tm_zone in struct tm as LIBC doesn't | 
|---|
| 53 | *          implement these yet. | 
|---|
| 54 | * | 
|---|
| 55 | * @todo    Implement tm_gmtoff and tm_zone members in struct tm. | 
|---|
| 56 | * @todo    Implement clock_getres(), clock_gettime(), clock_settime(), nanosleep(). | 
|---|
| 57 | *          asctime_r(), ctime_r(), gmtime_r() and localtime_r() which are defined in | 
|---|
| 58 | *          various POSIX standard revisions. | 
|---|
| 59 | * @todo    Implement tzsetwall(), timelocal(), timegm() which are BSD specific. | 
|---|
| 60 | */ | 
|---|
| 61 |  | 
|---|
| 62 | #ifndef _TIME_H_ | 
|---|
| 63 | #define _TIME_H_ | 
|---|
| 64 | #define _TIME_H                         /* bird: EMX */ | 
|---|
| 65 |  | 
|---|
| 66 | #include <sys/cdefs.h> | 
|---|
| 67 | #include <sys/_types.h> | 
|---|
| 68 |  | 
|---|
| 69 | #if __POSIX_VISIBLE > 0 && __POSIX_VISIBLE < 200112 || __BSD_VISIBLE | 
|---|
| 70 | /* | 
|---|
| 71 | * Frequency of the clock ticks reported by times().  Deprecated - use | 
|---|
| 72 | * sysconf(_SC_CLK_TCK) instead.  (Removed in 1003.1-2001.) | 
|---|
| 73 | */ | 
|---|
| 74 | #define CLK_TCK         100             /* bird: EMX uses 100, FreeBSD 128. */ | 
|---|
| 75 | #endif | 
|---|
| 76 |  | 
|---|
| 77 | /* Frequency of the clock ticks reported by clock().  */ | 
|---|
| 78 | #define CLOCKS_PER_SEC  100             /* bird: EMX uses 100, FreeBSD 128. */ | 
|---|
| 79 |  | 
|---|
| 80 | #ifndef NULL | 
|---|
| 81 | #define NULL    0 | 
|---|
| 82 | #endif | 
|---|
| 83 |  | 
|---|
| 84 | #if !defined(_CLOCK_T_DECLARED) && !defined(_CLOCK_T) /* bird: EMX */ | 
|---|
| 85 | typedef __clock_t       clock_t; | 
|---|
| 86 | #define _CLOCK_T_DECLARED | 
|---|
| 87 | #define _CLOCK_T                        /* bird: EMX */ | 
|---|
| 88 | #endif | 
|---|
| 89 |  | 
|---|
| 90 | #if !defined(_TIME_T_DECLARED) && !defined(_TIME_T) /* bird: EMX */ | 
|---|
| 91 | typedef __time_t        time_t; | 
|---|
| 92 | #define _TIME_T_DECLARED | 
|---|
| 93 | #define _TIME_T                         /* bird: EMX */ | 
|---|
| 94 | #endif | 
|---|
| 95 |  | 
|---|
| 96 | #if !defined(_SIZE_T_DECLARED) && !defined(_SIZE_T) /* bird: EMX */ | 
|---|
| 97 | typedef __size_t        size_t; | 
|---|
| 98 | #define _SIZE_T_DECLARED | 
|---|
| 99 | #define _SIZE_T                         /* bird: EMX */ | 
|---|
| 100 | #endif | 
|---|
| 101 |  | 
|---|
| 102 | #if __POSIX_VISIBLE >= 199309 | 
|---|
| 103 | /* | 
|---|
| 104 | * New in POSIX 1003.1b-1993. | 
|---|
| 105 | */ | 
|---|
| 106 | #if !defined(_CLOCKID_T_DECLARED) && !defined(_CLOCKID_T) /* bird: EMX */ | 
|---|
| 107 | typedef __clockid_t     clockid_t; | 
|---|
| 108 | #define _CLOCKID_T_DECLARED | 
|---|
| 109 | #define _CLOCKID_T                      /* bird: EMX */ | 
|---|
| 110 | #endif | 
|---|
| 111 |  | 
|---|
| 112 | #if !defined(_TIMER_T_DECLARED) && !defined(_TIMER_T) /* bird: EMX */ | 
|---|
| 113 | typedef __timer_t       timer_t; | 
|---|
| 114 | #define _TIMER_T_DECLARED | 
|---|
| 115 | #define _TIMER_T                        /* bird: EMX */ | 
|---|
| 116 | #endif | 
|---|
| 117 |  | 
|---|
| 118 | #include <sys/timespec.h> | 
|---|
| 119 | #endif /* __POSIX_VISIBLE >= 199309 */ | 
|---|
| 120 |  | 
|---|
| 121 | struct tm { | 
|---|
| 122 | int     tm_sec;         /* seconds after the minute [0-60] */ | 
|---|
| 123 | int     tm_min;         /* minutes after the hour [0-59] */ | 
|---|
| 124 | int     tm_hour;        /* hours since midnight [0-23] */ | 
|---|
| 125 | int     tm_mday;        /* day of the month [1-31] */ | 
|---|
| 126 | int     tm_mon;         /* months since January [0-11] */ | 
|---|
| 127 | int     tm_year;        /* years since 1900 */ | 
|---|
| 128 | int     tm_wday;        /* days since Sunday [0-6] */ | 
|---|
| 129 | int     tm_yday;        /* days since January 1 [0-365] */ | 
|---|
| 130 | int     tm_isdst;       /* Daylight Savings Time flag */ | 
|---|
| 131 | #if 0 /* bird: LIBC isn't implementing tm_gmtoff and tm_zone. */ | 
|---|
| 132 | long    tm_gmtoff;      /* offset from UTC in seconds */ | 
|---|
| 133 | char    *tm_zone;       /* timezone abbreviation */ | 
|---|
| 134 | #endif | 
|---|
| 135 | }; | 
|---|
| 136 |  | 
|---|
| 137 | #if __POSIX_VISIBLE | 
|---|
| 138 | extern char *tzname[]; | 
|---|
| 139 | #endif | 
|---|
| 140 |  | 
|---|
| 141 | __BEGIN_DECLS | 
|---|
| 142 | char *asctime(const struct tm *); | 
|---|
| 143 | clock_t clock(void); | 
|---|
| 144 | char *ctime(const time_t *); | 
|---|
| 145 | double difftime(time_t, time_t); | 
|---|
| 146 | struct tm *gmtime(const time_t *); | 
|---|
| 147 | struct tm *localtime(const time_t *); | 
|---|
| 148 | time_t mktime(struct tm *); | 
|---|
| 149 | size_t strftime(char * __restrict, size_t, const char * __restrict, | 
|---|
| 150 | const struct tm * __restrict); | 
|---|
| 151 | time_t time(time_t *); | 
|---|
| 152 |  | 
|---|
| 153 | #if __POSIX_VISIBLE | 
|---|
| 154 | void tzset(void); | 
|---|
| 155 | #endif | 
|---|
| 156 |  | 
|---|
| 157 | #if __POSIX_VISIBLE >= 199309 | 
|---|
| 158 | int clock_getres(clockid_t, struct timespec *); | 
|---|
| 159 | int clock_gettime(clockid_t, struct timespec *); | 
|---|
| 160 | int clock_settime(clockid_t, const struct timespec *); | 
|---|
| 161 | int nanosleep(const struct timespec *, struct timespec *); | 
|---|
| 162 | #endif /* __POSIX_VISIBLE >= 199309 */ | 
|---|
| 163 |  | 
|---|
| 164 | #if __POSIX_VISIBLE >= 199506 | 
|---|
| 165 | char *asctime_r(const struct tm *, char *); | 
|---|
| 166 | char *ctime_r(const time_t *, char *); | 
|---|
| 167 | struct tm *gmtime_r(const time_t *, struct tm *); | 
|---|
| 168 | struct tm *localtime_r(const time_t *, struct tm *); | 
|---|
| 169 | #endif | 
|---|
| 170 |  | 
|---|
| 171 | #if __XSI_VISIBLE | 
|---|
| 172 | char *strptime(const char * __restrict, const char * __restrict, | 
|---|
| 173 | struct tm * __restrict); | 
|---|
| 174 | #endif | 
|---|
| 175 |  | 
|---|
| 176 | #if __BSD_VISIBLE | 
|---|
| 177 | /* bird: clash with EMX (and OGBSI6) timezone is a variable. man page say this | 
|---|
| 178 | * is for Unix version 7 compatability though... | 
|---|
| 179 | char *timezone(int, int); */ | 
|---|
| 180 | void tzsetwall(void); | 
|---|
| 181 | time_t timelocal(struct tm * const); | 
|---|
| 182 | time_t timegm(struct tm * const); | 
|---|
| 183 | #endif /* __BSD_VISIBLE */ | 
|---|
| 184 |  | 
|---|
| 185 | /* bird: LIBC OGBSI6 compliance extras. */ | 
|---|
| 186 | #if __POSIX_VISIBLE | 
|---|
| 187 | extern int daylight; | 
|---|
| 188 | extern long timezone; | 
|---|
| 189 | #endif | 
|---|
| 190 |  | 
|---|
| 191 | /* bird: EMX/VAC/MSC legacy start. */ | 
|---|
| 192 | #if (!defined (__STRICT_ANSI__) && !defined (_POSIX_SOURCE)) || defined (_WITH_UNDERSCORE) || defined(__USE_EMX) | 
|---|
| 193 | extern int _daylight; | 
|---|
| 194 | extern long _timezone; | 
|---|
| 195 | extern char *_tzname[2]; | 
|---|
| 196 | char *_strptime (__const__ char *, __const__ char *, struct tm *); | 
|---|
| 197 | void _tzset (void); | 
|---|
| 198 | #endif | 
|---|
| 199 | /* bird: EMX stuff end. */ | 
|---|
| 200 |  | 
|---|
| 201 | __END_DECLS | 
|---|
| 202 |  | 
|---|
| 203 | #endif /* !_TIME_H_ */ | 
|---|
| 204 |  | 
|---|