rev |
line source |
meillo@0
|
1 /*
|
meillo@0
|
2 birthday
|
meillo@0
|
3
|
meillo@0
|
4 Birthday/Anniversary display on login
|
meillo@0
|
5
|
meillo@0
|
6 (c) 1996 AS Mortimer
|
meillo@0
|
7
|
meillo@0
|
8 This program is free software; you can redistribute it and/or
|
meillo@0
|
9 modify it under the terms of the GNU General Public License as
|
meillo@0
|
10 published by the Free Software Foundation; either version 2 of the
|
meillo@0
|
11 License, or (at your option) any later version. You may also
|
meillo@0
|
12 distribute it under the Artistic License, as comes with Perl.
|
meillo@0
|
13
|
meillo@0
|
14 This program is distributed in the hope that it will be useful,
|
meillo@0
|
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
|
meillo@0
|
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
meillo@0
|
17
|
meillo@0
|
18 You should have received a copy of the GNU General Public License
|
meillo@0
|
19 along with this program; if not, write to the Free Software
|
meillo@0
|
20 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
meillo@0
|
21
|
meillo@0
|
22 You should also have recieved a copy of the Artistic license with
|
meillo@0
|
23 this program.
|
meillo@0
|
24
|
meillo@0
|
25 $Id: birthday.h,v 1.6 1999/04/25 14:01:29 andy Exp $
|
meillo@0
|
26 */
|
meillo@0
|
27
|
meillo@5
|
28 #include <stdio.h>
|
meillo@5
|
29
|
meillo@0
|
30 /* ========== Configuration section */
|
meillo@0
|
31
|
meillo@5
|
32 /* standard time to warn in advance, when no explicit w flag is given. */
|
meillo@5
|
33 #define DEF_WARN 14
|
meillo@0
|
34
|
meillo@0
|
35 /* ========== Global constants and data types */
|
meillo@0
|
36
|
meillo@0
|
37
|
meillo@0
|
38 /* month lengths etc */
|
meillo@0
|
39
|
meillo@0
|
40 #define isleapyear(y) ((y)%4==0 && ((y)%100 != 0 || (y)%400 == 0))
|
meillo@0
|
41 extern const unsigned MLENDAT[];
|
meillo@0
|
42 #define mlen(m,y) (MLENDAT[(m)-1] != -1 ? MLENDAT[(m)-1] : (isleapyear((y)) ? 29 : 28))
|
meillo@0
|
43 #define before(a,b) ((a).month < (b).month || ((a).month == (b).month && (a).day < (b).day))
|
meillo@0
|
44 #define ydelta(a,b) ((int) (b).year - (a).year + before((a),(b)))
|
meillo@0
|
45
|
meillo@0
|
46 /* -------- modifier flags */
|
meillo@0
|
47
|
meillo@0
|
48 #define F_MTYPE 0x07
|
meillo@0
|
49 #define F_TBIRTHDAY 1
|
meillo@0
|
50 #define F_TANNIVERSARY 2
|
meillo@0
|
51 #define F_TEVENT 3
|
meillo@0
|
52
|
meillo@0
|
53 /* flags processed immediately on encountering */
|
meillo@0
|
54 #define F_MIMMEDIATE 0x24
|
meillo@0
|
55 #define F_WTIME_P 0x08
|
meillo@0
|
56 #define F_FORDAYS 0x16
|
meillo@0
|
57 #define F_TODATE 0x24
|
meillo@0
|
58
|
meillo@0
|
59 struct _ftable {char *txt; unsigned flag;};
|
meillo@0
|
60
|
meillo@0
|
61 extern const struct _ftable FTABLE[];
|
meillo@0
|
62
|
meillo@0
|
63 struct date {
|
meillo@0
|
64 unsigned day;
|
meillo@0
|
65 unsigned month;
|
meillo@0
|
66 unsigned year;
|
meillo@0
|
67 };
|
meillo@0
|
68
|
meillo@0
|
69 struct event {
|
meillo@0
|
70 char *text;
|
meillo@0
|
71 struct date date;
|
meillo@0
|
72 struct date enddate;
|
meillo@0
|
73 int warn;
|
meillo@0
|
74 };
|
meillo@0
|
75
|
meillo@0
|
76 typedef int (*prnfunc)(const char *);
|
meillo@0
|
77
|
meillo@0
|
78 /* ========== */
|
meillo@0
|
79
|
meillo@5
|
80 struct event* readlist(void);
|
meillo@0
|
81 void gettoday(void);
|
meillo@0
|
82 unsigned delta(struct date *);
|
meillo@0
|
83 unsigned ddiff(struct date *D1, struct date *D2);
|
meillo@6
|
84 void liststrings(struct event* evl, prnfunc outf);
|
meillo@0
|
85 char *tdelta(struct date *d);
|
meillo@0
|
86 char *ttime(int yr, int mn, int wk, int dy);
|
meillo@0
|
87
|
meillo@0
|
88 /* ========== Global Variables */
|
meillo@0
|
89
|
meillo@0
|
90 extern struct date today;
|
meillo@0
|
91 extern int iDWarn;
|
meillo@0
|
92
|