3c1670525f
This prevents LANG= in an included file from affecting the interpretation of month and day names in the including file. Make the internal pre-processor accept white space between the "#" at the start of the line and the keyword for better compatibility with cpp. Add support for the cpp keywords #warning and #error. MFC after: 3 days
375 lines
12 KiB
Groff
375 lines
12 KiB
Groff
.\" Copyright (c) 1989, 1990, 1993
|
|
.\" The Regents of the University of California. All rights reserved.
|
|
.\"
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
.\" modification, are permitted provided that the following conditions
|
|
.\" are met:
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
.\" 3. Neither the name of the University nor the names of its contributors
|
|
.\" may be used to endorse or promote products derived from this software
|
|
.\" without specific prior written permission.
|
|
.\"
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
.\" SUCH DAMAGE.
|
|
.\"
|
|
.\" @(#)calendar.1 8.1 (Berkeley) 6/29/93
|
|
.\" $FreeBSD$
|
|
.\"
|
|
.Dd November 5, 2020
|
|
.Dt CALENDAR 1
|
|
.Os
|
|
.Sh NAME
|
|
.Nm calendar
|
|
.Nd reminder service
|
|
.Sh SYNOPSIS
|
|
.Nm
|
|
.Op Fl A Ar num
|
|
.Op Fl a
|
|
.Op Fl B Ar num
|
|
.Op Fl D Ar moon|sun
|
|
.Op Fl d
|
|
.Op Fl F Ar friday
|
|
.Op Fl f Ar calendarfile
|
|
.Op Fl l Ar longitude
|
|
.Oo
|
|
.Bk -words
|
|
.Fl t Ar dd Ns
|
|
.Sm off
|
|
.Op . Ar mm Op . Ar year
|
|
.Sm on
|
|
.Ek
|
|
.Oc
|
|
.Op Fl U Ar UTC-offset
|
|
.Op Fl W Ar num
|
|
.Sh DESCRIPTION
|
|
The
|
|
.Nm
|
|
utility checks the current directory for a file named
|
|
.Pa calendar
|
|
and displays lines that fall into the specified date range.
|
|
On the day before a weekend (normally Friday), events for the next
|
|
three days are displayed.
|
|
.Pp
|
|
The following options are available:
|
|
.Bl -tag -width Ds
|
|
.It Fl A Ar num
|
|
Print lines from today and the next
|
|
.Ar num
|
|
days (forward, future).
|
|
.It Fl a
|
|
Process the ``calendar'' files for users found in
|
|
.Pa /etc/passwd
|
|
and mail the results
|
|
to them.
|
|
This can result in multiple messages for specific files, since
|
|
.Pa /etc/passwd
|
|
does not require home directories to be unique.
|
|
In particular, by default
|
|
.Ar root ,
|
|
.Ar toor
|
|
and
|
|
.Ar daemon
|
|
share the same home directory.
|
|
If this directory contains calendar information,
|
|
.Nm
|
|
will process the file three times.
|
|
.Pp
|
|
This option requires super-user privileges.
|
|
.It Fl B Ar num
|
|
Print lines from today and the previous
|
|
.Ar num
|
|
days (backward, past).
|
|
.It Fl D Ar moon|sun
|
|
Print UTC offset, longitude and moon or sun information.
|
|
.It Fl d
|
|
Debug option: print current date information.
|
|
.It Fl F Ar friday
|
|
Specify which day of the week is ``Friday'' (the day before the
|
|
weekend begins).
|
|
Default is 5.
|
|
.It Fl f Pa calendarfile
|
|
Use
|
|
.Pa calendarfile
|
|
as the default calendar file.
|
|
.It Fl l Ar longitude
|
|
Perform lunar and solar calculations from this longitude.
|
|
If neither longitude nor UTC offset is specified, the calculations will
|
|
be based on the difference between UTC time and localtime.
|
|
If both are specified, UTC offset overrides longitude.
|
|
.It Xo Fl t
|
|
.Sm off
|
|
.Ar dd
|
|
.Op . Ar mm Op . Ar year
|
|
.Sm on
|
|
.Xc
|
|
For test purposes only: set date directly to argument values.
|
|
.It Fl U Ar UTC-offset
|
|
Perform lunar and solar calculations from this UTC offset.
|
|
If neither UTC offset nor longitude is specified, the calculations
|
|
will be based on the difference between UTC time and localtime.
|
|
If both are specified, UTC offset overrides longitude.
|
|
.It Fl W Ar num
|
|
Print lines from today and the next
|
|
.Ar num
|
|
days (forward, future).
|
|
Ignore weekends when calculating the number of days.
|
|
.El
|
|
.Sh FILE FORMAT
|
|
To handle calendars in your national code table you can specify
|
|
.Dq LANG=<locale_name>
|
|
in the calendar file as early as possible.
|
|
.Pp
|
|
To handle the local name of sequences, you can specify them as:
|
|
.Dq SEQUENCE=<first> <second> <third> <fourth> <fifth> <last>
|
|
in the calendar file as early as possible.
|
|
.Pp
|
|
The names of the following special days are recognized:
|
|
.Bl -tag -width 123456789012345 -compact
|
|
.It Easter
|
|
Catholic Easter.
|
|
.It Paskha
|
|
Orthodox Easter.
|
|
.It NewMoon
|
|
The lunar New Moon.
|
|
.It FullMoon
|
|
The lunar Full Moon.
|
|
.It MarEquinox
|
|
The solar equinox in March.
|
|
.It JunSolstice
|
|
The solar solstice in June.
|
|
.It SepEquinox
|
|
The solar equinox in September.
|
|
.It DecSolstice
|
|
The solar solstice in December.
|
|
.It ChineseNewYear
|
|
The first day of the Chinese year.
|
|
.El
|
|
These names may be reassigned to their local names via an assignment
|
|
like
|
|
.Dq Easter=Pasen
|
|
in the calendar file.
|
|
.Pp
|
|
Other lines should begin with a month and day.
|
|
They may be entered in almost any format, either numeric or as character
|
|
strings.
|
|
If the proper locale is set, national month and weekday
|
|
names can be used.
|
|
A single asterisk (``*'') matches every month.
|
|
A day without a month matches that day of every week.
|
|
A month without a day matches the first of that month.
|
|
Two numbers default to the month followed by the day.
|
|
Lines with leading tabs default to the last entered date, allowing
|
|
multiple line specifications for a single date.
|
|
.Pp
|
|
The names of the recognized special days may be followed by a
|
|
positive or negative integer, like:
|
|
.Dq Easter+3
|
|
or
|
|
.Dq Paskha-4 .
|
|
.Pp
|
|
Weekdays may be followed by ``-4'' ...\& ``+5'' (aliases for
|
|
last, first, second, third, fourth) for moving events like
|
|
``the last Monday in April''.
|
|
.Pp
|
|
By convention, dates followed by an asterisk are not fixed, i.e., change
|
|
from year to year.
|
|
.Pp
|
|
Day descriptions start after the first <tab> character in the line;
|
|
if the line does not contain a <tab> character, it is not displayed.
|
|
If the first character in the line is a <tab> character, it is treated as
|
|
a continuation of the previous line.
|
|
.Pp
|
|
The
|
|
.Nm
|
|
file is preprocessed by a limited subset of
|
|
.Xr cpp 1
|
|
internally, allowing the inclusion of shared files such as
|
|
lists of company holidays or meetings.
|
|
This limited subset consists of \fB#include\fR, \fB#define\fR,
|
|
\fB#undef\fR, \fB#ifdef\fR, \fB#ifndef\fR, \fB#else\fR, \fB#warning\fR,
|
|
and \fB#error\fR.
|
|
.Pp
|
|
Conditions can be nested and the consistency of opening and closing
|
|
instructions is checked.
|
|
Only the first word after #define is used as the name of the
|
|
condition variable being defined.
|
|
More than word following #ifdef, #ifndef, or #undef is considered a syntax
|
|
error, since names cannot include white-space.
|
|
Included files are parsed in a global scope with regard to the condition
|
|
variables being defined or tested therein.
|
|
All conditional blocks are implicitly closed at the end of a file,
|
|
and missing #endif instructions are assumed to be present on implied
|
|
succeeding lines.
|
|
.Pp
|
|
If the shared file is not referenced by a full pathname,
|
|
.Nm
|
|
searches in the current (or home) directory first, and then in the
|
|
directory
|
|
.Pa /usr/share/calendar .
|
|
Empty lines and text protected by the C commenting syntax
|
|
.Pq Li /* ... */
|
|
or
|
|
.Pq Li //
|
|
are ignored.
|
|
.Pp
|
|
Some possible calendar entries (<tab> characters highlighted by
|
|
\fB\et\fR sequence):
|
|
.Bd -unfilled -offset indent
|
|
LANG=C
|
|
Easter=Ostern
|
|
|
|
#include <calendar.usholiday>
|
|
#include <calendar.birthday>
|
|
|
|
6/15\fB\et\fRJune 15 (if ambiguous, will default to month/day).
|
|
Jun. 15\fB\et\fRJune 15.
|
|
15 June\fB\et\fRJune 15.
|
|
Thursday\fB\et\fREvery Thursday.
|
|
June\fB\et\fREvery June 1st.
|
|
15 *\fB\et\fR15th of every month.
|
|
2010/4/15\fB\et\fR15 April 2010
|
|
|
|
May Sun+2\fB\et\fRsecond Sunday in May (Muttertag)
|
|
04/SunLast\fB\et\fRlast Sunday in April,
|
|
\fB\et\fRsummer time in Europe
|
|
Easter\fB\et\fREaster
|
|
Ostern-2\fB\et\fRGood Friday (2 days before Easter)
|
|
Paskha\fB\et\fROrthodox Easter
|
|
|
|
.Ed
|
|
.Sh FILES
|
|
.Bl -tag -width calendar.christian -compact
|
|
.It Pa calendar
|
|
file in current directory.
|
|
.It Pa ~/.calendar
|
|
.Pa calendar
|
|
HOME directory.
|
|
A chdir is done into this directory if it exists.
|
|
.It Pa ~/.calendar/calendar
|
|
calendar file to use if no calendar file exists in the current directory.
|
|
.It Pa ~/.calendar/nomail
|
|
do not send mail if this file exists.
|
|
.It Pa /usr/share/calendar
|
|
system wide location of calendar files provided as part of the base system.
|
|
.It Pa /usr/local/share/calendar
|
|
system wide location for calendar files provided by a port or package.
|
|
.El
|
|
.Pp
|
|
The order of precedence in searches for a calendar file is:
|
|
current directory, ~/.calendar, /usr/local/share/calendar, /usr/share/calendar.
|
|
Files of similar names are ignored in lower precedence locations.
|
|
.Pp
|
|
The following default calendar files are provided by the
|
|
deskutils/calendar-data port.
|
|
.Pp
|
|
.Bl -tag -width calendar.southafrica -compact
|
|
.It Pa calendar.all
|
|
File which includes all the default files.
|
|
.It Pa calendar.australia
|
|
Calendar of events in Australia.
|
|
.It Pa calendar.birthday
|
|
Births and deaths of famous (and not-so-famous) people.
|
|
.It Pa calendar.christian
|
|
Christian holidays.
|
|
This calendar should be updated yearly by the local system administrator
|
|
so that roving holidays are set correctly for the current year.
|
|
.It Pa calendar.computer
|
|
Days of special significance to computer people.
|
|
.It Pa calendar.croatian
|
|
Calendar of events in Croatia.
|
|
.It Pa calendar.dutch
|
|
Calendar of events in the Netherlands.
|
|
.It Pa calendar.freebsd
|
|
Birthdays of
|
|
.Fx
|
|
committers.
|
|
.It Pa calendar.french
|
|
Calendar of events in France.
|
|
.It Pa calendar.german
|
|
Calendar of events in Germany.
|
|
.It Pa calendar.history
|
|
Everything else, mostly U.S.\& historical events.
|
|
.It Pa calendar.holiday
|
|
Other holidays, including the not-well-known, obscure, and
|
|
.Em really
|
|
obscure.
|
|
.It Pa calendar.judaic
|
|
Jewish holidays.
|
|
The entries for this calendar have been obtained from the
|
|
deskutils/hebcal port.
|
|
.It Pa calendar.music
|
|
Musical events, births, and deaths.
|
|
Strongly oriented toward rock 'n' roll.
|
|
.It Pa calendar.newzealand
|
|
Calendar of events in New Zealand.
|
|
.It Pa calendar.russian
|
|
Russian calendar.
|
|
.It Pa calendar.southafrica
|
|
Calendar of events in South Africa.
|
|
.It Pa calendar.usholiday
|
|
U.S.\& holidays.
|
|
This calendar should be updated yearly by the local system administrator
|
|
so that roving holidays are set correctly for the current year.
|
|
.It Pa calendar.world
|
|
Includes all calendar files except for national files.
|
|
.El
|
|
.Sh COMPATIBILITY
|
|
The
|
|
.Nm
|
|
program previously selected lines which had the correct date anywhere
|
|
in the line.
|
|
This is no longer true, the date is only recognized when it occurs
|
|
at the beginning of a line.
|
|
.Sh SEE ALSO
|
|
.Xr at 1 ,
|
|
.Xr mail 1 ,
|
|
.Xr cron 8
|
|
.Sh HISTORY
|
|
A
|
|
.Nm
|
|
command appeared in
|
|
.At v7 .
|
|
.Sh NOTES
|
|
Chinese New Year is calculated at 120 degrees east of Greenwich,
|
|
which roughly corresponds with the east coast of China.
|
|
For people west of China, this might result that the start of Chinese
|
|
New Year and the day of the related new moon might differ.
|
|
.Pp
|
|
The phases of the moon and the longitude of the sun are calculated
|
|
against the local position which corresponds with 30 degrees times
|
|
the time-difference towards Greenwich.
|
|
.Pp
|
|
The new and full moons are happening on the day indicated: They
|
|
might happen in the time period in the early night or in the late
|
|
evening.
|
|
It does not indicate that they are starting in the night on that date.
|
|
.Pp
|
|
Because of minor differences between the output of the formulas
|
|
used and other sources on the Internet, Druids and Werewolves should
|
|
double-check the start and end time of solar and lunar events.
|
|
.Sh BUGS
|
|
The
|
|
.Nm
|
|
does only recognise the cpp directives #include, #define, #ifdef,
|
|
#ifndef and #else.
|
|
It supports nested conditions, but does not perform any validation
|
|
on the correct use and nesting of conditions.
|
|
#endif without prior #ifdef or #define is ignored and #else outside
|
|
a conditional section skips input lines up to the next #endif.
|
|
.Pp
|
|
There is no possibility to properly specify the local position
|
|
needed for solar and lunar calculations.
|