Author: gonzo
Date: Fri Apr 10 22:18:30 2020
New Revision: 359783
URL: https://svnweb.freebsd.org/changeset/base/359783

Log:
  MFC r359585, r359587
  
  r359585:
  Fix calculation of the recurring weekdays
  
  Both the result of the first_dayofweek_of_year and the target
  weekday are zero-based (0 fo sunday) while the target month-day
  or year-day is 1-based. Adjust logic accordingly.
  
  Also add testcase for this PR to the kyua test suite
  
  PR:           201062
  Submitted by: Richard Narron <comet.berke...@gmail.com>
  
  r359587:
  Remove hardcoded US Election Day from calendar.usholiday
  
  calendar(1) syntax is not capable of representing the rules for the
  US Election Day. The hardcoded date was set in r15066 in 1996 and
  hasn't changed since then.
  
  PR:           173389
  Reported by:  Steve Ames <st...@energistic.com>

Added:
  stable/11/usr.bin/calendar/tests/regress.s5.out
     - copied unchanged from r359585, head/usr.bin/calendar/tests/regress.s5.out
Modified:
  stable/11/usr.bin/calendar/calendars/calendar.usholiday
  stable/11/usr.bin/calendar/parsedata.c
  stable/11/usr.bin/calendar/tests/calendar.calibrate
  stable/11/usr.bin/calendar/tests/regress.sh
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/usr.bin/calendar/calendars/calendar.usholiday
==============================================================================
--- stable/11/usr.bin/calendar/calendars/calendar.usholiday     Fri Apr 10 
22:18:13 2020        (r359782)
+++ stable/11/usr.bin/calendar/calendars/calendar.usholiday     Fri Apr 10 
22:18:30 2020        (r359783)
@@ -30,7 +30,6 @@
 09/22* Autumnal Equinox
 10/MonSecond   Columbus Day in USA (2nd Monday of October)
 10/31  All Hallows Eve  (Halloween)
-11/05* Election Day in USA (1st Tuesday after 1st Monday for even years)
 11/SunFirst    Daylight Savings Time ends in USA; clocks move back (1st Sunday 
of November)
 11/11  Veterans' Day
 11/ThuFourth   Thanksgiving Day (4th Thursday in November)

Modified: stable/11/usr.bin/calendar/parsedata.c
==============================================================================
--- stable/11/usr.bin/calendar/parsedata.c      Fri Apr 10 22:18:13 2020        
(r359782)
+++ stable/11/usr.bin/calendar/parsedata.c      Fri Apr 10 22:18:30 2020        
(r359783)
@@ -578,7 +578,9 @@ parsedaymonth(char *date, int *yearp, int *monthp, int
                /* Every dayofweek of the year */
                if (lflags == (F_DAYOFWEEK | F_VARIABLE)) {
                        dow = first_dayofweek_of_year(year);
-                       d = (idayofweek - dow + 8) % 7;
+                       if (dow < 0)
+                               continue;
+                       d = (idayofweek - dow + 7) % 7 + 1;
                        while (d <= 366) {
                                if (remember_yd(year, d, &rm, &rd))
                                        remember(&remindex,
@@ -616,7 +618,9 @@ parsedaymonth(char *date, int *yearp, int *monthp, int
                    (F_MONTH | F_DAYOFWEEK | F_MODIFIERINDEX | F_VARIABLE)) {
                        offset = indextooffset(modifierindex);
                        dow = first_dayofweek_of_month(year, imonth);
-                       d = (idayofweek - dow + 8) % 7;
+                       if (dow < 0)
+                               continue;
+                       d = (idayofweek - dow + 7) % 7 + 1;
 
                        if (offset > 0) {
                                while (d <= yearinfo->monthdays[imonth]) {
@@ -650,7 +654,9 @@ parsedaymonth(char *date, int *yearp, int *monthp, int
                /* Every dayofweek of the month */
                if (lflags == (F_DAYOFWEEK | F_MONTH | F_VARIABLE)) {
                        dow = first_dayofweek_of_month(year, imonth);
-                       d = (idayofweek - dow + 8) % 7;
+                       if (dow < 0)
+                               continue;
+                       d = (idayofweek - dow + 7) % 7 + 1;
                        while (d <= yearinfo->monthdays[imonth]) {
                                if (remember_ymd(year, imonth, d))
                                        remember(&remindex,

Modified: stable/11/usr.bin/calendar/tests/calendar.calibrate
==============================================================================
--- stable/11/usr.bin/calendar/tests/calendar.calibrate Fri Apr 10 22:18:13 
2020        (r359782)
+++ stable/11/usr.bin/calendar/tests/calendar.calibrate Fri Apr 10 22:18:30 
2020        (r359783)
@@ -188,6 +188,7 @@ LANG=C
 06/28  jun 28
 06/29  jun 29
 06/30  jun 30
+06/SunThird    sunthird
 07/01  jul 1
 07/02  jul 2
 07/03  jul 3

Copied: stable/11/usr.bin/calendar/tests/regress.s5.out (from r359585, 
head/usr.bin/calendar/tests/regress.s5.out)
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ stable/11/usr.bin/calendar/tests/regress.s5.out     Fri Apr 10 22:18:30 
2020        (r359783, copy of r359585, 
head/usr.bin/calendar/tests/regress.s5.out)
@@ -0,0 +1,3 @@
+Jun 21*        sunthird
+Jun 21         jun 21
+Jun 22         jun 22

Modified: stable/11/usr.bin/calendar/tests/regress.sh
==============================================================================
--- stable/11/usr.bin/calendar/tests/regress.sh Fri Apr 10 22:18:13 2020        
(r359782)
+++ stable/11/usr.bin/calendar/tests/regress.sh Fri Apr 10 22:18:30 2020        
(r359783)
@@ -7,12 +7,13 @@ CALENDAR="${CALENDAR_BIN} ${CALENDAR_FILE}"
 
 REGRESSION_START($1)
 
-echo 1..28
+echo 1..29
 
 REGRESSION_TEST(`s1',`$CALENDAR -t 29.12.2006')
 REGRESSION_TEST(`s2',`$CALENDAR -t 30.12.2006')
 REGRESSION_TEST(`s3',`$CALENDAR -t 31.12.2006')
 REGRESSION_TEST(`s4',`$CALENDAR -t 01.01.2007')
+REGRESSION_TEST(`s5',`$CALENDAR -t 21.06.2015')
 
 REGRESSION_TEST(`a1',`$CALENDAR -A 3 -t 28.12.2006')
 REGRESSION_TEST(`a2',`$CALENDAR -A 3 -t 29.12.2006')
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to