1 2/* : : generated by proto : : */ 3/*********************************************************************** 4* * 5* This software is part of the ast package * 6* Copyright (c) 1985-2010 AT&T Intellectual Property * 7* and is licensed under the * 8* Common Public License, Version 1.0 * 9* by AT&T Intellectual Property * 10* * 11* A copy of the License is available at * 12* http://www.opensource.org/licenses/cpl1.0.txt * 13* (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) * 14* * 15* Information and Software Systems Research * 16* AT&T Research * 17* Florham Park NJ * 18* * 19* Glenn Fowler <gsf@research.att.com> * 20* David Korn <dgk@research.att.com> * 21* Phong Vo <kpv@research.att.com> * 22* * 23***********************************************************************/ 24 25/* 26 * Glenn Fowler 27 * AT&T Research 28 * 29 * time conversion support definitions 30 */ 31 32#ifndef _TM_H 33#if !defined(__PROTO__) 34#include <prototyped.h> 35#endif 36#if !defined(__LINKAGE__) 37#define __LINKAGE__ /* 2004-08-11 transition */ 38#endif 39 40#define _TM_H 41 42#define TM_VERSION 20070319L 43 44#include <ast.h> 45#include <times.h> 46 47#undef daylight 48 49#define tmset(z) tminit(z) 50#define tmisleapyear(y) (!((y)%4)&&(((y)%100)||!((((y)<1900)?((y)+1900):(y))%400))) 51 52#define TM_ADJUST (1<<0) /* local doesn't do leap secs */ 53#define TM_LEAP (1<<1) /* do leap seconds */ 54#define TM_UTC (1<<2) /* universal coordinated ref */ 55 56#define TM_PEDANTIC (1<<3) /* pedantic date parse */ 57#define TM_DATESTYLE (1<<4) /* date(1) style mmddHHMMccyy */ 58#define TM_SUBSECOND (1<<5) /* <something>%S => ...%S.%P */ 59 60#define TM_DST (-60) /* default minutes for DST */ 61#define TM_LOCALZONE (25 * 60) /* use local time zone offset */ 62#define TM_UTCZONE (26 * 60) /* UTC "time zone" */ 63#define TM_MAXLEAP 1 /* max leap secs per leap */ 64#define TM_WINDOW 69 /* century windowing guard year */ 65 66/* 67 * these indices must agree with tm_dform[] 68 */ 69 70#define TM_MONTH_ABBREV 0 71#define TM_MONTH 12 72#define TM_DAY_ABBREV 24 73#define TM_DAY 31 74#define TM_TIME 38 75#define TM_DATE 39 76#define TM_DEFAULT 40 77#define TM_MERIDIAN 41 78 79#define TM_UT 43 80#define TM_DT 47 81#define TM_SUFFIXES 51 82#define TM_PARTS 55 83#define TM_HOURS 62 84#define TM_DAYS 66 85#define TM_LAST 69 86#define TM_THIS 72 87#define TM_NEXT 75 88#define TM_EXACT 78 89#define TM_NOISE 81 90#define TM_ORDINAL 85 91#define TM_DIGITS 95 92#define TM_CTIME 105 93#define TM_DATE_1 106 94#define TM_INTERNATIONAL 107 95#define TM_RECENT 108 96#define TM_DISTANT 109 97#define TM_MERIDIAN_TIME 110 98#define TM_ERA 111 99#define TM_ERA_DATE 112 100#define TM_ERA_TIME 113 101#define TM_ERA_DEFAULT 114 102#define TM_ERA_YEAR 115 103#define TM_ORDINALS 116 104#define TM_FINAL 126 105#define TM_WORK 129 106 107#define TM_NFORM 132 108 109typedef struct /* leap second info */ 110{ 111 time_t time; /* the leap second event */ 112 int total; /* inclusive total since epoch */ 113} Tm_leap_t; 114 115typedef struct /* time zone info */ 116{ 117 char* type; /* type name */ 118 char* standard; /* standard time name */ 119 char* daylight; /* daylight or summertime name */ 120 short west; /* minutes west of GMT */ 121 short dst; /* add to tz.west for DST */ 122} Tm_zone_t; 123 124typedef struct /* tm library readonly data */ 125{ 126 char** format; /* default TM_* format strings */ 127 unsigned char* lex; /* format lex type classes */ 128 char* digit; /* output digits */ 129 short* days; /* days in month i */ 130 short* sum; /* days in months before i */ 131 Tm_leap_t* leap; /* leap second table */ 132 Tm_zone_t* zone; /* alternate timezone table */ 133} Tm_data_t; 134 135typedef struct /* tm library global info */ 136{ 137 char* deformat; /* TM_DEFAULT override */ 138 int flags; /* flags */ 139 char** format; /* current format strings */ 140 Tm_zone_t* date; /* timezone from last tmdate() */ 141 Tm_zone_t* local; /* local timezone */ 142 Tm_zone_t* zone; /* current timezone */ 143} Tm_info_t; 144 145typedef struct Tm_s 146{ 147 int tm_sec; 148 int tm_min; 149 int tm_hour; 150 int tm_mday; 151 int tm_mon; 152 int tm_year; 153 int tm_wday; 154 int tm_yday; 155 int tm_isdst; 156 uint32_t tm_nsec; 157 Tm_zone_t* tm_zone; 158} Tm_t; 159 160#if _BLD_ast && defined(__EXPORT__) 161#undef __MANGLE__ 162#define __MANGLE__ __LINKAGE__ __EXPORT__ 163#endif 164#if !_BLD_ast && defined(__IMPORT__) 165#undef __MANGLE__ 166#define __MANGLE__ __LINKAGE__ __IMPORT__ 167#endif 168 169extern __MANGLE__ Tm_data_t* _tm_datap_; 170extern __MANGLE__ Tm_info_t* _tm_infop_; 171 172#define tm_data (*_tm_datap_) 173#define tm_info (*_tm_infop_) 174 175#undef __MANGLE__ 176#define __MANGLE__ __LINKAGE__ 177 178#if _BLD_ast && defined(__EXPORT__) 179#undef __MANGLE__ 180#define __MANGLE__ __LINKAGE__ __EXPORT__ 181#endif 182 183extern __MANGLE__ time_t tmdate __PROTO__((const char*, char**, time_t*)); 184extern __MANGLE__ int tmequiv __PROTO__((Tm_t*)); 185extern __MANGLE__ Tm_t* tmfix __PROTO__((Tm_t*)); 186extern __MANGLE__ char* tmfmt __PROTO__((char*, size_t, const char*, time_t*)); 187extern __MANGLE__ char* tmform __PROTO__((char*, const char*, time_t*)); 188extern __MANGLE__ int tmgoff __PROTO__((const char*, char**, int)); 189extern __MANGLE__ void tminit __PROTO__((Tm_zone_t*)); 190extern __MANGLE__ time_t tmleap __PROTO__((time_t*)); 191extern __MANGLE__ int tmlex __PROTO__((const char*, char**, char**, int, char**, int)); 192extern __MANGLE__ char** tmlocale __PROTO__((void)); 193extern __MANGLE__ Tm_t* tmmake __PROTO__((time_t*)); 194extern __MANGLE__ char* tmpoff __PROTO__((char*, size_t, const char*, int, int)); 195extern __MANGLE__ time_t tmscan __PROTO__((const char*, char**, const char*, char**, time_t*, long)); 196extern __MANGLE__ int tmsleep __PROTO__((time_t, time_t)); 197extern __MANGLE__ time_t tmtime __PROTO__((Tm_t*, int)); 198extern __MANGLE__ Tm_zone_t* tmtype __PROTO__((const char*, char**)); 199extern __MANGLE__ int tmweek __PROTO__((Tm_t*, int, int, int)); 200extern __MANGLE__ int tmword __PROTO__((const char*, char**, const char*, char**, int)); 201extern __MANGLE__ Tm_zone_t* tmzone __PROTO__((const char*, char**, const char*, int*)); 202 203#undef __MANGLE__ 204#define __MANGLE__ __LINKAGE__ 205 206#endif 207