Deleted Added
full compact
ostern.c (200627) ostern.c (205821)
1/*
1/*-
2 * Copyright (c) 1996 Wolfram Schneider <wosch@FreeBSD.org>. Berlin.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.

--- 10 unchanged lines hidden (view full) ---

20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 */
26
27#include <sys/cdefs.h>
2 * Copyright (c) 1996 Wolfram Schneider <wosch@FreeBSD.org>. Berlin.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.

--- 10 unchanged lines hidden (view full) ---

20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 */
26
27#include <sys/cdefs.h>
28__FBSDID("$FreeBSD: head/usr.bin/calendar/ostern.c 200627 2009-12-17 08:41:06Z rse $");
28__FBSDID("$FreeBSD: head/usr.bin/calendar/ostern.c 205821 2010-03-29 06:49:20Z edwin $");
29
30#include <stdio.h>
31#include <stdlib.h>
32#include <string.h>
33
34#include "calendar.h"
35
36/* return year day for Easter */

--- 18 unchanged lines hidden (view full) ---

55 G = year % 19;
56 C = year / 100;
57 H = (C - C / 4 - (8 * C + 13) / 25 + 19 * G + 15) % 30;
58 I = H - (H / 28) * (1 - (H / 28) * (29 / (H + 1)) * ((21 - G) / 11));
59 J = (year + year / 4 + I + 2 - C + C / 4) % 7;
60
61 L = I - J;
62
29
30#include <stdio.h>
31#include <stdlib.h>
32#include <string.h>
33
34#include "calendar.h"
35
36/* return year day for Easter */

--- 18 unchanged lines hidden (view full) ---

55 G = year % 19;
56 C = year / 100;
57 H = (C - C / 4 - (8 * C + 13) / 25 + 19 * G + 15) % 30;
58 I = H - (H / 28) * (1 - (H / 28) * (29 / (H + 1)) * ((21 - G) / 11));
59 J = (year + year / 4 + I + 2 - C + C / 4) % 7;
60
61 L = I - J;
62
63 if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))
63 if (isleap(year))
64 return 31 + 29 + 21 + L + 7;
65 else
66 return 31 + 28 + 21 + L + 7;
67}
64 return 31 + 29 + 21 + L + 7;
65 else
66 return 31 + 28 + 21 + L + 7;
67}
68
69/* return year day for Easter or easter depending days
70 * Match: Easter([+-][0-9]+)?
71 * e.g: Easter-2 is Good Friday (2 days before Easter)
72 */
73
74int
75geteaster(char *s, int year)
76{
77 int offset = 0;
78
79#define EASTER "easter"
80#define EASTERNAMELEN (sizeof(EASTER) - 1)
81
82 if (strncasecmp(s, EASTER, EASTERNAMELEN) == 0)
83 s += EASTERNAMELEN;
84 else if (neaster.name != NULL
85 && strncasecmp(s, neaster.name, neaster.len) == 0)
86 s += neaster.len;
87 else
88 return (0);
89
90#ifdef DEBUG
91 printf("%s %d %d\n", s, year, EASTERNAMELEN);
92#endif
93
94 /* Easter+1 or Easter-2
95 * ^ ^ */
96
97 switch (*s) {
98
99 case '-':
100 case '+':
101 offset = atoi(s);
102 break;
103
104 default:
105 offset = 0;
106 }
107
108 return (easter(year) + offset);
109}