From 7b353df28d2d1bc8497a801602c3128ee3cca2d2 Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Tue, 7 May 2013 21:34:57 +0100 Subject: [PATCH] cal: support --color[={auto,always,never}] MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Similar with dmesg commit 9bc2b51a06dc9cf6244106ac489ab08a91fd4360. CC: Pádraig Brady Reviewed-by: Karel Zak Signed-off-by: Sami Kerola --- misc-utils/Makemodule.am | 2 +- misc-utils/cal.c | 19 +++++++++++++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/misc-utils/Makemodule.am b/misc-utils/Makemodule.am index 0dc2161043..dc0686b73b 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 665dbcdb7b..9d9f357d0e 100644 --- a/misc-utils/cal.c +++ b/misc-utils/cal.c @@ -68,6 +68,7 @@ #include "c.h" #include "closestream.h" +#include "colors.h" #include "nls.h" #include "mbsalign.h" #include "strutils.h" @@ -255,6 +256,11 @@ main(int argc, char **argv) { time_t now; int ch, day = 0, month = 0, year = 0, yflag = 0; int num_months = NUM_MONTHS; + int colormode = UL_COLORMODE_AUTO; + + enum { + OPT_COLOR = CHAR_MAX + 1 + }; static const struct option longopts[] = { {"one", no_argument, NULL, '1'}, @@ -263,6 +269,7 @@ main(int argc, char **argv) { {"monday", no_argument, NULL, 'm'}, {"julian", no_argument, NULL, 'j'}, {"year", no_argument, NULL, 'y'}, + {"color", optional_argument, NULL, OPT_COLOR}, {"version", no_argument, NULL, 'V'}, {"help", no_argument, NULL, 'h'}, {NULL, 0, NULL, 0} @@ -340,6 +347,14 @@ main(int argc, char **argv) { case 'y': yflag = 1; break; + case OPT_COLOR: + if (optarg) { + char *p = *optarg == '=' ? optarg + 1 : optarg; + colormode = colormode_from_string(p); + if (colormode < 0) + errx(EXIT_FAILURE, _("unsupported color mode: '%s'"), p); + } + break; case 'V': printf(UTIL_LINUX_VERSION); return EXIT_SUCCESS; @@ -391,8 +406,8 @@ main(int argc, char **argv) { } headers_init(julian); - if (!isatty(STDOUT_FILENO)) - day = 0; /* don't highlight */ + if (!colors_init(colormode)) + day = 0; if (yflag) yearly(day, year, julian); -- 2.39.5