summaryrefslogtreecommitdiffstats
path: root/usr.bin
diff options
context:
space:
mode:
authoredwin <edwin@FreeBSD.org>2011-07-11 08:24:36 +0000
committeredwin <edwin@FreeBSD.org>2011-07-11 08:24:36 +0000
commit112905c461f125b28a3b0e16020035c04adc3d30 (patch)
tree7a456f1333e875ed0d2bb8c0c216475ed3839a0e /usr.bin
parent0c1f0ec6f5ccbe605aa365f372013e6b5ef9f248 (diff)
downloadFreeBSD-src-112905c461f125b28a3b0e16020035c04adc3d30.zip
FreeBSD-src-112905c461f125b28a3b0e16020035c04adc3d30.tar.gz
Fix the interpreter for:
Jul/Sat+3 Every third saturday of July - Jul/Sat+3 which was able to be done via: Jul/SatThird Every third saturday of July - Jul/SatThird Add interpreters for: SatFourth Every third saturday of each month - SatFourth Sat+4 Every third saturday of each month - Sat+4 Sat Every saturday of each month - Sat MFC after: 2 weeks
Diffstat (limited to 'usr.bin')
-rw-r--r--usr.bin/calendar/parsedata.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/usr.bin/calendar/parsedata.c b/usr.bin/calendar/parsedata.c
index e3f9fab..fdbe44d 100644
--- a/usr.bin/calendar/parsedata.c
+++ b/usr.bin/calendar/parsedata.c
@@ -548,6 +548,24 @@ parsedaymonth(char *date, int *yearp, int *monthp, int *dayp, int *flags,
continue;
}
+ /* Every so-manied dayofweek of every month of the year */
+ if (lflags == (F_DAYOFWEEK | F_MODIFIERINDEX | F_VARIABLE)) {
+ offset = indextooffset(modifierindex);
+
+ for (m = 0; m < 12; m++) {
+ dow = first_dayofweek_of_month(year, m);
+ d = (idayofweek - dow + 8) % 7;
+ d += (offset - 1) * 7;
+ if (remember_ymd(year, m, d)) {
+ remember(&remindex,
+ yearp, monthp, dayp, edp,
+ year, m, d, NULL);
+ continue;
+ }
+ }
+ continue;
+ }
+
/* A certain dayofweek of a month */
if (lflags ==
(F_MONTH | F_DAYOFWEEK | F_MODIFIERINDEX | F_VARIABLE)) {
@@ -918,6 +936,16 @@ indextooffset(char *s)
int i;
struct fixs *n;
+ if (s[0] == '+' || s[0] == '-') {
+ char ss[9];
+ for (i = -100; i < 100; i++) {
+ sprintf(ss, "%s%d", (i > 0) ? "+" : "", i);
+ if (strcmp(ss, s) == 0)
+ return (i);
+ }
+ return (0);
+ }
+
for (i = 0; i < 6; i++) {
if (strcasecmp(s, sequences[i]) == 0) {
if (i == 5)
OpenPOWER on IntegriCloud