From 0485b04e2515484a3ed47ccc348bc791a856017f Mon Sep 17 00:00:00 2001 From: Greg Reagle Date: Thu, 8 Jan 2015 14:21:37 -0500 Subject: [PATCH] If only the year operand is given, cal shall produce a calendar for all twelve months in the given calendar year. --- cal.1 | 8 +++++++- cal.c | 11 ++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/cal.1 b/cal.1 index 8619460..e58b9d4 100644 --- a/cal.1 +++ b/cal.1 @@ -28,7 +28,13 @@ of calendars side by side. Each row of calendars contains at most .IR columns number of calendars. The defaults are obtained using .IR localtime (3). -The Julian calendar is used through Sep 2, 1752, and the Gregorian calendar is used starting the next day with Sep 14, 1752. +If +.IR year +is given without +.IR month +print the whole year, unless overridden by options. The Julian calendar is used +through Sep 2, 1752, and the Gregorian calendar is used starting the next day +with Sep 14, 1752. .SH OPTIONS .TP .B \-1 diff --git a/cal.c b/cal.c index 8d6dda0..52c2f6d 100644 --- a/cal.c +++ b/cal.c @@ -146,7 +146,7 @@ main(int argc, char *argv[]) fday = 0; ncols = 3; - nmons = 1; + nmons = 0; ARGBEGIN { case '1': @@ -183,6 +183,15 @@ main(int argc, char *argv[]) usage(); } ARGEND; + if (nmons == 0) { + if (argc == 1) { + month = 1; + nmons = 12; + } else { + nmons = 1; + } + } + switch (argc) { case 2: month = estrtol(argv[0], 0); -- 1.9.1