14887Schin 24887Schin /* : : generated by proto : : */ 34887Schin /*********************************************************************** 44887Schin * * 54887Schin * This software is part of the ast package * 6*12068SRoger.Faulkner@Oracle.COM * Copyright (c) 1985-2010 AT&T Intellectual Property * 74887Schin * and is licensed under the * 84887Schin * Common Public License, Version 1.0 * 98462SApril.Chin@Sun.COM * by AT&T Intellectual Property * 104887Schin * * 114887Schin * A copy of the License is available at * 124887Schin * http://www.opensource.org/licenses/cpl1.0.txt * 134887Schin * (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) * 144887Schin * * 154887Schin * Information and Software Systems Research * 164887Schin * AT&T Research * 174887Schin * Florham Park NJ * 184887Schin * * 194887Schin * Glenn Fowler <gsf@research.att.com> * 204887Schin * David Korn <dgk@research.att.com> * 214887Schin * Phong Vo <kpv@research.att.com> * 224887Schin * * 234887Schin ***********************************************************************/ 244887Schin 254887Schin /* 264887Schin * Glenn Fowler 274887Schin * AT&T Research 284887Schin * 294887Schin * time conversion support definitions 304887Schin */ 314887Schin 324887Schin #ifndef _TM_H 334887Schin #if !defined(__PROTO__) 344887Schin #include <prototyped.h> 354887Schin #endif 364887Schin #if !defined(__LINKAGE__) 374887Schin #define __LINKAGE__ /* 2004-08-11 transition */ 384887Schin #endif 394887Schin 404887Schin #define _TM_H 414887Schin 424887Schin #define TM_VERSION 20070319L 434887Schin 444887Schin #include <ast.h> 454887Schin #include <times.h> 464887Schin 474887Schin #undef daylight 484887Schin 494887Schin #define tmset(z) tminit(z) 504887Schin #define tmisleapyear(y) (!((y)%4)&&(((y)%100)||!((((y)<1900)?((y)+1900):(y))%400))) 514887Schin 524887Schin #define TM_ADJUST (1<<0) /* local doesn't do leap secs */ 534887Schin #define TM_LEAP (1<<1) /* do leap seconds */ 544887Schin #define TM_UTC (1<<2) /* universal coordinated ref */ 554887Schin 564887Schin #define TM_PEDANTIC (1<<3) /* pedantic date parse */ 574887Schin #define TM_DATESTYLE (1<<4) /* date(1) style mmddHHMMccyy */ 584887Schin #define TM_SUBSECOND (1<<5) /* <something>%S => ...%S.%P */ 594887Schin 604887Schin #define TM_DST (-60) /* default minutes for DST */ 614887Schin #define TM_LOCALZONE (25 * 60) /* use local time zone offset */ 624887Schin #define TM_UTCZONE (26 * 60) /* UTC "time zone" */ 634887Schin #define TM_MAXLEAP 1 /* max leap secs per leap */ 644887Schin #define TM_WINDOW 69 /* century windowing guard year */ 654887Schin 664887Schin /* 674887Schin * these indices must agree with tm_dform[] 684887Schin */ 694887Schin 704887Schin #define TM_MONTH_ABBREV 0 714887Schin #define TM_MONTH 12 724887Schin #define TM_DAY_ABBREV 24 734887Schin #define TM_DAY 31 744887Schin #define TM_TIME 38 754887Schin #define TM_DATE 39 764887Schin #define TM_DEFAULT 40 774887Schin #define TM_MERIDIAN 41 784887Schin 794887Schin #define TM_UT 43 804887Schin #define TM_DT 47 814887Schin #define TM_SUFFIXES 51 824887Schin #define TM_PARTS 55 834887Schin #define TM_HOURS 62 844887Schin #define TM_DAYS 66 854887Schin #define TM_LAST 69 864887Schin #define TM_THIS 72 874887Schin #define TM_NEXT 75 884887Schin #define TM_EXACT 78 894887Schin #define TM_NOISE 81 904887Schin #define TM_ORDINAL 85 914887Schin #define TM_DIGITS 95 924887Schin #define TM_CTIME 105 934887Schin #define TM_DATE_1 106 944887Schin #define TM_INTERNATIONAL 107 954887Schin #define TM_RECENT 108 964887Schin #define TM_DISTANT 109 974887Schin #define TM_MERIDIAN_TIME 110 984887Schin #define TM_ERA 111 994887Schin #define TM_ERA_DATE 112 1004887Schin #define TM_ERA_TIME 113 1014887Schin #define TM_ERA_DEFAULT 114 1024887Schin #define TM_ERA_YEAR 115 1034887Schin #define TM_ORDINALS 116 1044887Schin #define TM_FINAL 126 10510898Sroland.mainz@nrubsig.org #define TM_WORK 129 1064887Schin 10710898Sroland.mainz@nrubsig.org #define TM_NFORM 132 1084887Schin 1094887Schin typedef struct /* leap second info */ 1104887Schin { 1114887Schin time_t time; /* the leap second event */ 1124887Schin int total; /* inclusive total since epoch */ 1134887Schin } Tm_leap_t; 1144887Schin 1154887Schin typedef struct /* time zone info */ 1164887Schin { 1174887Schin char* type; /* type name */ 1184887Schin char* standard; /* standard time name */ 1194887Schin char* daylight; /* daylight or summertime name */ 1204887Schin short west; /* minutes west of GMT */ 1214887Schin short dst; /* add to tz.west for DST */ 1224887Schin } Tm_zone_t; 1234887Schin 1244887Schin typedef struct /* tm library readonly data */ 1254887Schin { 1264887Schin char** format; /* default TM_* format strings */ 12710898Sroland.mainz@nrubsig.org unsigned char* lex; /* format lex type classes */ 1284887Schin char* digit; /* output digits */ 1294887Schin short* days; /* days in month i */ 1304887Schin short* sum; /* days in months before i */ 1314887Schin Tm_leap_t* leap; /* leap second table */ 1324887Schin Tm_zone_t* zone; /* alternate timezone table */ 1334887Schin } Tm_data_t; 1344887Schin 1354887Schin typedef struct /* tm library global info */ 1364887Schin { 1374887Schin char* deformat; /* TM_DEFAULT override */ 1384887Schin int flags; /* flags */ 1394887Schin char** format; /* current format strings */ 1404887Schin Tm_zone_t* date; /* timezone from last tmdate() */ 1414887Schin Tm_zone_t* local; /* local timezone */ 1424887Schin Tm_zone_t* zone; /* current timezone */ 1434887Schin } Tm_info_t; 1444887Schin 1454887Schin typedef struct Tm_s 1464887Schin { 1474887Schin int tm_sec; 1484887Schin int tm_min; 1494887Schin int tm_hour; 1504887Schin int tm_mday; 1514887Schin int tm_mon; 1524887Schin int tm_year; 1534887Schin int tm_wday; 1544887Schin int tm_yday; 1554887Schin int tm_isdst; 1564887Schin uint32_t tm_nsec; 1574887Schin Tm_zone_t* tm_zone; 1584887Schin } Tm_t; 1594887Schin 1604887Schin #if _BLD_ast && defined(__EXPORT__) 1614887Schin #undef __MANGLE__ 1624887Schin #define __MANGLE__ __LINKAGE__ __EXPORT__ 1634887Schin #endif 1644887Schin #if !_BLD_ast && defined(__IMPORT__) 1654887Schin #undef __MANGLE__ 1664887Schin #define __MANGLE__ __LINKAGE__ __IMPORT__ 1674887Schin #endif 1684887Schin 1694887Schin extern __MANGLE__ Tm_data_t* _tm_datap_; 1704887Schin extern __MANGLE__ Tm_info_t* _tm_infop_; 1714887Schin 1724887Schin #define tm_data (*_tm_datap_) 1734887Schin #define tm_info (*_tm_infop_) 1744887Schin 1754887Schin #undef __MANGLE__ 1764887Schin #define __MANGLE__ __LINKAGE__ 1774887Schin 1784887Schin #if _BLD_ast && defined(__EXPORT__) 1794887Schin #undef __MANGLE__ 1804887Schin #define __MANGLE__ __LINKAGE__ __EXPORT__ 1814887Schin #endif 1824887Schin 1834887Schin extern __MANGLE__ time_t tmdate __PROTO__((const char*, char**, time_t*)); 1844887Schin extern __MANGLE__ int tmequiv __PROTO__((Tm_t*)); 1854887Schin extern __MANGLE__ Tm_t* tmfix __PROTO__((Tm_t*)); 1864887Schin extern __MANGLE__ char* tmfmt __PROTO__((char*, size_t, const char*, time_t*)); 1874887Schin extern __MANGLE__ char* tmform __PROTO__((char*, const char*, time_t*)); 1884887Schin extern __MANGLE__ int tmgoff __PROTO__((const char*, char**, int)); 1894887Schin extern __MANGLE__ void tminit __PROTO__((Tm_zone_t*)); 1904887Schin extern __MANGLE__ time_t tmleap __PROTO__((time_t*)); 1914887Schin extern __MANGLE__ int tmlex __PROTO__((const char*, char**, char**, int, char**, int)); 1924887Schin extern __MANGLE__ char** tmlocale __PROTO__((void)); 1934887Schin extern __MANGLE__ Tm_t* tmmake __PROTO__((time_t*)); 1944887Schin extern __MANGLE__ char* tmpoff __PROTO__((char*, size_t, const char*, int, int)); 1954887Schin extern __MANGLE__ time_t tmscan __PROTO__((const char*, char**, const char*, char**, time_t*, long)); 1964887Schin extern __MANGLE__ int tmsleep __PROTO__((time_t, time_t)); 1974887Schin extern __MANGLE__ time_t tmtime __PROTO__((Tm_t*, int)); 1984887Schin extern __MANGLE__ Tm_zone_t* tmtype __PROTO__((const char*, char**)); 1994887Schin extern __MANGLE__ int tmweek __PROTO__((Tm_t*, int, int, int)); 2004887Schin extern __MANGLE__ int tmword __PROTO__((const char*, char**, const char*, char**, int)); 2014887Schin extern __MANGLE__ Tm_zone_t* tmzone __PROTO__((const char*, char**, const char*, int*)); 2024887Schin 2034887Schin #undef __MANGLE__ 2044887Schin #define __MANGLE__ __LINKAGE__ 2054887Schin 2064887Schin #endif 207