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
next prev 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