diff --git a/cal.c b/cal.c index 740dc02..98e98a5 100644 --- a/cal.c +++ b/cal.c @@ -4,6 +4,7 @@ #include #include #include +#include #include "util.h" @@ -11,6 +12,8 @@ enum { JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC }; enum caltype { JULIAN, GREGORIAN }; enum { TRANS_YEAR = 1752, TRANS_MONTH = SEP, TRANS_DAY = 2 }; +static struct tm *ltime; + static int isleap(size_t year, enum caltype cal) { @@ -73,7 +76,10 @@ printgrid(size_t year, int month, int fday, int line) dom += 11; } for (; d < 7 && dom <= monthlength(year, month, cal); ++d, ++dom) { - printf("%2d ", dom); + if (ltime && month == ltime->tm_mon && dom == ltime->tm_mday) + printf("\x1b[7m%2d\x1b[0m ", dom); /* highlight today's date */ + else + printf("%2d ", dom); if (trans && dom == TRANS_DAY) dom += 11; } @@ -136,7 +142,6 @@ usage(void) int main(int argc, char *argv[]) { - struct tm *ltime; time_t now; size_t year, ncols, nmons; int fday, month; @@ -147,6 +152,9 @@ main(int argc, char *argv[]) month = ltime->tm_mon + 1; fday = 0; + if (!isatty(STDOUT_FILENO)) + ltime = NULL; /* don't highlight today's date */ + ncols = 3; nmons = 0;