CALENDAR(1)

NAME
calendar - reminder service

SYNOPSIS
calendar [-ax] [-d MMDD[[YY]YY]] [-f file] [-l days] [-w days]

DESCRIPTION
The calendar utility processes text files and displays lines that match certain dates.

The following options are available:

-a  Process the “calendar” files of all users and mail the results to them. This requires super-user privileges.

-d MMDD[[YY]YY]
    Display lines for the given date. By default, the current date is used. The year, which may be given in either two or four digit format, is used only for purposes of determining wether the given date falls on a Friday in that year (see below). If the year is not specified, the current year is assumed.

-f file
    Display matching calendar files from the given filename. By default, the following filenames are checked for:
    ~/calendar
    ~/.calendar
    /etc/calendar
    and the first which is found is used. The filename may be absolute. If not absolute, it is taken relative to the current directory or the directory specified by the CALENDAR_DIR environment variable. Or, if the -a flag is given, a non-absolute filename is taken relative to each user's home directory in turn.

-l days
    Causes the program to “look ahead” a given number of days (default one) from the specified date and display their entries as well.

-w days
    Causes the program to add the specified number of days to the “look ahead” number if and only if the day specified is a Friday. The default value is two, which causes calendar to print entries through the weekend on Fridays.

-x  Causes calendar not to set the CPP_RESTRICTED environment variable. Passing this flag allows users the (somewhat obscure) option of including a named pipe via cpp(1)'s #include syntax, but opens up the possibility of calendar hanging indefinitely if users do so incorrectly. For this reason, the -x flag should never be used with calendar -a.

Lines should begin with a month and day. They may be entered in almost any format, either numeric or as character strings. A single asterisk (‘*’) matches every month, or every day if a month has been provided. This means that two asterisks (‘**’) matches every day of the year, and is thus useful for ToDo tasks. 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. By convention, dates followed by an asterisk are not fixed, i.e., change from year to year.

The “calendar” file is preprocessed by cpp(1), allowing the inclusion of shared files such as company holidays or meetings. If the shared file is not referenced by a full pathname, cpp(1) searches in the current (or home) directory first, and then in the directory /usr/share/calendar. Empty lines and lines protected by the C commenting syntax (/* ... */) are ignored.

Some possible calendar entries:

    #include	calendar.usholiday
    #include	calendar.birthday
    6/15		... June 15 (if ambiguous, will default to month/day).
    Jun. 15		... June 15.
    15 June		... June 15.
    Thursday	... Every Thursday.
    June		... Every June 1st.
    15 *		... 15th of every month.
    *15		... 15th of every month.
    June*		... Every day of June.
    **		... Every day

FILES
The following default calendar files are provided:

calendar.birthday
    Births and deaths of famous (and not-so-famous) people.
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.
calendar.computer
    Days of special significance to computer people.
calendar.history
    Everything else, mostly U.S. historical events.
calendar.holiday
    Other holidays, including the not-well-known, obscure, and really obscure.
calendar.judaic
    Jewish holidays. This calendar should be updated yearly by the local system administrator so that roving holidays are set correctly for the current year.
calendar.lotr
    Important dates in the Lord of the Rings series.
calendar.music
    Musical events, births, and deaths. Strongly oriented toward rock 'n' roll.
calendar.netbsd
    Important dates in the history of the NetBSD project. Mostly releases and port additions.
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.

SEE ALSO
at(1), cpp(1), cron(8)

COMPATIBILITY
The calendar 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 first on the line.

In NetBSD 3.0, the calendar command was modified to search the user's home directory instead of the current directory by default. Users desiring the historical behavior should set the CALENDAR_DIR environment variable to ~., or use the -f flag.

HISTORY
A calendar command appeared in AT&T UNIX.

BUGS
calendar doesn't handle events that move around from year to year, i.e., “the last Monday in April”.

The -a option ignores the user's CALENDAR_DIR environment variable.