83ec8806f339634f5ea552efa3732c310b8f3659
[mmh] / h / tws.h
1
2 /*
3  * tws.h
4  *
5  * $Id$
6  */
7
8 /* DST vs. GMT nonsense */
9 #define DSTXXX
10
11 struct tws {
12     int tw_sec;         /* seconds after the minute - [0, 61] */
13     int tw_min;         /* minutes after the hour - [0, 59]   */
14     int tw_hour;        /* hour since midnight - [0, 23]      */
15     int tw_mday;        /* day of the month - [1, 31]         */
16     int tw_mon;         /* months since January - [0, 11]     */
17     int tw_year;        /* 4 digit year (ie, 1997)            */
18     int tw_wday;        /* days since Sunday - [0, 6]         */
19     int tw_yday;        /* days since January 1 - [0, 365]    */
20     int tw_zone;
21     time_t tw_clock;    /* if != 0, corresponding calendar value */
22     int tw_flags;
23 };
24
25 #define TW_NULL  0x0000
26
27 #define TW_SDAY  0x0003 /* how day-of-week was determined */
28 #define TW_SNIL  0x0000 /*   not given                    */
29 #define TW_SEXP  0x0001 /*   explicitly given             */
30 #define TW_SIMP  0x0002 /*   implicitly given             */
31
32 #define TW_SZONE 0x0004 /* how timezone was determined    */
33 #define TW_SZNIL 0x0000 /*   not given                    */
34 #define TW_SZEXP 0x0004 /*   explicitly given             */
35
36 #define TW_DST   0x0010 /* daylight savings time          */
37 #define TW_ZONE  0x0020 /* use numeric timezones only     */
38
39 #define TW_SUCC  0x0040 /* whether parsing was successful */
40 #define TW_YES   0x0040 /*   yes, found                   */
41 #define TW_NO    0x0000 /*   no, not found                */
42
43 #define dtwszone(tw) dtimezone (tw->tw_zone, tw->tw_flags)
44
45 extern char *tw_dotw[];
46 extern char *tw_ldotw[];
47 extern char *tw_moty[];
48
49 /*
50  * prototypes
51  */
52 char *dtime (time_t *, int);
53 char *dtimenow (int);
54 char *dctime (struct tws *);
55 struct tws *dlocaltimenow (void);
56 struct tws *dlocaltime (time_t *);
57 struct tws *dgmtime (time_t *);
58 char *dasctime (struct tws *, int);
59 char *dtimezone (int, int);
60 void twscopy (struct tws *, struct tws *);
61 int twsort (struct tws *, struct tws *);
62 time_t dmktime (struct tws *);
63 void set_dotw (struct tws *);
64
65 struct tws *dparsetime (char *);
66