Annotation of src/usr.bin/calendar/calendar.h, Revision 1.10
1.10 ! mickey 1: /* $OpenBSD: calendar.h,v 1.9 2003/06/03 02:56:06 millert Exp $ */
1.1 millert 2:
3: /*
4: * Copyright (c) 1989, 1993, 1994
5: * The Regents of the University of California. All rights reserved.
6: *
7: * Redistribution and use in source and binary forms, with or without
8: * modification, are permitted provided that the following conditions
9: * are met:
10: * 1. Redistributions of source code must retain the above copyright
11: * notice, this list of conditions and the following disclaimer.
12: * 2. Redistributions in binary form must reproduce the above copyright
13: * notice, this list of conditions and the following disclaimer in the
14: * documentation and/or other materials provided with the distribution.
1.9 millert 15: * 3. Neither the name of the University nor the names of its contributors
1.1 millert 16: * may be used to endorse or promote products derived from this software
17: * without specific prior written permission.
18: *
19: * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
20: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22: * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
23: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
25: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29: * SUCH DAMAGE.
30: */
31:
32:
33: extern struct passwd *pw;
34: extern int doall;
1.6 mickey 35: extern int bodun_always;
1.4 pjanzen 36: extern time_t f_time;
1.1 millert 37: extern struct iovec header[];
38: extern struct tm *tp;
39: extern char *calendarFile;
1.5 pjanzen 40: extern char *calendarHome;
1.1 millert 41: extern char *optarg;
42:
1.3 pjanzen 43: struct fixs {
44: char *name;
45: int len;
46: };
47:
48: struct event {
49: time_t when;
50: char print_date[31];
1.4 pjanzen 51: char **desc;
52: char *ldesc;
1.3 pjanzen 53: struct event *next;
54: };
55:
56: struct match {
1.4 pjanzen 57: time_t when;
58: char print_date[30];
1.7 mickey 59: int bodun;
1.4 pjanzen 60: int var;
61: struct match *next;
62: };
63:
64: struct specialev {
65: char *name;
66: int nlen;
67: char *uname;
68: int ulen;
1.8 millert 69: int (*getev)(int);
1.3 pjanzen 70: };
71:
1.8 millert 72: void cal(void);
73: void closecal(FILE *);
74: int getday(char *);
75: int getdayvar(char *);
76: int getfield(char *, char **, int *);
77: int getmonth(char *);
78: int easter(int);
79: int paskha(int);
80: void insert(struct event **, struct event *);
81: struct match *isnow(char *, int);
82: FILE *opencal(void);
83: void settime(time_t *);
84: time_t Mktime(char *);
85: void usage(void);
86: int foy(int);
87: void variable_weekday(int *, int, int);
88: void setnnames(void);
1.1 millert 89:
90: /* some flags */
91: #define F_ISMONTH 0x01 /* month (Januar ...) */
92: #define F_ISDAY 0x02 /* day of week (Sun, Mon, ...) */
1.4 pjanzen 93: /*#define F_ISDAYVAR 0x04 variables day of week, like SundayLast */
94: #define F_SPECIAL 0x08 /* Events that occur once a year but don't track
95: * calendar time--e.g. Easter or easter depending
96: * days */
1.1 millert 97:
1.2 deraadt 98: extern int f_dayAfter; /* days after current date */
99: extern int f_dayBefore; /* days before current date */
1.4 pjanzen 100:
101: /* Special events; see also setnnames() in day.c */
102: /* '=' is not a valid character in a special event name */
103: #define EASTER "easter"
104: #define EASTERNAMELEN (sizeof(EASTER) - 1)
105: #define PASKHA "paskha"
106: #define PASKHALEN (sizeof(PASKHA) - 1)
1.10 ! mickey 107:
! 108: /* calendars */
! 109: extern enum calendars { GREGORIAN = 0, JULIAN, LUNAR } calendar;
! 110: extern u_long julian;
1.4 pjanzen 111:
112: #define NUMEV 2 /* Total number of such special events */
113: extern struct specialev spev[NUMEV];
1.5 pjanzen 114:
115: /* For calendar -a, specify a maximum time (in seconds) to spend parsing
116: * each user's calendar files. This prevents them from hanging calendar
117: * (e.g. by using named pipes)
118: */
119: #define USERTIMEOUT 20