cal: fix preprocessor directive indendation

And code within the blocks selected by preprocessor to be live code.

Signed-off-by: Sami Kerola <kerolasa@iki.fi>
cal: convert function like definitions to functions

Reviewed-by: Thomas Bächler <thomas@archlinux.org>
Reviewed-by: Dave Reisner <dreisner@archlinux.org>
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
cal: clean up use of constants

The commit also adds few new symbolic names, such as DAYS_IN_WEEK.  While
these definitions may look a little too trivial to have I am sure they
ease understanding what is going on in code where they are used.

Reviewed-by: Thomas Bächler <thomas@archlinux.org>
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
tests: add calendar reformation check

Signed-off-by: Sami Kerola <kerolasa@iki.fi>
cal: simplify calendar reformat calculations

The only September 1752 offset calculation that is necessary is whether
Sun or Mon is the first day of the week.

Signed-off-by: Sami Kerola <kerolasa@iki.fi>
cal: remove unnecessary initializations

Signed-off-by: Sami Kerola <kerolasa@iki.fi>
cal: de-duplicate julian specific functions

The cost is a little bit more complex functions, while the benefit is
couple data flows fewer to mind about.

Signed-off-by: Sami Kerola <kerolasa@iki.fi>
cal: support --color[={auto,always,never}]

Similar with dmesg commit 9bc2b51a06dc9cf6244106ac489ab08a91fd4360.

CC: Pádraig Brady <P@draigBrady.com>
Reviewed-by: Karel Zak <kzak@redhat.com>
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
cal: add --color to usage()

And clean up the usage() function.

Signed-off-by: Sami Kerola <kerolasa@iki.fi>
docs: cal: add --color option description to manual page

Signed-off-by: Sami Kerola <kerolasa@iki.fi>
tests: add cal day color corner cases

Check that the first, andn last, possible dates and strange Sep 1752
dates are highlighted correctly.

Signed-off-by: Sami Kerola <kerolasa@iki.fi>
cal: stop trimming whitespaces

Remove trailing spaces from output it is trivial

cal | sed 's/ *$//'

but padding them back is difficult.

CC: Pádraig Brady <P@draigbrady.com>
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
cal: mark all functions static

Proposed-by: Dave Reisner <dreisner@archlinux.org>
Reference: http://marc.info/?l=util-linux-ng&m=136717012419551&w=2
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
cal: simplify day_in_week() calculation

The day_in_week() can be made easier to read, and should return invalid
weekday at the time of missing 11 days at September 1752.

Reported-by: Thomas Bächler <thomas@archlinux.org>
References: http://www.spinics.net/lists/util-linux-ng/msg07910.html
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
cal: use Claus Tøndering's day of the week algorithm

Reference: http://en.wikipedia.org/wiki/Determination_of_the_day_of_the_week#T.C3.B8ndering.27s_algorithm
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
cal: remove arbitrary limit of maxium year being 9999

The change limits year to be unsigned long. In case a year + month name
exceed a column width two lines are used for them.

Signed-off-by: Sami Kerola <kerolasa@iki.fi>
tests: check cal works when year is far in future

Signed-off-by: Sami Kerola <kerolasa@iki.fi>
docs: cal: stop telling year 9999 is upper limit

Signed-off-by: Sami Kerola <kerolasa@iki.fi>
getopt: add reference to /usr/share/docs to man page

Signed-off-by: Karel Zak <kzak@redhat.com>
textual: fix typo in error message and uniformize their use of period

Signed-off-by: Benno Schulenberg <bensberg@justemail.net>