svn commit: r211835 - user/edwin/calendar
Edwin Groothuis
edwin at FreeBSD.org
Thu Aug 26 07:57:46 UTC 2010
Author: edwin
Date: Thu Aug 26 07:57:45 2010
New Revision: 211835
URL: http://svn.freebsd.org/changeset/base/211835
Log:
Do only the years once :-)
Add a note to the man-page on how to use the years.
Modified:
user/edwin/calendar/calendar.1
user/edwin/calendar/parsedata.c
Modified: user/edwin/calendar/calendar.1
==============================================================================
--- user/edwin/calendar/calendar.1 Thu Aug 26 07:44:54 2010 (r211834)
+++ user/edwin/calendar/calendar.1 Thu Aug 26 07:57:45 2010 (r211835)
@@ -103,6 +103,7 @@ Print lines from today and the next
days (forward, future).
Ignore weekends when calculating the number of days.
.El
+.Sh FILE FORMAT
.Pp
To handle calendars in your national code table you can specify
.Dq LANG=<locale_name>
@@ -196,6 +197,7 @@ Jun. 15\fB\et\fRJune 15.
Thursday\fB\et\fREvery Thursday.
June\fB\et\fREvery June 1st.
15 *\fB\et\fR15th of every month.
+2010/4/15\fB\et\fR15 April 2010
May Sun+2\fB\et\fRsecond Sunday in May (Muttertag)
04/SunLast\fB\et\fRlast Sunday in April,
Modified: user/edwin/calendar/parsedata.c
==============================================================================
--- user/edwin/calendar/parsedata.c Thu Aug 26 07:44:54 2010 (r211834)
+++ user/edwin/calendar/parsedata.c Thu Aug 26 07:57:45 2010 (r211835)
@@ -434,11 +434,12 @@ parsedaymonth(char *date, int *yearp, in
remindex = 0;
for (year = year1; year <= year2; year++) {
+ int lflags = *flags;
/* If the year is specified, only do it if it is this year! */
- if ((*flags & F_YEAR) != 0)
+ if ((lflags & F_YEAR) != 0)
if (iyear != year)
continue;
- *flags &= ~F_YEAR;
+ lflags &= ~F_YEAR;
/* Get important dates for this year */
yearinfo = years;
@@ -482,7 +483,7 @@ parsedaymonth(char *date, int *yearp, in
}
/* Same day every year */
- if (*flags == (F_MONTH | F_DAYOFMONTH)) {
+ if (lflags == (F_MONTH | F_DAYOFMONTH)) {
if (!remember_ymd(year, imonth, idayofmonth))
continue;
remember(&remindex, yearp, monthp, dayp, edp,
@@ -491,7 +492,7 @@ parsedaymonth(char *date, int *yearp, in
}
/* XXX Same day every year, but variable */
- if (*flags == (F_MONTH | F_DAYOFMONTH | F_VARIABLE)) {
+ if (lflags == (F_MONTH | F_DAYOFMONTH | F_VARIABLE)) {
if (!remember_ymd(year, imonth, idayofmonth))
continue;
remember(&remindex, yearp, monthp, dayp, edp,
@@ -500,7 +501,7 @@ parsedaymonth(char *date, int *yearp, in
}
/* Same day every month */
- if (*flags == (F_ALLMONTH | F_DAYOFMONTH)) {
+ if (lflags == (F_ALLMONTH | F_DAYOFMONTH)) {
for (m = 1; m <= 12; m++) {
if (!remember_ymd(year, m, idayofmonth))
continue;
@@ -511,7 +512,7 @@ parsedaymonth(char *date, int *yearp, in
}
/* Every day of a month */
- if (*flags == (F_ALLDAY | F_MONTH)) {
+ if (lflags == (F_ALLDAY | F_MONTH)) {
for (d = 1; d <= yearinfo->mondays[imonth]; d++) {
if (!remember_ymd(year, imonth, d))
continue;
@@ -522,7 +523,7 @@ parsedaymonth(char *date, int *yearp, in
}
/* One day of every month */
- if (*flags == (F_ALLMONTH | F_DAYOFWEEK)) {
+ if (lflags == (F_ALLMONTH | F_DAYOFWEEK)) {
for (m = 1; m <= 12; m++) {
if (!remember_ymd(year, m, idayofmonth))
continue;
@@ -533,7 +534,7 @@ parsedaymonth(char *date, int *yearp, in
}
/* Every dayofweek of the year */
- if (*flags == (F_DAYOFWEEK | F_VARIABLE)) {
+ if (lflags == (F_DAYOFWEEK | F_VARIABLE)) {
dow = first_dayofweek_of_year(year);
d = (idayofweek - dow + 8) % 7;
while (d <= 366) {
@@ -547,7 +548,7 @@ parsedaymonth(char *date, int *yearp, in
}
/* A certain dayofweek of a month */
- if (*flags ==
+ if (lflags ==
(F_MONTH | F_DAYOFWEEK | F_MODIFIERINDEX | F_VARIABLE)) {
offset = indextooffset(modifierindex);
dow = first_dayofweek_of_month(year, imonth);
@@ -583,7 +584,7 @@ parsedaymonth(char *date, int *yearp, in
}
/* Every dayofweek of the month */
- if (*flags == (F_DAYOFWEEK | F_MONTH | F_VARIABLE)) {
+ if (lflags == (F_DAYOFWEEK | F_MONTH | F_VARIABLE)) {
dow = first_dayofweek_of_month(year, imonth);
d = (idayofweek - dow + 8) % 7;
while (d <= yearinfo->mondays[imonth]) {
@@ -597,10 +598,10 @@ parsedaymonth(char *date, int *yearp, in
}
/* Easter */
- if ((*flags & ~F_MODIFIEROFFSET) ==
+ if ((lflags & ~F_MODIFIEROFFSET) ==
(F_SPECIALDAY | F_VARIABLE | F_EASTER)) {
offset = 0;
- if ((*flags & F_MODIFIEROFFSET) != 0)
+ if ((lflags & F_MODIFIEROFFSET) != 0)
offset = parseoffset(modifieroffset);
if (remember_yd(year, yearinfo->ieaster + offset,
&rm, &rd))
@@ -610,10 +611,10 @@ parsedaymonth(char *date, int *yearp, in
}
/* Paskha */
- if ((*flags & ~F_MODIFIEROFFSET) ==
+ if ((lflags & ~F_MODIFIEROFFSET) ==
(F_SPECIALDAY | F_VARIABLE | F_PASKHA)) {
offset = 0;
- if ((*flags & F_MODIFIEROFFSET) != 0)
+ if ((lflags & F_MODIFIEROFFSET) != 0)
offset = parseoffset(modifieroffset);
if (remember_yd(year, yearinfo->ipaskha + offset,
&rm, &rd))
@@ -623,10 +624,10 @@ parsedaymonth(char *date, int *yearp, in
}
/* Chinese New Year */
- if ((*flags & ~F_MODIFIEROFFSET) ==
+ if ((lflags & ~F_MODIFIEROFFSET) ==
(F_SPECIALDAY | F_VARIABLE | F_CNY)) {
offset = 0;
- if ((*flags & F_MODIFIEROFFSET) != 0)
+ if ((lflags & F_MODIFIEROFFSET) != 0)
offset = parseoffset(modifieroffset);
if (remember_yd(year, yearinfo->firstcnyday + offset,
&rm, &rd))
@@ -636,12 +637,12 @@ parsedaymonth(char *date, int *yearp, in
}
/* FullMoon */
- if ((*flags & ~F_MODIFIEROFFSET) ==
+ if ((lflags & ~F_MODIFIEROFFSET) ==
(F_SPECIALDAY | F_VARIABLE | F_FULLMOON)) {
int i;
offset = 0;
- if ((*flags & F_MODIFIEROFFSET) != 0)
+ if ((lflags & F_MODIFIEROFFSET) != 0)
offset = parseoffset(modifieroffset);
for (i = 0; yearinfo->ffullmoon[i] > 0; i++) {
if (remember_yd(year,
@@ -658,12 +659,12 @@ parsedaymonth(char *date, int *yearp, in
}
/* NewMoon */
- if ((*flags & ~F_MODIFIEROFFSET) ==
+ if ((lflags & ~F_MODIFIEROFFSET) ==
(F_SPECIALDAY | F_VARIABLE | F_NEWMOON)) {
int i;
offset = 0;
- if ((*flags & F_MODIFIEROFFSET) != 0)
+ if ((lflags & F_MODIFIEROFFSET) != 0)
offset = parseoffset(modifieroffset);
for (i = 0; yearinfo->ffullmoon[i] > 0; i++) {
if (remember_yd(year,
@@ -679,10 +680,10 @@ parsedaymonth(char *date, int *yearp, in
}
/* (Mar|Sep)Equinox */
- if ((*flags & ~F_MODIFIEROFFSET) ==
+ if ((lflags & ~F_MODIFIEROFFSET) ==
(F_SPECIALDAY | F_VARIABLE | F_MAREQUINOX)) {
offset = 0;
- if ((*flags & F_MODIFIEROFFSET) != 0)
+ if ((lflags & F_MODIFIEROFFSET) != 0)
offset = parseoffset(modifieroffset);
if (remember_yd(year, yearinfo->equinoxdays[0] + offset,
&rm, &rd)) {
@@ -692,10 +693,10 @@ parsedaymonth(char *date, int *yearp, in
}
continue;
}
- if ((*flags & ~F_MODIFIEROFFSET) ==
+ if ((lflags & ~F_MODIFIEROFFSET) ==
(F_SPECIALDAY | F_VARIABLE | F_SEPEQUINOX)) {
offset = 0;
- if ((*flags & F_MODIFIEROFFSET) != 0)
+ if ((lflags & F_MODIFIEROFFSET) != 0)
offset = parseoffset(modifieroffset);
if (remember_yd(year, yearinfo->equinoxdays[1] + offset,
&rm, &rd)) {
@@ -707,10 +708,10 @@ parsedaymonth(char *date, int *yearp, in
}
/* (Jun|Dec)Solstice */
- if ((*flags & ~F_MODIFIEROFFSET) ==
+ if ((lflags & ~F_MODIFIEROFFSET) ==
(F_SPECIALDAY | F_VARIABLE | F_JUNSOLSTICE)) {
offset = 0;
- if ((*flags & F_MODIFIEROFFSET) != 0)
+ if ((lflags & F_MODIFIEROFFSET) != 0)
offset = parseoffset(modifieroffset);
if (remember_yd(year,
yearinfo->solsticedays[0] + offset, &rm, &rd)) {
@@ -720,10 +721,10 @@ parsedaymonth(char *date, int *yearp, in
}
continue;
}
- if ((*flags & ~F_MODIFIEROFFSET) ==
+ if ((lflags & ~F_MODIFIEROFFSET) ==
(F_SPECIALDAY | F_VARIABLE | F_DECSOLSTICE)) {
offset = 0;
- if ((*flags & F_MODIFIEROFFSET) != 0)
+ if ((lflags & F_MODIFIEROFFSET) != 0)
offset = parseoffset(modifieroffset);
if (remember_yd(year,
yearinfo->solsticedays[1] + offset, &rm, &rd)) {
@@ -735,7 +736,7 @@ parsedaymonth(char *date, int *yearp, in
}
printf("Unprocessed:\n");
- debug_determinestyle(2, date, *flags, month, imonth,
+ debug_determinestyle(2, date, lflags, month, imonth,
dayofmonth, idayofmonth, dayofweek, idayofweek,
modifieroffset, modifierindex, specialday, syear, iyear);
retvalsign = -1;
More information about the svn-src-user
mailing list