svn commit: r212035 - in head/usr.bin/calendar: . calendars

Edwin Groothuis edwin at FreeBSD.org
Mon Aug 30 22:45:32 UTC 2010


Author: edwin
Date: Mon Aug 30 22:45:32 2010
New Revision: 212035
URL: http://svn.freebsd.org/changeset/base/212035

Log:
  For calendars which don't match the solar-based Gregorian calendar,
  be able to specify a year string in an entry.

Modified:
  head/usr.bin/calendar/calendar.1
  head/usr.bin/calendar/calendar.h
  head/usr.bin/calendar/calendars/calendar.judaic
  head/usr.bin/calendar/parsedata.c
Directory Properties:
  head/usr.bin/calendar/   (props changed)

Modified: head/usr.bin/calendar/calendar.1
==============================================================================
--- head/usr.bin/calendar/calendar.1	Mon Aug 30 22:28:04 2010	(r212034)
+++ head/usr.bin/calendar/calendar.1	Mon Aug 30 22:45:32 2010	(r212035)
@@ -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: head/usr.bin/calendar/calendar.h
==============================================================================
--- head/usr.bin/calendar/calendar.h	Mon Aug 30 22:28:04 2010	(r212034)
+++ head/usr.bin/calendar/calendar.h	Mon Aug 30 22:45:32 2010	(r212035)
@@ -80,6 +80,7 @@ extern int EastLongitude;
 #define	F_SEPEQUINOX		0x08000
 #define	F_JUNSOLSTICE		0x10000
 #define	F_DECSOLSTICE		0x20000
+#define	F_YEAR			0x40000
 
 #define	STRING_EASTER		"Easter"
 #define	STRING_PASKHA		"Paskha"

Modified: head/usr.bin/calendar/calendars/calendar.judaic
==============================================================================
--- head/usr.bin/calendar/calendars/calendar.judaic	Mon Aug 30 22:28:04 2010	(r212034)
+++ head/usr.bin/calendar/calendars/calendar.judaic	Mon Aug 30 22:45:32 2010	(r212035)
@@ -13,10 +13,477 @@
 #define _calendar_judaic_
 
 /*
- * Jewish calendar for the CE year 2007
- * 11 Tevet 5767 - 22 tevet 5768
+ * The calendar below has gotten from the port deskutils/hebcal for
+ * the year of 2010 and for the city of New York.
+ * This should be updated every year!
  */
 
+2010/Jan/16*	Rosh Chodesh Sh'vat
+2010/Jan/30*	Tu B'Shvat
+2010/Feb/13*	Shabbat Shekalim
+2010/Feb/14*	Rosh Chodesh Adar
+2010/Feb/15*	Rosh Chodesh Adar
+2010/Feb/25*	Ta'anit Esther
+2010/Feb/27*	Shabbat Zachor
+2010/Feb/28*	Purim
+2010/Mar/1*	Shushan Purim
+2010/Mar/6*	Shabbat Parah
+2010/Mar/13*	Shabbat HaChodesh
+2010/Mar/16*	Rosh Chodesh Nisan
+2010/Mar/27*	Shabbat HaGadol
+2010/Mar/29*	Ta'anit Bechorot
+2010/Mar/29*	Erev Pesach
+2010/Mar/30*	Pesach I
+2010/Mar/31*	Pesach II
+2010/Apr/1*	Pesach III (CH''M)
+2010/Apr/2*	Pesach IV (CH''M)
+2010/Apr/3*	Pesach V (CH''M)
+2010/Apr/4*	Pesach VI (CH''M)
+2010/Apr/5*	Pesach VII
+2010/Apr/6*	Pesach VIII
+2010/Apr/11*	Yom HaShoah
+2010/Apr/14*	Rosh Chodesh Iyyar
+2010/Apr/15*	Rosh Chodesh Iyyar
+2010/Apr/19*	Yom HaZikaron
+2010/Apr/20*	Yom HaAtzma'ut
+2010/May/2*	Lag B'Omer
+2010/May/Dec*	Yom Yerushalayim
+2010/May/14*	Rosh Chodesh Sivan
+2010/May/18*	Erev Shavuot
+2010/May/19*	Shavuot I
+2010/May/20*	Shavuot II
+2010/Jun/Dec*	Rosh Chodesh Tamuz
+2010/Jun/13*	Rosh Chodesh Tamuz
+2010/Jun/29*	Tzom Tammuz
+2010/Jul/Dec*	Rosh Chodesh Av
+2010/Jul/17*	Shabbat Hazon
+2010/Jul/20*	Tish'a B'Av
+2010/Jul/24*	Shabbat Nachamu
+2010/Aug/Oct*	Rosh Chodesh Elul
+2010/Aug/11*	Rosh Chodesh Elul
+2010/Sep/8*	Erev Rosh Hashana
+2010/Sep/9*	Rosh Hashana 5771
+2010/Sep/Oct*	Rosh Hashana II
+2010/Sep/11*	Shabbat Shuva
+2010/Sep/Dec*	Tzom Gedaliah
+2010/Sep/17*	Erev Yom Kippur
+2010/Sep/18*	Yom Kippur
+2010/Sep/22*	Erev Sukkot
+2010/Sep/23*	Sukkot I
+2010/Sep/24*	Sukkot II
+2010/Sep/25*	Sukkot III (CH''M)
+2010/Sep/26*	Sukkot IV (CH''M)
+2010/Sep/27*	Sukkot V (CH''M)
+2010/Sep/28*	Sukkot VI (CH''M)
+2010/Sep/29*	Sukkot VII (Hoshana Raba)
+2010/Sep/30*	Shmini Atzeret
+2010/Oct/1*	Simchat Torah
+2010/Oct/8*	Rosh Chodesh Cheshvan
+2010/Oct/9*	Rosh Chodesh Cheshvan
+2010/Nov/7*	Rosh Chodesh Kislev
+2010/Nov/8*	Rosh Chodesh Kislev
+2010/Dec/1*	Chanukah: 1 Candle
+2010/Dec/2*	Chanukah: 2 Candles
+2010/Dec/3*	Chanukah: 3 Candles
+2010/Dec/4*	Chanukah: 4 Candles
+2010/Dec/5*	Chanukah: 5 Candles
+2010/Dec/6*	Chanukah: 6 Candles
+2010/Dec/7*	Rosh Chodesh Tevet
+2010/Dec/7*	Chanukah: 7 Candles
+2010/Dec/8*	Rosh Chodesh Tevet
+2010/Dec/8*	Chanukah: 8 Candles
+2010/Dec/9*	Chanukah: 8th Day
+2010/Dec/16*	Asara B'Tevet
+2011/1/6*	Rosh Chodesh Sh'vat
+2011/1/20*	Tu B'Shvat
+2011/2/4*	Rosh Chodesh Adar I
+2011/2/5*	Rosh Chodesh Adar I
+2011/2/18*	Purim Katan
+2011/3/5*	Shabbat Shekalim
+2011/3/6*	Rosh Chodesh Adar II
+2011/3/7*	Rosh Chodesh Adar II
+2011/3/17*	Ta'anit Esther
+2011/3/19*	Shabbat Zachor
+2011/3/20*	Purim
+2011/3/21*	Shushan Purim
+2011/3/26*	Shabbat Parah
+2011/4/2*	Shabbat HaChodesh
+2011/4/5*	Rosh Chodesh Nisan
+2011/4/16*	Shabbat HaGadol
+2011/4/18*	Ta'anit Bechorot
+2011/4/18*	Erev Pesach
+2011/4/19*	Pesach I
+2011/4/20*	Pesach II
+2011/4/21*	Pesach III (CH''M)
+2011/4/22*	Pesach IV (CH''M)
+2011/4/23*	Pesach V (CH''M)
+2011/4/24*	Pesach VI (CH''M)
+2011/4/25*	Pesach VII
+2011/4/26*	Pesach VIII
+2011/5/1*	Yom HaShoah
+2011/5/4*	Rosh Chodesh Iyyar
+2011/5/5*	Rosh Chodesh Iyyar
+2011/5/9*	Yom HaZikaron
+2011/5/10*	Yom HaAtzma'ut
+2011/5/22*	Lag B'Omer
+2011/6/1*	Yom Yerushalayim
+2011/6/3*	Rosh Chodesh Sivan
+2011/6/7*	Erev Shavuot
+2011/6/8*	Shavuot I
+2011/6/9*	Shavuot II
+2011/7/2*	Rosh Chodesh Tamuz
+2011/7/3*	Rosh Chodesh Tamuz
+2011/7/19*	Tzom Tammuz
+2011/8/1*	Rosh Chodesh Av
+2011/8/6*	Shabbat Hazon
+2011/8/9*	Tish'a B'Av
+2011/8/13*	Shabbat Nachamu
+2011/8/30*	Rosh Chodesh Elul
+2011/8/31*	Rosh Chodesh Elul
+2011/9/28*	Erev Rosh Hashana
+2011/9/29*	Rosh Hashana 5772
+2011/9/30*	Rosh Hashana II
+2011/10/1*	Shabbat Shuva
+2011/10/2*	Tzom Gedaliah
+2011/10/7*	Erev Yom Kippur
+2011/10/8*	Yom Kippur
+2011/10/12*	Erev Sukkot
+2011/10/13*	Sukkot I
+2011/10/14*	Sukkot II
+2011/10/15*	Sukkot III (CH''M)
+2011/10/16*	Sukkot IV (CH''M)
+2011/10/17*	Sukkot V (CH''M)
+2011/10/18*	Sukkot VI (CH''M)
+2011/10/19*	Sukkot VII (Hoshana Raba)
+2011/10/20*	Shmini Atzeret
+2011/10/21*	Simchat Torah
+2011/10/28*	Rosh Chodesh Cheshvan
+2011/10/29*	Rosh Chodesh Cheshvan
+2011/11/27*	Rosh Chodesh Kislev
+2011/12/20*	Chanukah: 1 Candle
+2011/12/21*	Chanukah: 2 Candles
+2011/12/22*	Chanukah: 3 Candles
+2011/12/23*	Chanukah: 4 Candles
+2011/12/24*	Chanukah: 5 Candles
+2011/12/25*	Chanukah: 6 Candles
+2011/12/26*	Rosh Chodesh Tevet
+2011/12/26*	Chanukah: 7 Candles
+2011/12/27*	Rosh Chodesh Tevet
+2011/12/27*	Chanukah: 8 Candles
+2011/12/28*	Chanukah: 8th Day
+2012/1/5*	Asara B'Tevet
+2012/1/25*	Rosh Chodesh Sh'vat
+2012/2/8*	Tu B'Shvat
+2012/2/18*	Shabbat Shekalim
+2012/2/23*	Rosh Chodesh Adar
+2012/2/24*	Rosh Chodesh Adar
+2012/3/3*	Shabbat Zachor
+2012/3/7*	Ta'anit Esther
+2012/3/8*	Purim
+2012/3/9*	Shushan Purim
+2012/3/17*	Shabbat Parah
+2012/3/24*	Rosh Chodesh Nisan
+2012/3/24*	Shabbat HaChodesh
+2012/3/31*	Shabbat HaGadol
+2012/4/5*	Ta'anit Bechorot
+2012/4/6*	Erev Pesach
+2012/4/7*	Pesach I
+2012/4/8*	Pesach II
+2012/4/9*	Pesach III (CH''M)
+2012/4/10*	Pesach IV (CH''M)
+2012/4/11*	Pesach V (CH''M)
+2012/4/12*	Pesach VI (CH''M)
+2012/4/13*	Pesach VII
+2012/4/14*	Pesach VIII
+2012/4/19*	Yom HaShoah
+2012/4/22*	Rosh Chodesh Iyyar
+2012/4/23*	Rosh Chodesh Iyyar
+2012/4/25*	Yom HaZikaron
+2012/4/26*	Yom HaAtzma'ut
+2012/5/10*	Lag B'Omer
+2012/5/20*	Yom Yerushalayim
+2012/5/22*	Rosh Chodesh Sivan
+2012/5/26*	Erev Shavuot
+2012/5/27*	Shavuot I
+2012/5/28*	Shavuot II
+2012/6/20*	Rosh Chodesh Tamuz
+2012/6/21*	Rosh Chodesh Tamuz
+2012/7/8*	Tzom Tammuz
+2012/7/20*	Rosh Chodesh Av
+2012/7/28*	Shabbat Hazon
+2012/7/29*	Tish'a B'Av
+2012/8/4*	Shabbat Nachamu
+2012/8/18*	Rosh Chodesh Elul
+2012/8/19*	Rosh Chodesh Elul
+2012/9/16*	Erev Rosh Hashana
+2012/9/17*	Rosh Hashana 5773
+2012/9/18*	Rosh Hashana II
+2012/9/19*	Tzom Gedaliah
+2012/9/22*	Shabbat Shuva
+2012/9/25*	Erev Yom Kippur
+2012/9/26*	Yom Kippur
+2012/9/30*	Erev Sukkot
+2012/10/1*	Sukkot I
+2012/10/2*	Sukkot II
+2012/10/3*	Sukkot III (CH''M)
+2012/10/4*	Sukkot IV (CH''M)
+2012/10/5*	Sukkot V (CH''M)
+2012/10/6*	Sukkot VI (CH''M)
+2012/10/7*	Sukkot VII (Hoshana Raba)
+2012/10/8*	Shmini Atzeret
+2012/10/9*	Simchat Torah
+2012/10/16*	Rosh Chodesh Cheshvan
+2012/10/17*	Rosh Chodesh Cheshvan
+2012/11/15*	Rosh Chodesh Kislev
+2012/12/8*	Chanukah: 1 Candle
+2012/12/9*	Chanukah: 2 Candles
+2012/12/10*	Chanukah: 3 Candles
+2012/12/11*	Chanukah: 4 Candles
+2012/12/12*	Chanukah: 5 Candles
+2012/12/13*	Chanukah: 6 Candles
+2012/12/14*	Rosh Chodesh Tevet
+2012/12/14*	Chanukah: 7 Candles
+2012/12/15*	Chanukah: 8 Candles
+2012/12/16*	Chanukah: 8th Day
+2012/12/23*	Asara B'Tevet
+2013/1/12*	Rosh Chodesh Sh'vat
+2013/1/26*	Tu B'Shvat
+2013/2/9*	Shabbat Shekalim
+2013/2/10*	Rosh Chodesh Adar
+2013/2/11*	Rosh Chodesh Adar
+2013/2/21*	Ta'anit Esther
+2013/2/23*	Shabbat Zachor
+2013/2/24*	Purim
+2013/2/25*	Shushan Purim
+2013/3/2*	Shabbat Parah
+2013/3/9*	Shabbat HaChodesh
+2013/3/12*	Rosh Chodesh Nisan
+2013/3/23*	Shabbat HaGadol
+2013/3/25*	Ta'anit Bechorot
+2013/3/25*	Erev Pesach
+2013/3/26*	Pesach I
+2013/3/27*	Pesach II
+2013/3/28*	Pesach III (CH''M)
+2013/3/29*	Pesach IV (CH''M)
+2013/3/30*	Pesach V (CH''M)
+2013/3/31*	Pesach VI (CH''M)
+2013/4/1*	Pesach VII
+2013/4/2*	Pesach VIII
+2013/4/7*	Yom HaShoah
+2013/4/10*	Rosh Chodesh Iyyar
+2013/4/11*	Rosh Chodesh Iyyar
+2013/4/15*	Yom HaZikaron
+2013/4/16*	Yom HaAtzma'ut
+2013/4/28*	Lag B'Omer
+2013/5/8*	Yom Yerushalayim
+2013/5/10*	Rosh Chodesh Sivan
+2013/5/14*	Erev Shavuot
+2013/5/15*	Shavuot I
+2013/5/16*	Shavuot II
+2013/6/8*	Rosh Chodesh Tamuz
+2013/6/9*	Rosh Chodesh Tamuz
+2013/6/25*	Tzom Tammuz
+2013/7/8*	Rosh Chodesh Av
+2013/7/13*	Shabbat Hazon
+2013/7/16*	Tish'a B'Av
+2013/7/20*	Shabbat Nachamu
+2013/8/6*	Rosh Chodesh Elul
+2013/8/7*	Rosh Chodesh Elul
+2013/9/4*	Erev Rosh Hashana
+2013/9/5*	Rosh Hashana 5774
+2013/9/6*	Rosh Hashana II
+2013/9/7*	Shabbat Shuva
+2013/9/8*	Tzom Gedaliah
+2013/9/13*	Erev Yom Kippur
+2013/9/14*	Yom Kippur
+2013/9/18*	Erev Sukkot
+2013/9/19*	Sukkot I
+2013/9/20*	Sukkot II
+2013/9/21*	Sukkot III (CH''M)
+2013/9/22*	Sukkot IV (CH''M)
+2013/9/23*	Sukkot V (CH''M)
+2013/9/24*	Sukkot VI (CH''M)
+2013/9/25*	Sukkot VII (Hoshana Raba)
+2013/9/26*	Shmini Atzeret
+2013/9/27*	Simchat Torah
+2013/10/4*	Rosh Chodesh Cheshvan
+2013/10/5*	Rosh Chodesh Cheshvan
+2013/11/3*	Rosh Chodesh Kislev
+2013/11/4*	Rosh Chodesh Kislev
+2013/11/27*	Chanukah: 1 Candle
+2013/11/28*	Chanukah: 2 Candles
+2013/11/29*	Chanukah: 3 Candles
+2013/11/30*	Chanukah: 4 Candles
+2013/12/1*	Chanukah: 5 Candles
+2013/12/2*	Chanukah: 6 Candles
+2013/12/3*	Rosh Chodesh Tevet
+2013/12/3*	Chanukah: 7 Candles
+2013/12/4*	Rosh Chodesh Tevet
+2013/12/4*	Chanukah: 8 Candles
+2013/12/5*	Chanukah: 8th Day
+2013/12/12*	Asara B'Tevet
+2014/1/2*	Rosh Chodesh Sh'vat
+2014/1/16*	Tu B'Shvat
+2014/1/31*	Rosh Chodesh Adar I
+2014/2/1*	Rosh Chodesh Adar I
+2014/2/14*	Purim Katan
+2014/3/1*	Shabbat Shekalim
+2014/3/2*	Rosh Chodesh Adar II
+2014/3/3*	Rosh Chodesh Adar II
+2014/3/13*	Ta'anit Esther
+2014/3/15*	Shabbat Zachor
+2014/3/16*	Purim
+2014/3/17*	Shushan Purim
+2014/3/22*	Shabbat Parah
+2014/3/29*	Shabbat HaChodesh
+2014/4/1*	Rosh Chodesh Nisan
+2014/4/12*	Shabbat HaGadol
+2014/4/14*	Ta'anit Bechorot
+2014/4/14*	Erev Pesach
+2014/4/15*	Pesach I
+2014/4/16*	Pesach II
+2014/4/17*	Pesach III (CH''M)
+2014/4/18*	Pesach IV (CH''M)
+2014/4/19*	Pesach V (CH''M)
+2014/4/20*	Pesach VI (CH''M)
+2014/4/21*	Pesach VII
+2014/4/22*	Pesach VIII
+2014/4/27*	Yom HaShoah
+2014/4/30*	Rosh Chodesh Iyyar
+2014/5/1*	Rosh Chodesh Iyyar
+2014/5/5*	Yom HaZikaron
+2014/5/6*	Yom HaAtzma'ut
+2014/5/18*	Lag B'Omer
+2014/5/28*	Yom Yerushalayim
+2014/5/30*	Rosh Chodesh Sivan
+2014/6/3*	Erev Shavuot
+2014/6/4*	Shavuot I
+2014/6/5*	Shavuot II
+2014/6/28*	Rosh Chodesh Tamuz
+2014/6/29*	Rosh Chodesh Tamuz
+2014/7/15*	Tzom Tammuz
+2014/7/28*	Rosh Chodesh Av
+2014/8/2*	Shabbat Hazon
+2014/8/5*	Tish'a B'Av
+2014/8/9*	Shabbat Nachamu
+2014/8/26*	Rosh Chodesh Elul
+2014/8/27*	Rosh Chodesh Elul
+2014/9/24*	Erev Rosh Hashana
+2014/9/25*	Rosh Hashana 5775
+2014/9/26*	Rosh Hashana II
+2014/9/27*	Shabbat Shuva
+2014/9/28*	Tzom Gedaliah
+2014/10/3*	Erev Yom Kippur
+2014/10/4*	Yom Kippur
+2014/10/8*	Erev Sukkot
+2014/10/9*	Sukkot I
+2014/10/10*	Sukkot II
+2014/10/11*	Sukkot III (CH''M)
+2014/10/12*	Sukkot IV (CH''M)
+2014/10/13*	Sukkot V (CH''M)
+2014/10/14*	Sukkot VI (CH''M)
+2014/10/15*	Sukkot VII (Hoshana Raba)
+2014/10/16*	Shmini Atzeret
+2014/10/17*	Simchat Torah
+2014/10/24*	Rosh Chodesh Cheshvan
+2014/10/25*	Rosh Chodesh Cheshvan
+2014/11/23*	Rosh Chodesh Kislev
+2014/12/16*	Chanukah: 1 Candle
+2014/12/17*	Chanukah: 2 Candles
+2014/12/18*	Chanukah: 3 Candles
+2014/12/19*	Chanukah: 4 Candles
+2014/12/20*	Chanukah: 5 Candles
+2014/12/21*	Chanukah: 6 Candles
+2014/12/22*	Rosh Chodesh Tevet
+2014/12/22*	Chanukah: 7 Candles
+2014/12/23*	Rosh Chodesh Tevet
+2014/12/23*	Chanukah: 8 Candles
+2014/12/24*	Chanukah: 8th Day
+2015/1/1*	Asara B'Tevet
+2015/1/21*	Rosh Chodesh Sh'vat
+2015/2/4*	Tu B'Shvat
+2015/2/14*	Shabbat Shekalim
+2015/2/19*	Rosh Chodesh Adar
+2015/2/20*	Rosh Chodesh Adar
+2015/2/28*	Shabbat Zachor
+2015/3/4*	Ta'anit Esther
+2015/3/5*	Purim
+2015/3/6*	Shushan Purim
+2015/3/14*	Shabbat Parah
+2015/3/21*	Rosh Chodesh Nisan
+2015/3/21*	Shabbat HaChodesh
+2015/3/28*	Shabbat HaGadol
+2015/4/2*	Ta'anit Bechorot
+2015/4/3*	Erev Pesach
+2015/4/4*	Pesach I
+2015/4/5*	Pesach II
+2015/4/6*	Pesach III (CH''M)
+2015/4/7*	Pesach IV (CH''M)
+2015/4/8*	Pesach V (CH''M)
+2015/4/9*	Pesach VI (CH''M)
+2015/4/10*	Pesach VII
+2015/4/11*	Pesach VIII
+2015/4/16*	Yom HaShoah
+2015/4/19*	Rosh Chodesh Iyyar
+2015/4/20*	Rosh Chodesh Iyyar
+2015/4/22*	Yom HaZikaron
+2015/4/23*	Yom HaAtzma'ut
+2015/5/7*	Lag B'Omer
+2015/5/17*	Yom Yerushalayim
+2015/5/19*	Rosh Chodesh Sivan
+2015/5/23*	Erev Shavuot
+2015/5/24*	Shavuot I
+2015/5/25*	Shavuot II
+2015/6/17*	Rosh Chodesh Tamuz
+2015/6/18*	Rosh Chodesh Tamuz
+2015/7/5*	Tzom Tammuz
+2015/7/17*	Rosh Chodesh Av
+2015/7/25*	Shabbat Hazon
+2015/7/26*	Tish'a B'Av
+2015/8/1*	Shabbat Nachamu
+2015/8/15*	Rosh Chodesh Elul
+2015/8/16*	Rosh Chodesh Elul
+2015/9/13*	Erev Rosh Hashana
+2015/9/14*	Rosh Hashana 5776
+2015/9/15*	Rosh Hashana II
+2015/9/16*	Tzom Gedaliah
+2015/9/19*	Shabbat Shuva
+2015/9/22*	Erev Yom Kippur
+2015/9/23*	Yom Kippur
+2015/9/27*	Erev Sukkot
+2015/9/28*	Sukkot I
+2015/9/29*	Sukkot II
+2015/9/30*	Sukkot III (CH''M)
+2015/10/1*	Sukkot IV (CH''M)
+2015/10/2*	Sukkot V (CH''M)
+2015/10/3*	Sukkot VI (CH''M)
+2015/10/4*	Sukkot VII (Hoshana Raba)
+2015/10/5*	Shmini Atzeret
+2015/10/6*	Simchat Torah
+2015/10/13*	Rosh Chodesh Cheshvan
+2015/10/14*	Rosh Chodesh Cheshvan
+2015/11/12*	Rosh Chodesh Kislev
+2015/11/13*	Rosh Chodesh Kislev
+2015/12/6*	Chanukah: 1 Candle
+2015/12/7*	Chanukah: 2 Candles
+2015/12/8*	Chanukah: 3 Candles
+2015/12/9*	Chanukah: 4 Candles
+2015/12/10*	Chanukah: 5 Candles
+2015/12/11*	Chanukah: 6 Candles
+2015/12/12*	Rosh Chodesh Tevet
+2015/12/12*	Chanukah: 7 Candles
+2015/12/13*	Rosh Chodesh Tevet
+2015/12/13*	Chanukah: 8 Candles
+2015/12/14*	Chanukah: 8th Day
+2015/12/22*	Asara B'Tevet
+
+/*
+ * The calendar data below was for 2007, so it is commented out.
+ */
+
+/*
+ * Jewish calendar for the CE year 2007
+ * 11 Tevet 5767 - 22 tevet 5768
 
 01/06*	Parshas Vayechi
 01/13*	Parshas Shemos
@@ -223,5 +690,6 @@
 12/22*	Parshas Vayechi
 12/29*	Parshas Shemos
 
+*/
 
 #endif /* !_calendar_judaic_ */

Modified: head/usr.bin/calendar/parsedata.c
==============================================================================
--- head/usr.bin/calendar/parsedata.c	Mon Aug 30 22:28:04 2010	(r212034)
+++ head/usr.bin/calendar/parsedata.c	Mon Aug 30 22:45:32 2010	(r212035)
@@ -87,9 +87,9 @@ static int
 determinestyle(char *date, int *flags,
     char *month, int *imonth, char *dayofmonth, int *idayofmonth,
     char *dayofweek, int *idayofweek, char *modifieroffset,
-    char *modifierindex, char *specialday)
+    char *modifierindex, char *specialday, char *year, int *iyear)
 {
-	char *p, *p1, *p2;
+	char *p, *p1, *p2, *py;
 	const char *dow, *pmonth;
 	char pold;
 	size_t len, offset;
@@ -97,6 +97,8 @@ determinestyle(char *date, int *flags,
 	*flags = F_NONE;
 	*month = '\0';
 	*imonth = 0;
+	*year = '\0';
+	*iyear = 0;
 	*dayofmonth = '\0';
 	*idayofmonth = 0;
 	*dayofweek = '\0';
@@ -191,6 +193,22 @@ determinestyle(char *date, int *flags,
 	p2 = p + 1;
 	/* Now p2 points to the next field and p1 to the first field */
 
+	if ((py = strchr(p2, '/')) != NULL) {
+		/* We have a year in the string. Now this is getting tricky */
+		strcpy(year, p1);
+		*iyear = (int)strtol(year, NULL, 10);
+		p1 = p2;
+		p2 = py + 1;
+		*py = 0;
+		*flags |= F_YEAR;
+	}
+
+	/*
+	printf("p1: %s\n", p1);
+	printf("p2: %s\n", p2);
+	printf("year: %s\n", year);
+	*/
+
 	/* Check if there is a month-string in the date */
 	if ((checkmonth(p1, &len, &offset, &pmonth) != 0)
 	 || (checkmonth(p2, &len, &offset, &pmonth) != 0 && (p2 = p1))) {
@@ -323,7 +341,8 @@ remember(int *rememberindex, int *y, int
 static void
 debug_determinestyle(int dateonly, char *date, int flags, char *month,
     int imonth, char *dayofmonth, int idayofmonth, char *dayofweek,
-    int idayofweek, char *modifieroffset, char *modifierindex, char *specialday)
+    int idayofweek, char *modifieroffset, char *modifierindex, char *specialday,
+    char *year, int iyear)
 {
 
 	if (dateonly != 0) {
@@ -336,6 +355,8 @@ debug_determinestyle(int dateonly, char 
 		printf("modifieroffset: |%s|\n", modifieroffset);
 	if (modifierindex[0] != '\0')
 		printf("modifierindex: |%s|\n", modifierindex);
+	if (year[0] != '\0')
+		printf("year: |%s| (%d)\n", year, iyear);
 	if (month[0] != '\0')
 		printf("month: |%s| (%d)\n", month, imonth);
 	if (dayofmonth[0] != '\0')
@@ -371,8 +392,10 @@ parsedaymonth(char *date, int *yearp, in
     char **edp)
 {
 	char month[100], dayofmonth[100], dayofweek[100], modifieroffset[100];
+	char syear[100];
 	char modifierindex[100], specialday[100];
-	int idayofweek = -1, imonth = -1, idayofmonth = -1, year, remindex;
+	int idayofweek = -1, imonth = -1, idayofmonth = -1, iyear = -1;
+	int year, remindex;
 	int d, m, dow, rm, rd, offset;
 	char *ed;
 	int retvalsign = 1;
@@ -394,10 +417,10 @@ parsedaymonth(char *date, int *yearp, in
 	if (debug)
 		debug_determinestyle(1, date, *flags, month, imonth,
 		    dayofmonth, idayofmonth, dayofweek, idayofweek,
-		    modifieroffset, modifierindex, specialday);
+		    modifieroffset, modifierindex, specialday, syear, iyear);
 	if (determinestyle(date, flags, month, &imonth, dayofmonth,
 	    &idayofmonth, dayofweek, &idayofweek, modifieroffset,
-	    modifierindex, specialday) == 0) {
+	    modifierindex, specialday, syear, &iyear) == 0) {
 		if (debug)
 			printf("Failed!\n");
 		return (0);
@@ -406,10 +429,18 @@ parsedaymonth(char *date, int *yearp, in
 	if (debug)
 		debug_determinestyle(0, date, *flags, month, imonth,
 		    dayofmonth, idayofmonth, dayofweek, idayofweek,
-		    modifieroffset, modifierindex, specialday);
+		    modifieroffset, modifierindex, specialday, syear, iyear);
 
 	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 ((lflags & F_YEAR) != 0)
+			if (iyear != year)
+				continue;
+		lflags &= ~F_YEAR;
+
 		/* Get important dates for this year */
 		yearinfo = years;
 		while (yearinfo != NULL) {
@@ -452,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,
@@ -461,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,
@@ -470,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;
@@ -481,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;
@@ -492,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;
@@ -503,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) {
@@ -517,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);
@@ -553,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]) {
@@ -567,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))
@@ -580,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))
@@ -593,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))
@@ -606,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,
@@ -628,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,
@@ -649,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)) {
@@ -662,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)) {
@@ -677,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)) {
@@ -690,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)) {
@@ -705,9 +736,9 @@ 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);
+		    modifieroffset, modifierindex, specialday, syear, iyear);
 		retvalsign = -1;
 	}
 
@@ -723,6 +754,8 @@ showflags(int flags)
 	static char s[1000];
 	s[0] = '\0';
 
+	if ((flags & F_YEAR) != 0)
+		strcat(s, "year ");
 	if ((flags & F_MONTH) != 0)
 		strcat(s, "month ");
 	if ((flags & F_DAYOFWEEK) != 0)


More information about the svn-src-all mailing list