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 November 4, 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 text protected by the C commenting syntax 222.Pq Li /* ... */ 223or 224.Pq Li // 225are ignored. 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