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