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 <[email protected]>, 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);
> +}
>