[hackers] [sbase] If only the year operand is given, cal shall produce a calendar for all twelve months in the given calendar year. || Greg Reagle

From: <git_AT_suckless.org>
Date: Fri, 16 Jan 2015 17:26:51 +0100 (CET)

commit efac15726bcd43ed7cef96676a75672be6fb4a0e
Author: Greg Reagle <greg.reagle_AT_umbc.edu>
Date: Thu Jan 8 14:21:37 2015 -0500

    If only the year operand is given, cal shall produce a calendar for all twelve months in the given calendar year.

diff --git a/cal.1 b/cal.1
index 8619460..da9c102 100644
--- a/cal.1
+++ b/cal.1
_AT_@ -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
_AT_@ -146,7 +146,7 @@ main(int argc, char *argv[])
         fday = 0;
 
         ncols = 3;
- nmons = 1;
+ nmons = 0;
 
         ARGBEGIN {
         case '1':
_AT_@ -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);
Received on Fri Jan 16 2015 - 17:26:51 CET

This archive was generated by hypermail 2.3.0 : Fri Jan 16 2015 - 17:36:22 CET