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