Date: Thu, 26 Aug 2010 07:57:46 +0000 (UTC) From: Edwin Groothuis <edwin@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r211835 - user/edwin/calendar Message-ID: <201008260757.o7Q7vkRl035702@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201008260757.o7Q7vkRl035702>