On Mon, Dec 05, 2022 at 01:29:26PM -0800, Richard Narron wrote: > Here is an new version of the 5 patches with changes to two files: > > calendars/calendar.christian > advent.c > > The file, calendar.christian, Advent entries are changed > from: > > 11/SunLast First Sunday of Advent (4th Sunday before Christmas) > 12/SunFirst First Sunday of Advent (4th Sunday before Christmas) > > to: > > Advent First Sunday of Advent (4th Sunday before Christmas) >
for now i have removed "11/SunLast". that should give us at least a couple of years to deliberate this diff. unless someone picks it up, i will gently remind fans of calendar.christain of its description in calendar(1): calendar.christian Christian holidays (should be updated yearly by the local system administrator so that roving holidays are set correctly for the current year). jmc > The file, advent.c, the calculation is changed from: > > /* find 4 weeks (28 days) before the Sunday before Christmas */ > yearday = yearday - 28; > > to: > > /* If Christmas is not Sunday subtract 3 weeks otherwise subtract 4 */ > if ( dayofweek > 0 ) > yearday = yearday - 21; > else > yearday = yearday - 28; > > Here are all 5 of the patch files: > > --- calendar-7.2/calendars/calendar.christian.orig 1998-11-07 > 20:38:00.000000000 -0800 > +++ calendar-7.2/calendars/calendar.christian 2022-12-05 08:49:24.668905247 > -0800 > @@ -21,8 +21,7 @@ > Easter+56 Trinity Sunday (7 days after Pentecost) > Easter+60 Corpus Christi (11 days after Pentecost) > 10/18 Feast Day of St. Luke > -11/SunLast First Sunday of Advent (4th Sunday before Christmas) > -12/SunFirst First Sunday of Advent (4th Sunday before Christmas) > +Advent First Sunday of Advent (4th Sunday before Christmas) > 12/06 St. Nicholas' Day > 12/25 Christmas > > --- calendar-7.2/Makefile.orig 2016-09-10 23:40:57.000000000 -0700 > +++ calendar-7.2/Makefile 2022-12-02 17:28:49.720561727 -0800 > @@ -1,7 +1,7 @@ > # $OpenBSD: Makefile,v 1.11 2016/09/11 06:40:57 natano Exp $ > > PROG= calendar > -SRCS= calendar.c io.c day.c pesach.c ostern.c paskha.c > +SRCS= calendar.c io.c day.c pesach.c ostern.c paskha.c advent.c > INTER= de_DE.UTF-8 hr_HR.UTF-8 ru_RU.UTF-8 fr_FR.UTF-8 > > beforeinstall: > > --- calendar-7.2/calendar.h.orig 2022-12-02 12:24:15.858386699 -0800 > +++ calendar-7.2/calendar.h 2022-12-02 13:21:12.184331976 -0800 > @@ -80,6 +80,7 @@ int getmonth(char *); > int pesach(int); > int easter(int); > int paskha(int); > +int advent(int); > void insert(struct event **, struct event *); > struct match *isnow(char *, int); > FILE *opencal(void); > @@ -113,12 +114,14 @@ extern int f_Setday; /* calendar invoked > #define EASTERNAMELEN (sizeof(EASTER) - 1) > #define PASKHA "paskha" > #define PASKHALEN (sizeof(PASKHA) - 1) > +#define ADVENT "advent" > +#define ADVENTLEN (sizeof(ADVENT) - 1) > > /* calendars */ > extern enum calendars { GREGORIAN = 0, JULIAN, LUNAR } calendar; > extern u_long julian; > > -#define NUMEV 3 /* Total number of such special events */ > +#define NUMEV 4 /* Total number of such special events */ > extern struct specialev spev[NUMEV]; > > /* For calendar -a, specify a maximum time (in seconds) to spend parsing > > --- calendar-7.2/day.c.orig 2019-08-12 13:03:28.000000000 -0700 > +++ calendar-7.2/day.c 2022-12-02 13:25:46.483327583 -0800 > @@ -143,6 +143,9 @@ setnnames(void) > spev[2].name = strdup(PASKHA); > spev[2].nlen = PASKHALEN; > spev[2].getev = paskha; > + spev[3].name = strdup(ADVENT); > + spev[3].nlen = ADVENTLEN; > + spev[3].getev = advent; > for (i = 0; i < NUMEV; i++) { > if (spev[i].name == NULL) > err(1, NULL); > > --- calendar-7.2/advent.c.orig 2022-12-05 08:40:50.753913479 -0800 > +++ calendar-7.2/advent.c 2022-12-05 08:56:11.084898737 -0800 > @@ -0,0 +1,50 @@ > +/* > + * Copyright (C) 2022 by Richard Narron <rich...@aaazen.com>, California > + * > + * Permission to use, copy, modify, and distribute this software for any > + * purpose with or without fee is hereby granted, provided that the above > + * copyright notice and this permission notice appear in all copies. > + * > + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES > + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF > + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR > + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES > + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN > + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF > + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. > + */ > + > +#include <stdio.h> > + > +#include "calendar.h" > + > +/* return year day for Advent, the 4th Sunday before Christmas */ > + > +int > +advent(int year) > +{ > + int dayofweek = 0; > + int nextyear = 0; > + int yearday = 0; > + > + /* Christmas and the next New years are the same day of the week */ > + nextyear = year + 1; > + dayofweek = foy(nextyear); > + > + /* find Christmas day of year */ > + if isleap(year) > + yearday = 360; > + else > + yearday = 359; > + > + /* find the year day of the Sunday on or before Christmas */ > + yearday = yearday - dayofweek; > + > + /* If Christmas is not Sunday subtract 3 weeks otherwise subtract 4 */ > + if ( dayofweek > 0 ) > + yearday = yearday - 21; > + else > + yearday = yearday - 28; > + > + return (yearday); > +} >