Mercurial > bday
diff birthday.h @ 0:22b6e71de68e
initial commit; codebase from birthday; just the needed stuff; substituted getopt by own code
author | meillo@marmaro.de |
---|---|
date | Sun, 16 Dec 2007 22:26:48 +0100 |
parents | |
children | dc2f94280b01 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/birthday.h Sun Dec 16 22:26:48 2007 +0100 @@ -0,0 +1,104 @@ +/* + birthday + + Birthday/Anniversary display on login + + (c) 1996 AS Mortimer + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. You may also + distribute it under the Artistic License, as comes with Perl. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + You should also have recieved a copy of the Artistic license with + this program. + + $Id: birthday.h,v 1.6 1999/04/25 14:01:29 andy Exp $ +*/ + +/* ========== Configuration section */ + +#define DEFAULT_FILE ".birthdays" + +/* standard time to warn in advance, when no explicit w flag is given. */ +#define DEF_WARN 21 +/* maximum time to warn in advance when no M flag is given */ +#define MAX_WARN 500 /* ie, a year */ +/* minimum time to warn in advance when no m flag */ +#define MIN_WARN 0 + +/* ========== Required includes */ + +#include <stdio.h> + +/* ========== Global constants and data types */ + + +/* month lengths etc */ + +#define isleapyear(y) ((y)%4==0 && ((y)%100 != 0 || (y)%400 == 0)) +extern const unsigned MLENDAT[]; +#define mlen(m,y) (MLENDAT[(m)-1] != -1 ? MLENDAT[(m)-1] : (isleapyear((y)) ? 29 : 28)) +#define before(a,b) ((a).month < (b).month || ((a).month == (b).month && (a).day < (b).day)) +#define ydelta(a,b) ((int) (b).year - (a).year + before((a),(b))) +#define warnperiod(ev) ((ev).warn<iMinWarn?iMinWarn:((ev).warn>iMaxWarn?iMaxWarn:(ev).warn)) + +/* -------- modifier flags */ + +#define F_MTYPE 0x07 +#define F_TBIRTHDAY 1 +#define F_TANNIVERSARY 2 +#define F_TEVENT 3 +#define F_TMESSAGE 4 + +/* flags processed immediately on encountering */ +#define F_MIMMEDIATE 0x24 +#define F_WTIME_P 0x08 +#define F_FORDAYS 0x16 +#define F_TODATE 0x24 + +struct _ftable {char *txt; unsigned flag;}; + +extern const struct _ftable FTABLE[]; + +struct date { + unsigned day; + unsigned month; + unsigned year; +}; + +struct event { + char *text; + struct date date; + struct date enddate; + int warn; +}; + +typedef int (*prnfunc)(const char *); + +/* ========== */ + +struct event *readlist(char *fname); +void gettoday(void); +unsigned delta(struct date *); +unsigned ddiff(struct date *D1, struct date *D2); +void liststrings(struct event *evl, prnfunc outf); +char *tdelta(struct date *d); +char *ttime(int yr, int mn, int wk, int dy); + +/* ========== Global Variables */ + +extern struct date today; +extern int iDWarn; +extern int iMaxWarn; +extern int iMinWarn; +