From: "Pádraig Brady" <P@draigBrady.com>
To: Sami Kerola <kerolasa@iki.fi>
Cc: util-linux@vger.kernel.org
Subject: Re: [PATCH 09/16] cal: add --highligth option which uses argmatch
Date: Mon, 06 May 2013 01:11:31 +0100 [thread overview]
Message-ID: <5186F533.2060905@draigBrady.com> (raw)
In-Reply-To: <1367520701-14962-10-git-send-email-kerolasa@iki.fi>
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@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},
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.
next prev parent reply other threads:[~2013-05-06 0:11 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 ` [PATCH 09/16] cal: add --highligth option which uses argmatch Sami Kerola
2013-05-06 0:11 ` Pádraig Brady [this message]
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=5186F533.2060905@draigBrady.com \
--to=p@draigbrady.com \
--cc=kerolasa@iki.fi \
--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