cal: add support for highlighting an arbitrary date
This is done by calling cal with the extra day parameter like: cal 14 9 1752 Note the tests were updated to use the new syntax. Note also that this patch changes the -y option to always print a full year, even if a month or the -[13] options are specified. This matches the cal operation from bsdmainutils on debian and also allows one to print a full year while highlighting a particular date. Signed-off-by: Pádraig Brady <P@draigBrady.com>
This commit is contained in:
parent
cf9fc1dfe5
commit
d7a92b8994
2
TODO
2
TODO
|
@ -29,8 +29,6 @@
|
||||||
From: LaMont Jones <lamont@mmjgroup.com>
|
From: LaMont Jones <lamont@mmjgroup.com>
|
||||||
Subject: Re: [PATCH] losetup: support password hashing and specifying the key length
|
Subject: Re: [PATCH] losetup: support password hashing and specifying the key length
|
||||||
|
|
||||||
* add an option to the cal command to control highlight date
|
|
||||||
|
|
||||||
* convet po/ files to UTF-8
|
* convet po/ files to UTF-8
|
||||||
|
|
||||||
* use rpmatch() for all Y/N questions
|
* use rpmatch() for all Y/N questions
|
||||||
|
|
|
@ -75,9 +75,3 @@ install-exec-hook::
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
noinst_PROGRAMS = cal_test
|
|
||||||
cal_test_SOURCES = cal.c
|
|
||||||
cal_test_CPPFLAGS = -DTEST_CAL $(AM_CPPFLAGS)
|
|
||||||
cal_test_LDADD = $(cal_LDADD)
|
|
||||||
|
|
||||||
|
|
|
@ -43,7 +43,7 @@
|
||||||
.Sh SYNOPSIS
|
.Sh SYNOPSIS
|
||||||
.Nm cal
|
.Nm cal
|
||||||
.Op Fl smjy13
|
.Op Fl smjy13
|
||||||
.Op [ Ar month ] Ar year
|
.Op [ [ Ar day] Ar month ] Ar year
|
||||||
.Sh DESCRIPTION
|
.Sh DESCRIPTION
|
||||||
.Nm Cal
|
.Nm Cal
|
||||||
displays a simple calendar.
|
displays a simple calendar.
|
||||||
|
@ -76,6 +76,8 @@ will
|
||||||
.Em not
|
.Em not
|
||||||
display a calendar for 1989.
|
display a calendar for 1989.
|
||||||
Two parameters denote the month (1 - 12) and year.
|
Two parameters denote the month (1 - 12) and year.
|
||||||
|
Three parameters denote the day (1-31), month and year,
|
||||||
|
and the day will be highlighted if the calendar is displayed on a terminal.
|
||||||
If no parameters are specified, the current month's calendar is
|
If no parameters are specified, the current month's calendar is
|
||||||
displayed.
|
displayed.
|
||||||
.Pp
|
.Pp
|
||||||
|
|
|
@ -341,6 +341,10 @@ main(int argc, char **argv) {
|
||||||
|
|
||||||
day = month = year = 0;
|
day = month = year = 0;
|
||||||
switch(argc) {
|
switch(argc) {
|
||||||
|
case 3:
|
||||||
|
if ((day = atoi(*argv++)) < 1 || month > 31)
|
||||||
|
errx(1, _("illegal day value: use 1-%d"), 31);
|
||||||
|
/* FALLTHROUGH */
|
||||||
case 2:
|
case 2:
|
||||||
if ((month = atoi(*argv++)) < 1 || month > 12)
|
if ((month = atoi(*argv++)) < 1 || month > 12)
|
||||||
errx(1, _("illegal month value: use 1-12"));
|
errx(1, _("illegal month value: use 1-12"));
|
||||||
|
@ -348,38 +352,38 @@ main(int argc, char **argv) {
|
||||||
case 1:
|
case 1:
|
||||||
if ((year = atoi(*argv)) < 1 || year > 9999)
|
if ((year = atoi(*argv)) < 1 || year > 9999)
|
||||||
errx(1, _("illegal year value: use 1-9999"));
|
errx(1, _("illegal year value: use 1-9999"));
|
||||||
|
if (day) {
|
||||||
|
int dm = days_in_month[leap_year(year)][month];
|
||||||
|
if (day > dm)
|
||||||
|
errx(1, _("illegal day value: use 1-%d"), dm);
|
||||||
|
day = day_in_year(day, month, year);
|
||||||
|
}
|
||||||
|
if (!month)
|
||||||
|
yflag=1;
|
||||||
break;
|
break;
|
||||||
case 0:
|
case 0:
|
||||||
{
|
time(&now);
|
||||||
#ifdef TEST_CAL
|
|
||||||
char *e = getenv("TEST_TIME");
|
|
||||||
|
|
||||||
if (e && isdigit((unsigned char) *e))
|
|
||||||
now = atol(e);
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
time(&now);
|
|
||||||
}
|
|
||||||
local_time = localtime(&now);
|
local_time = localtime(&now);
|
||||||
if (isatty(1))
|
day = local_time->tm_yday + 1;
|
||||||
day = local_time->tm_yday + 1;
|
|
||||||
year = local_time->tm_year + 1900;
|
year = local_time->tm_year + 1900;
|
||||||
if (!yflag)
|
month = local_time->tm_mon + 1;
|
||||||
month = local_time->tm_mon + 1;
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
usage();
|
usage();
|
||||||
}
|
}
|
||||||
headers_init();
|
headers_init();
|
||||||
|
|
||||||
if (month && num_months == 1)
|
if (!isatty(1))
|
||||||
monthly(day, month, year);
|
day = 0; /* don't highlight */
|
||||||
else if (month && num_months == 3)
|
|
||||||
monthly3(day, month, year);
|
if (yflag && julian)
|
||||||
else if (julian)
|
|
||||||
j_yearly(day, year);
|
j_yearly(day, year);
|
||||||
else
|
else if (yflag)
|
||||||
yearly(day, year);
|
yearly(day, year);
|
||||||
|
else if (num_months == 1)
|
||||||
|
monthly(day, month, year);
|
||||||
|
else if (num_months == 3)
|
||||||
|
monthly3(day, month, year);
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -633,6 +637,9 @@ day_array(int day, int month, int year, int *days) {
|
||||||
if (month == 9 && year == 1752) {
|
if (month == 9 && year == 1752) {
|
||||||
d_sep1752 = julian ? j_sep1752 : sep1752;
|
d_sep1752 = julian ? j_sep1752 : sep1752;
|
||||||
memcpy(days, d_sep1752 + week1stday, MAXDAYS * sizeof(int));
|
memcpy(days, d_sep1752 + week1stday, MAXDAYS * sizeof(int));
|
||||||
|
for (dm=0; dm<MAXDAYS; dm++)
|
||||||
|
if (j_sep1752[dm] == day)
|
||||||
|
days[dm] |= TODAY_FLAG;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
memcpy(days, empty, MAXDAYS * sizeof(int));
|
memcpy(days, empty, MAXDAYS * sizeof(int));
|
||||||
|
@ -806,6 +813,6 @@ void
|
||||||
usage()
|
usage()
|
||||||
{
|
{
|
||||||
|
|
||||||
(void)fprintf(stderr, _("usage: cal [-13smjyV] [[month] year]\n"));
|
(void)fprintf(stderr, _("usage: cal [-13smjyV] [[[day] month] year]\n"));
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,7 +32,6 @@ TS_CMD_COL=${TS_CMD_COL:-"$TOPDIR/text-utils/col"}
|
||||||
TS_CMD_NAMEI=${TS_CMD_NAMEI-"$TOPDIR/misc-utils/namei"}
|
TS_CMD_NAMEI=${TS_CMD_NAMEI-"$TOPDIR/misc-utils/namei"}
|
||||||
TS_CMD_LOOK=${TS_CMD_LOOK-"$TOPDIR/misc-utils/look"}
|
TS_CMD_LOOK=${TS_CMD_LOOK-"$TOPDIR/misc-utils/look"}
|
||||||
TS_CMD_CAL=${TS_CMD_CAL-"$TOPDIR/misc-utils/cal"}
|
TS_CMD_CAL=${TS_CMD_CAL-"$TOPDIR/misc-utils/cal"}
|
||||||
TS_CMD_CALTEST=${TS_CMD_CALTEST-"$TOPDIR/misc-utils/cal_test"}
|
|
||||||
TS_CMD_SCRIPT=${TS_CMD_SCRIPT-"$TOPDIR/misc-utils/script"}
|
TS_CMD_SCRIPT=${TS_CMD_SCRIPT-"$TOPDIR/misc-utils/script"}
|
||||||
|
|
||||||
TS_CMD_CHECKTTY=${TS_CMD_CHECKTTY-"$TOPDIR/login-utils/checktty_test"}
|
TS_CMD_CHECKTTY=${TS_CMD_CHECKTTY-"$TOPDIR/login-utils/checktty_test"}
|
||||||
|
|
|
@ -26,35 +26,35 @@ ts_init "$*"
|
||||||
set -o pipefail
|
set -o pipefail
|
||||||
|
|
||||||
USETERM=$( ts_has_option "useterm" "$*" )
|
USETERM=$( ts_has_option "useterm" "$*" )
|
||||||
MYTIME=1159350000
|
MYTIME="27 09 2006"
|
||||||
|
|
||||||
[ "$USETERM" == "yes" ] && TS_VERBOSE="yes"
|
[ "$USETERM" == "yes" ] && TS_VERBOSE="yes"
|
||||||
ts_log ""
|
ts_log ""
|
||||||
|
|
||||||
ts_log "Gregorian - Monday-based week"
|
ts_log "Gregorian - Monday-based week"
|
||||||
if [ "$USETERM" == "yes" ]; then
|
if [ "$USETERM" == "yes" ]; then
|
||||||
TEST_TIME=$MYTIME $TS_CMD_CALTEST -1m
|
$TS_CMD_CAL -1m $MYTIME
|
||||||
fi
|
fi
|
||||||
TEST_TIME=$MYTIME $TS_CMD_CALTEST -1m >> $TS_OUTPUT
|
$TS_CMD_CAL -1m $MYTIME >> $TS_OUTPUT
|
||||||
|
|
||||||
ts_log "Gregorian - Sunday-based week"
|
ts_log "Gregorian - Sunday-based week"
|
||||||
if [ "$USETERM" == "yes" ]; then
|
if [ "$USETERM" == "yes" ]; then
|
||||||
TEST_TIME=$MYTIME $TS_CMD_CALTEST -1s
|
$TS_CMD_CAL -1s $MYTIME
|
||||||
fi
|
fi
|
||||||
TEST_TIME=$MYTIME $TS_CMD_CALTEST -1s >> $TS_OUTPUT
|
$TS_CMD_CAL -1s $MYTIME >> $TS_OUTPUT
|
||||||
|
|
||||||
|
|
||||||
ts_log "Julian - Monday-based week"
|
ts_log "Julian - Monday-based week"
|
||||||
if [ "$USETERM" == "yes" ]; then
|
if [ "$USETERM" == "yes" ]; then
|
||||||
TEST_TIME=$MYTIME $TS_CMD_CALTEST -1mj
|
$TS_CMD_CAL -1mj $MYTIME
|
||||||
fi
|
fi
|
||||||
TEST_TIME=$MYTIME $TS_CMD_CALTEST -1mj >> $TS_OUTPUT
|
$TS_CMD_CAL -1mj $MYTIME >> $TS_OUTPUT
|
||||||
|
|
||||||
ts_log "Julian - Sunday-based week"
|
ts_log "Julian - Sunday-based week"
|
||||||
if [ "$USETERM" == "yes" ]; then
|
if [ "$USETERM" == "yes" ]; then
|
||||||
TEST_TIME=$MYTIME $TS_CMD_CALTEST -1sj
|
$TS_CMD_CAL -1sj $MYTIME
|
||||||
fi
|
fi
|
||||||
TEST_TIME=$MYTIME $TS_CMD_CALTEST -1sj >> $TS_OUTPUT
|
$TS_CMD_CAL -1sj $MYTIME >> $TS_OUTPUT
|
||||||
|
|
||||||
ts_finalize
|
ts_finalize
|
||||||
|
|
||||||
|
|
|
@ -26,35 +26,35 @@ ts_init "$*"
|
||||||
set -o pipefail
|
set -o pipefail
|
||||||
|
|
||||||
USETERM=$( ts_has_option "useterm" "$*" )
|
USETERM=$( ts_has_option "useterm" "$*" )
|
||||||
MYTIME=1159350000
|
MYTIME="27 09 2006"
|
||||||
|
|
||||||
[ "$USETERM" == "yes" ] && TS_VERBOSE="yes"
|
[ "$USETERM" == "yes" ] && TS_VERBOSE="yes"
|
||||||
ts_log ""
|
ts_log ""
|
||||||
|
|
||||||
ts_log "Gregorian - Monday-based week"
|
ts_log "Gregorian - Monday-based week"
|
||||||
if [ "$USETERM" == "yes" ]; then
|
if [ "$USETERM" == "yes" ]; then
|
||||||
TEST_TIME=$MYTIME $TS_CMD_CALTEST -3m
|
$TS_CMD_CAL -3m $MYTIME
|
||||||
fi
|
fi
|
||||||
TEST_TIME=$MYTIME $TS_CMD_CALTEST -3m >> $TS_OUTPUT
|
$TS_CMD_CAL -3m $MYTIME >> $TS_OUTPUT
|
||||||
|
|
||||||
ts_log "Gregorian - Sunday-based week"
|
ts_log "Gregorian - Sunday-based week"
|
||||||
if [ "$USETERM" == "yes" ]; then
|
if [ "$USETERM" == "yes" ]; then
|
||||||
TEST_TIME=$MYTIME $TS_CMD_CALTEST -3s
|
$TS_CMD_CAL -3s $MYTIME
|
||||||
fi
|
fi
|
||||||
TEST_TIME=$MYTIME $TS_CMD_CALTEST -3s >> $TS_OUTPUT
|
$TS_CMD_CAL -3s $MYTIME >> $TS_OUTPUT
|
||||||
|
|
||||||
|
|
||||||
ts_log "Julian - Monday-based week"
|
ts_log "Julian - Monday-based week"
|
||||||
if [ "$USETERM" == "yes" ]; then
|
if [ "$USETERM" == "yes" ]; then
|
||||||
TEST_TIME=$MYTIME $TS_CMD_CALTEST -3mj
|
$TS_CMD_CAL -3mj $MYTIME
|
||||||
fi
|
fi
|
||||||
TEST_TIME=$MYTIME $TS_CMD_CALTEST -3mj >> $TS_OUTPUT
|
$TS_CMD_CAL -3mj $MYTIME >> $TS_OUTPUT
|
||||||
|
|
||||||
ts_log "Julian - Sunday-based week"
|
ts_log "Julian - Sunday-based week"
|
||||||
if [ "$USETERM" == "yes" ]; then
|
if [ "$USETERM" == "yes" ]; then
|
||||||
TEST_TIME=$MYTIME $TS_CMD_CALTEST -3sj
|
$TS_CMD_CAL -3sj $MYTIME
|
||||||
fi
|
fi
|
||||||
TEST_TIME=$MYTIME $TS_CMD_CALTEST -3sj >> $TS_OUTPUT
|
$TS_CMD_CAL -3sj $MYTIME >> $TS_OUTPUT
|
||||||
|
|
||||||
ts_finalize
|
ts_finalize
|
||||||
|
|
||||||
|
|
|
@ -26,35 +26,35 @@ ts_init "$*"
|
||||||
set -o pipefail
|
set -o pipefail
|
||||||
|
|
||||||
USETERM=$( ts_has_option "useterm" "$*" )
|
USETERM=$( ts_has_option "useterm" "$*" )
|
||||||
MYTIME=1164800000 # 29-Nov-2006
|
MYTIME="29 11 2006"
|
||||||
|
|
||||||
[ "$USETERM" == "yes" ] && TS_VERBOSE="yes"
|
[ "$USETERM" == "yes" ] && TS_VERBOSE="yes"
|
||||||
ts_log ""
|
ts_log ""
|
||||||
|
|
||||||
ts_log "Gregorian - Monday-based week"
|
ts_log "Gregorian - Monday-based week"
|
||||||
if [ "$USETERM" == "yes" ]; then
|
if [ "$USETERM" == "yes" ]; then
|
||||||
TEST_TIME=$MYTIME $TS_CMD_CALTEST -ym
|
$TS_CMD_CAL -ym $MYTIME
|
||||||
fi
|
fi
|
||||||
TEST_TIME=$MYTIME $TS_CMD_CALTEST -ym >> $TS_OUTPUT
|
$TS_CMD_CAL -ym $MYTIME >> $TS_OUTPUT
|
||||||
|
|
||||||
ts_log "Gregorian - Sunday-based week"
|
ts_log "Gregorian - Sunday-based week"
|
||||||
if [ "$USETERM" == "yes" ]; then
|
if [ "$USETERM" == "yes" ]; then
|
||||||
TEST_TIME=$MYTIME $TS_CMD_CALTEST -ys
|
$TS_CMD_CAL -ys $MYTIME
|
||||||
fi
|
fi
|
||||||
TEST_TIME=$MYTIME $TS_CMD_CALTEST -ys >> $TS_OUTPUT
|
$TS_CMD_CAL -ys $MYTIME >> $TS_OUTPUT
|
||||||
|
|
||||||
|
|
||||||
ts_log "Julian - Monday-based week"
|
ts_log "Julian - Monday-based week"
|
||||||
if [ "$USETERM" == "yes" ]; then
|
if [ "$USETERM" == "yes" ]; then
|
||||||
TEST_TIME=$MYTIME $TS_CMD_CALTEST -ymj
|
$TS_CMD_CAL -ymj $MYTIME
|
||||||
fi
|
fi
|
||||||
TEST_TIME=$MYTIME $TS_CMD_CALTEST -ymj >> $TS_OUTPUT
|
$TS_CMD_CAL -ymj $MYTIME >> $TS_OUTPUT
|
||||||
|
|
||||||
ts_log "Julian - Sunday-based week"
|
ts_log "Julian - Sunday-based week"
|
||||||
if [ "$USETERM" == "yes" ]; then
|
if [ "$USETERM" == "yes" ]; then
|
||||||
TEST_TIME=$MYTIME $TS_CMD_CALTEST -ysj
|
$TS_CMD_CAL -ysj $MYTIME
|
||||||
fi
|
fi
|
||||||
TEST_TIME=$MYTIME $TS_CMD_CALTEST -ysj >> $TS_OUTPUT
|
$TS_CMD_CAL -ysj $MYTIME >> $TS_OUTPUT
|
||||||
|
|
||||||
ts_finalize
|
ts_finalize
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue