mirror of
https://git.hardenedbsd.org/hardenedbsd/HardenedBSD.git
synced 2024-11-27 03:11:52 +01:00
0a82cd4f10
Include files that don't begin with a '/' are documented to search the
current directory, then /usr/share/calendar. This hasn't been accurate
for years, since e061f95e7b
("Rework calendar(1) parser") rewrote a
lot of this.
Stash off the cwd before we do any chdir()ing around and use that to
honor the same order we'll follow for the -f flag. This may result in
an extra lookup that will fail for the initial calendar file, but I
don't think it's worth the complexity to avoid it.
While we're here, fix the documentation to just reference the order
described in FILES so that we only need to keep it up to date in one
place.
Reviewed by: bapt
Sponsored by: Klara, Inc.
Differential Revision: https://reviews.freebsd.org/D42278
373 lines
12 KiB
Groff
373 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.
|
|
.\"
|
|
.Dd December 17, 2023
|
|
.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 same order of precedence described in
|
|
.Sx FILES .
|
|
.Pp
|
|
Blank lines and text protected by the C comment syntax
|
|
.Ql /* ... */
|
|
or
|
|
.Ql //
|
|
are ignored, but the latter only at the beginning of a line or after
|
|
white space to allow for URLs in calendar entries.
|
|
.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.
|