On 05/02/2013 07:51 PM, Sami Kerola wrote: > 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@xxxxxxxxxxxxxx> > Signed-off-by: Sami Kerola <kerolasa@xxxxxx> > --- > 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}, I'd have it as an optional arg, defaulting to auto. > {"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;; s/;;/;/ shellism :) > + break; > + default: > + abort(); > + } > > if (yflag) > yearly(day, year, julian); > s/highligth/highlight/ in the subject line Also I'd s/--highlight/--color/ to align with dmesg and other utils. Only highlighting is done at present, but that could be set up to use color in the user's environment. Also in future other parts of the output could be colored etc. BTW, dmesg could get the same support for specifying "always" and "never". thanks! Pádraig. -- To unsubscribe from this list: send the line "unsubscribe util-linux" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html