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