|
|
1.1 ! root 1: /* ! 2: * Glenn Fowler ! 3: * AT&T Bell Laboratories ! 4: * ! 5: * time conversion support definitions ! 6: */ ! 7: ! 8: #ifndef TM_DEFAULT ! 9: ! 10: #define tm_data _tm_data_ ! 11: #define tm_info _tm_info_ ! 12: ! 13: #include <time.h> ! 14: #ifndef LS_USER ! 15: #include <sys/types.h> ! 16: #endif ! 17: ! 18: #define tmset() do{if(!tm_info.local.standard)tminit();}while(0) ! 19: ! 20: #ifndef VOID ! 21: #define VOID char ! 22: #endif ! 23: ! 24: #define TM_ADJUST (1<<0) /* local doesn't do leap secs */ ! 25: #define TM_LEAP (1<<1) /* do leap seconds */ ! 26: #define TM_UTC (1<<2) /* universal coordinated ref */ ! 27: ! 28: #define TM_DST (-60) /* default minutes for DST */ ! 29: #define TM_LOCALZONE (25 * 60) /* use local time zone offset */ ! 30: #define TM_MAXLEAP 1 /* max leap secs per leap */ ! 31: ! 32: /* ! 33: * these indices must agree with tm_dform[] ! 34: */ ! 35: ! 36: #define TM_MONTH_3 0 ! 37: #define TM_MONTH 12 ! 38: #define TM_DAY_3 24 ! 39: #define TM_DAY 31 ! 40: #define TM_TIME 38 ! 41: #define TM_DATE 39 ! 42: #define TM_DEFAULT 40 ! 43: #define TM_MERIDIAN 41 ! 44: ! 45: #define TM_UT 43 ! 46: #define TM_DT 47 ! 47: #define TM_SUFFIXES 51 ! 48: #define TM_PARTS 55 ! 49: #define TM_HOURS 62 ! 50: #define TM_DAYS 66 ! 51: #define TM_LAST 69 ! 52: #define TM_THIS 72 ! 53: #define TM_NEXT 75 ! 54: #define TM_EXACT 78 ! 55: #define TM_NOISE 81 ! 56: ! 57: #define TM_NFORM 85 ! 58: ! 59: struct tl /* leap second info */ ! 60: { ! 61: time_t time; /* the leap second event */ ! 62: int total; /* inclusive total since epoch */ ! 63: }; ! 64: ! 65: struct tz /* time zone info */ ! 66: { ! 67: char* type; /* type name */ ! 68: char* standard; /* standard time name */ ! 69: char* daylight; /* daylight or summertime name */ ! 70: short west; /* minutes west of GMT */ ! 71: short dst; /* add to tz.west for DST */ ! 72: }; ! 73: ! 74: struct tmdata /* tm library readonly data */ ! 75: { ! 76: char** format; /* default TM_* format strings */ ! 77: char* lex; /* format lex type classes */ ! 78: char* digit; /* output digits */ ! 79: short* days; /* days in month i */ ! 80: short* sum; /* days in months before i */ ! 81: struct tl* leap; /* leap second table */ ! 82: struct tz* zone; /* alternate timezone table */ ! 83: }; ! 84: ! 85: struct tminfo /* tm library global info */ ! 86: { ! 87: char* deformat; /* TM_DEFAULT override */ ! 88: int flags; /* flags */ ! 89: char** format; /* current format strings */ ! 90: struct tz local; /* local timezone */ ! 91: }; ! 92: ! 93: #if __cplusplus ! 94: extern "C" { ! 95: #endif ! 96: ! 97: extern struct tmdata tm_data; ! 98: extern struct tminfo tm_info; ! 99: ! 100: #if __cplusplus ! 101: } ! 102: #endif ! 103: ! 104: #if __STDC__ || __cplusplus || c_plusplus ! 105: #if __cplusplus ! 106: extern "C" { ! 107: #endif ! 108: extern time_t time(time_t*); ! 109: ! 110: extern time_t tmdate(const char*, char**, time_t*); ! 111: extern struct tm* tmfix(struct tm*); ! 112: extern char* tmform(char*, const char*, time_t*); ! 113: extern int tmgoff(const char*, char**, int); ! 114: extern void tminit(void); ! 115: extern time_t tmleap(time_t*); ! 116: extern int tmlex(const char*, char**, char**, int, char**, int); ! 117: extern struct tm* tmmake(time_t*); ! 118: extern char* tmpoff(char*, const char*, int, int); ! 119: extern time_t tmtime(struct tm*, int); ! 120: extern char* tmtype(const char*, char**); ! 121: extern int tmword(const char*, char**, const char*, char**, int); ! 122: extern int tmzone(const char*, char**, const char*, int*); ! 123: #if __cplusplus ! 124: } ! 125: #endif ! 126: #else ! 127: extern time_t time(); ! 128: ! 129: extern time_t tmdate(); ! 130: extern struct tm* tmfix(); ! 131: extern char* tmform(); ! 132: extern int tmgoff(); ! 133: extern void tminit(); ! 134: extern time_t tmleap(); ! 135: extern int tmlex(); ! 136: extern struct tm* tmmake(); ! 137: extern char* tmpoff(); ! 138: extern time_t tmtime(); ! 139: extern char* tmtype(); ! 140: extern int tmword(); ! 141: extern int tmzone(); ! 142: #endif ! 143: ! 144: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.