public inbox for util-linux@vger.kernel.org
 help / color / mirror / Atom feed
From: Sami Kerola <kerolasa@iki.fi>
To: util-linux@vger.kernel.org
Cc: kerolasa@iki.fi, "Pádraig Brady" <P@draigBrady.com>
Subject: [PATCH 09/16] cal: add --highligth option which uses argmatch
Date: Thu,  2 May 2013 19:51:34 +0100	[thread overview]
Message-ID: <1367520701-14962-10-git-send-email-kerolasa@iki.fi> (raw)
In-Reply-To: <1367520701-14962-1-git-send-email-kerolasa@iki.fi>

This switch will allow an user to choose when highlighting is outputed.
The default remains the same as it has been, e.g., highlighting is used
depending on whether stdout is a terminal or not.

CC: Pádraig Brady <P@draigBrady.com>
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
---
 misc-utils/Makemodule.am |  2 +-
 misc-utils/cal.c         | 40 ++++++++++++++++++++++++++++++++++++++--
 2 files changed, 39 insertions(+), 3 deletions(-)

diff --git a/misc-utils/Makemodule.am b/misc-utils/Makemodule.am
index a615047..3f95458 100644
--- a/misc-utils/Makemodule.am
+++ b/misc-utils/Makemodule.am
@@ -10,7 +10,7 @@ if !HAVE_LANGINFO
 cal_SOURCES += lib/langinfo.c
 endif
 
-cal_LDADD = $(LDADD)
+cal_LDADD = $(LDADD) libcommon.la
 
 if HAVE_TINFO
 cal_LDADD += -ltinfo @NCURSES_LIBS@
diff --git a/misc-utils/cal.c b/misc-utils/cal.c
index 665dbcd..cf50c57 100644
--- a/misc-utils/cal.c
+++ b/misc-utils/cal.c
@@ -66,6 +66,7 @@
 #include <unistd.h>
 #include <errno.h>
 
+#include "argmatch.h"
 #include "c.h"
 #include "closestream.h"
 #include "nls.h"
@@ -256,6 +257,24 @@ main(int argc, char **argv) {
 	int ch, day = 0, month = 0, year = 0, yflag = 0;
 	int num_months = NUM_MONTHS;
 
+	enum Highlight_type {
+		HIGHLIGHT_UNUSED,
+		HIGHLIGHT_NEVER,
+		HIGHLIGHT_AUTO,
+		HIGHLIGHT_ALWAYS
+	};
+	int highlight = HIGHLIGHT_AUTO;
+	static char const *const highlight_type_string[] = {
+		"never", "auto", "always", NULL
+	};
+	static enum Highlight_type const highlight_type[] = {
+		HIGHLIGHT_NEVER, HIGHLIGHT_AUTO, HIGHLIGHT_ALWAYS
+	};
+
+	enum {
+		OPT_HIGHLIGHT = CHAR_MAX + 1
+	};
+
 	static const struct option longopts[] = {
 		{"one", no_argument, NULL, '1'},
 		{"three", no_argument, NULL, '3'},
@@ -263,6 +282,7 @@ main(int argc, char **argv) {
 		{"monday", no_argument, NULL, 'm'},
 		{"julian", no_argument, NULL, 'j'},
 		{"year", no_argument, NULL, 'y'},
+		{"highlight", required_argument, NULL, OPT_HIGHLIGHT},
 		{"version", no_argument, NULL, 'V'},
 		{"help", no_argument, NULL, 'h'},
 		{NULL, 0, NULL, 0}
@@ -340,6 +360,9 @@ main(int argc, char **argv) {
 		case 'y':
 			yflag = 1;
 			break;
+		case OPT_HIGHLIGHT:
+			highlight = XARGMATCH("--highlight", optarg, highlight_type_string, highlight_type);
+			break;
 		case 'V':
 			printf(UTIL_LINUX_VERSION);
 			return EXIT_SUCCESS;
@@ -391,8 +414,21 @@ main(int argc, char **argv) {
 	}
 	headers_init(julian);
 
-	if (!isatty(STDOUT_FILENO))
-		day = 0; /* don't highlight */
+	switch (highlight) {
+	case HIGHLIGHT_NEVER:
+		day = 0;
+		break;
+	case HIGHLIGHT_AUTO:
+		if (!isatty(STDOUT_FILENO))
+			day = 0;	/* don't highlight */
+		break;
+	case HIGHLIGHT_ALWAYS:
+		if (day == 0)
+			day = local_time->tm_yday + 1;;
+		break;
+	default:
+		abort();
+	}
 
 	if (yflag)
 		yearly(day, year, julian);
-- 
1.8.2.2


  parent reply	other threads:[~2013-05-02 18:52 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-05-02 18:51 [PATCH 00/16]: [pull] cal: second review round Sami Kerola
2013-05-02 18:51 ` [PATCH 01/16] cal: fix preprocessor directive indendation Sami Kerola
2013-05-02 18:51 ` [PATCH 02/16] cal: convert function like definitions to functions Sami Kerola
2013-05-02 18:51 ` [PATCH 03/16] cal: clean up use of constants Sami Kerola
2013-05-02 18:51 ` [PATCH 04/16] tests: add calendar reformation check Sami Kerola
2013-05-02 18:51 ` [PATCH 05/16] cal: simplify calendar reformat calculations Sami Kerola
2013-05-02 18:51 ` [PATCH 06/16] cal: remove unnecessary initializations Sami Kerola
2013-05-02 18:51 ` [PATCH 07/16] cal: de-duplicate julian specific functions Sami Kerola
2013-05-02 18:51 ` [PATCH 08/16] lib: copy argmatch from gnulib Sami Kerola
2013-05-06 17:16   ` Karel Zak
2013-05-07 21:14     ` Sami Kerola
2013-05-02 18:51 ` Sami Kerola [this message]
2013-05-06  0:11   ` [PATCH 09/16] cal: add --highligth option which uses argmatch Pádraig Brady
2013-05-06 10:44     ` Sami Kerola
2013-05-06 17:19   ` Karel Zak
2013-05-02 18:51 ` [PATCH 10/16] cal: add --highlight to usage() Sami Kerola
2013-05-02 18:51 ` [PATCH 11/16] docs: cal: add --highlight option description Sami Kerola
2013-05-02 18:51 ` [PATCH 12/16] tests: add cal day highlight corner cases Sami Kerola
2013-05-02 18:51 ` [PATCH 13/16] cal: stop trimming whitespaces Sami Kerola
2013-05-06  0:12   ` Pádraig Brady
2013-05-14 10:45   ` Karel Zak
2013-05-21 20:34     ` Sami Kerola
2013-05-02 18:51 ` [PATCH 14/16] cal: move global variables to local scope Sami Kerola
2013-05-14 10:49   ` Karel Zak
2013-05-02 18:51 ` [PATCH 15/16] cal: mark all functions static Sami Kerola
2013-05-02 18:51 ` [PATCH 16/16] cal: simplify day_in_week() Sami Kerola
2013-05-03 20:19   ` Sami Kerola

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1367520701-14962-10-git-send-email-kerolasa@iki.fi \
    --to=kerolasa@iki.fi \
    --cc=P@draigBrady.com \
    --cc=util-linux@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox