xref: /freebsd/usr.bin/calendar/calendar.1 (revision 8ce21ae6ba8422fbf328d0171eb0fba940c29bfe)
1.\" Copyright (c) 1989, 1990, 1993
2.\"     The Regents of the University of California.  All rights reserved.
3.\"
4.\" Redistribution and use in source and binary forms, with or without
5.\" modification, are permitted provided that the following conditions
6.\" are met:
7.\" 1. Redistributions of source code must retain the above copyright
8.\"    notice, this list of conditions and the following disclaimer.
9.\" 2. Redistributions in binary form must reproduce the above copyright
10.\"    notice, this list of conditions and the following disclaimer in the
11.\"    documentation and/or other materials provided with the distribution.
12.\" 3. Neither the name of the University nor the names of its contributors
13.\"    may be used to endorse or promote products derived from this software
14.\"    without specific prior written permission.
15.\"
16.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
17.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
20.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26.\" SUCH DAMAGE.
27.\"
28.\"     @(#)calendar.1  8.1 (Berkeley) 6/29/93
29.\" $FreeBSD$
30.\"
31.Dd October 28, 2020
32.Dt CALENDAR 1
33.Os
34.Sh NAME
35.Nm calendar
36.Nd reminder service
37.Sh SYNOPSIS
38.Nm
39.Op Fl A Ar num
40.Op Fl a
41.Op Fl B Ar num
42.Op Fl D Ar moon|sun
43.Op Fl d
44.Op Fl F Ar friday
45.Op Fl f Ar calendarfile
46.Op Fl l Ar longitude
47.Oo
48.Bk -words
49.Fl t Ar dd Ns
50.Sm off
51.Op . Ar mm Op . Ar year
52.Sm on
53.Ek
54.Oc
55.Op Fl U Ar UTC-offset
56.Op Fl W Ar num
57.Sh DESCRIPTION
58The
59.Nm
60utility checks the current directory for a file named
61.Pa calendar
62and displays lines that fall into the specified date range.
63On the day before a weekend (normally Friday), events for the next
64three days are displayed.
65.Pp
66The following options are available:
67.Bl -tag -width Ds
68.It Fl A Ar num
69Print lines from today and the next
70.Ar num
71days (forward, future).
72.It Fl a
73Process the ``calendar'' files for users found in
74.Pa /etc/passwd
75and mail the results
76to them.
77This can result in multiple messages for specific files, since
78.Pa /etc/passwd
79does not require home directories to be unique.
80In particular, by default
81.Ar root ,
82.Ar toor
83and
84.Ar daemon
85share the same home directory.
86If this directory contains calendar information,
87.Nm
88will process the file three times.
89.Pp
90This option requires super-user privileges.
91.It Fl B Ar num
92Print lines from today and the previous
93.Ar num
94days (backward, past).
95.It Fl D Ar moon|sun
96Print UTC offset, longitude and moon or sun information.
97.It Fl d
98Debug option: print current date information.
99.It Fl F Ar friday
100Specify which day of the week is ``Friday'' (the day before the
101weekend begins).
102Default is 5.
103.It Fl f Pa calendarfile
104Use
105.Pa calendarfile
106as the default calendar file.
107.It Fl l Ar longitude
108Perform lunar and solar calculations from this longitude.
109If neither longitude nor UTC offset is specified, the calculations will
110be based on the difference between UTC time and localtime.
111If both are specified, UTC offset overrides longitude.
112.It Xo Fl t
113.Sm off
114.Ar dd
115.Op . Ar mm Op . Ar year
116.Sm on
117.Xc
118For test purposes only: set date directly to argument values.
119.It Fl U Ar UTC-offset
120Perform lunar and solar calculations from this UTC offset.
121If neither UTC offset nor longitude is specified, the calculations
122will be based on the difference between UTC time and localtime.
123If both are specified, UTC offset overrides longitude.
124.It Fl W Ar num
125Print lines from today and the next
126.Ar num
127days (forward, future).
128Ignore weekends when calculating the number of days.
129.El
130.Sh FILE FORMAT
131To handle calendars in your national code table you can specify
132.Dq LANG=<locale_name>
133in the calendar file as early as possible.
134.Pp
135To handle the local name of sequences, you can specify them as:
136.Dq SEQUENCE=<first> <second> <third> <fourth> <fifth> <last>
137in the calendar file as early as possible.
138.Pp
139The names of the following special days are recognized:
140.Bl -tag -width 123456789012345 -compact
141.It Easter
142Catholic Easter.
143.It Paskha
144Orthodox Easter.
145.It NewMoon
146The lunar New Moon.
147.It FullMoon
148The lunar Full Moon.
149.It MarEquinox
150The solar equinox in March.
151.It JunSolstice
152The solar solstice in June.
153.It SepEquinox
154The solar equinox in September.
155.It DecSolstice
156The solar solstice in December.
157.It ChineseNewYear
158The first day of the Chinese year.
159.El
160These names may be reassigned to their local names via an assignment
161like
162.Dq Easter=Pasen
163in the calendar file.
164.Pp
165Other lines should begin with a month and day.
166They may be entered in almost any format, either numeric or as character
167strings.
168If the proper locale is set, national month and weekday
169names can be used.
170A single asterisk (``*'') matches every month.
171A day without a month matches that day of every week.
172A month without a day matches the first of that month.
173Two numbers default to the month followed by the day.
174Lines with leading tabs default to the last entered date, allowing
175multiple line specifications for a single date.
176.Pp
177The names of the recognized special days may be followed by a
178positive or negative integer, like:
179.Dq Easter+3
180or
181.Dq Paskha-4 .
182.Pp
183Weekdays may be followed by ``-4'' ...\& ``+5'' (aliases for
184last, first, second, third, fourth) for moving events like
185``the last Monday in April''.
186.Pp
187By convention, dates followed by an asterisk are not fixed, i.e., change
188from year to year.
189.Pp
190Day descriptions start after the first <tab> character in the line;
191if the line does not contain a <tab> character, it is not displayed.
192If the first character in the line is a <tab> character, it is treated as
193a continuation of the previous line.
194.Pp
195The
196.Nm
197file is preprocessed by a limited subset of
198.Xr cpp 1
199internally, allowing the inclusion of shared files such as
200lists of company holidays or meetings.
201This limited subset consists of \fB#include\fR, \fB#define\fR,
202\fB#undef\fR, \fB#ifdef\fR, \fB#ifndef\fR, and \fB#else\fR.
203.Pp
204Conditions can be nested and the consistency of opening and closing
205instructions is checked.
206Only the first word after #define is used as the name of the
207condition variable being defined.
208More than word following #ifdef, #ifndef, or #undef is a ayntax
209error, since names cannot include white-space.
210Included files are parsed in a global scope with regard to the condition
211variables being defined or tested therein.
212All conditional blocks are implicitly closed at the end of a file,
213and missing #endif instructions are assumed to be present on implied
214succeeding lines.
215.Pp
216If the shared file is not referenced by a full pathname,
217.Nm
218searches in the current (or home) directory first, and then in the
219directory
220.Pa /usr/share/calendar .
221Empty lines and lines protected by the C commenting syntax
222.Pq Li /* ... */
223are ignored.
224.Pp
225Some possible calendar entries (<tab> characters highlighted by
226\fB\et\fR sequence)
227.Bd -unfilled -offset indent
228LANG=C
229Easter=Ostern
230
231#include <calendar.usholiday>
232#include <calendar.birthday>
233
2346/15\fB\et\fRJune 15 (if ambiguous, will default to month/day).
235Jun. 15\fB\et\fRJune 15.
23615 June\fB\et\fRJune 15.
237Thursday\fB\et\fREvery Thursday.
238June\fB\et\fREvery June 1st.
23915 *\fB\et\fR15th of every month.
2402010/4/15\fB\et\fR15 April 2010
241
242May Sun+2\fB\et\fRsecond Sunday in May (Muttertag)
24304/SunLast\fB\et\fRlast Sunday in April,
244\fB\et\fRsummer time in Europe
245Easter\fB\et\fREaster
246Ostern-2\fB\et\fRGood Friday (2 days before Easter)
247Paskha\fB\et\fROrthodox Easter
248
249.Ed
250.Sh FILES
251.Bl -tag -width calendar.christian -compact
252.It Pa calendar
253file in current directory.
254.It Pa ~/.calendar
255.Pa calendar
256HOME directory.
257A chdir is done into this directory if it exists.
258.It Pa ~/.calendar/calendar
259calendar file to use if no calendar file exists in the current directory.
260.It Pa ~/.calendar/nomail
261do not send mail if this file exists.
262.It Pa /usr/share/calendar
263system wide location of calendar files provided as part of the base system.
264.It Pa /usr/local/share/calendar
265system wide location for calendar files provided by a port or package.
266.El
267.Pp
268The order of precedence in searches for a calendar file is:
269current directory, ~/.calendar, /usr/local/share/calendar, /usr/share/calendar.
270Files of similar names are ignored in lower precedence locations.
271.Pp
272The following default calendar files are provided by the
273deskutils/calendar-data port.
274.Pp
275.Bl -tag -width calendar.southafrica -compact
276.It Pa calendar.all
277File which includes all the default files.
278.It Pa calendar.australia
279Calendar of events in Australia.
280.It Pa calendar.birthday
281Births and deaths of famous (and not-so-famous) people.
282.It Pa calendar.christian
283Christian holidays.
284This calendar should be updated yearly by the local system administrator
285so that roving holidays are set correctly for the current year.
286.It Pa calendar.computer
287Days of special significance to computer people.
288.It Pa calendar.croatian
289Calendar of events in Croatia.
290.It Pa calendar.dutch
291Calendar of events in the Netherlands.
292.It Pa calendar.freebsd
293Birthdays of
294.Fx
295committers.
296.It Pa calendar.french
297Calendar of events in France.
298.It Pa calendar.german
299Calendar of events in Germany.
300.It Pa calendar.history
301Everything else, mostly U.S.\& historical events.
302.It Pa calendar.holiday
303Other holidays, including the not-well-known, obscure, and
304.Em really
305obscure.
306.It Pa calendar.judaic
307Jewish holidays.
308The entries for this calendar have been obtained from the
309deskutils/hebcal port.
310.It Pa calendar.music
311Musical events, births, and deaths.
312Strongly oriented toward rock 'n' roll.
313.It Pa calendar.newzealand
314Calendar of events in New Zealand.
315.It Pa calendar.russian
316Russian calendar.
317.It Pa calendar.southafrica
318Calendar of events in South Africa.
319.It Pa calendar.usholiday
320U.S.\& holidays.
321This calendar should be updated yearly by the local system administrator
322so that roving holidays are set correctly for the current year.
323.It Pa calendar.world
324Includes all calendar files except for national files.
325.El
326.Sh COMPATIBILITY
327The
328.Nm
329program previously selected lines which had the correct date anywhere
330in the line.
331This is no longer true, the date is only recognized when it occurs
332at the beginning of a line.
333.Sh SEE ALSO
334.Xr at 1 ,
335.Xr mail 1 ,
336.Xr cron 8
337.Sh HISTORY
338A
339.Nm
340command appeared in
341.At v7 .
342.Sh NOTES
343Chinese New Year is calculated at 120 degrees east of Greenwich,
344which roughly corresponds with the east coast of China.
345For people west of China, this might result that the start of Chinese
346New Year and the day of the related new moon might differ.
347.Pp
348The phases of the moon and the longitude of the sun are calculated
349against the local position which corresponds with 30 degrees times
350the time-difference towards Greenwich.
351.Pp
352The new and full moons are happening on the day indicated: They
353might happen in the time period in the early night or in the late
354evening.
355It does not indicate that they are starting in the night on that date.
356.Pp
357Because of minor differences between the output of the formulas
358used and other sources on the Internet, Druids and Werewolves should
359double-check the start and end time of solar and lunar events.
360.Sh BUGS
361The
362.Nm
363does only recognise the cpp directives #include, #define, #ifdef,
364#ifndef and #else.
365It supports nested conditions, but does not perform any validation
366on the correct use and nesting of conditions.
367#endif without prior #ifdef or #define is ignored and #else outside
368a conditional section skips input lines up to the next #endif.
369.Pp
370There is no possibility to properly specify the local position
371needed for solar and lunar calculations.
372