Author: edwin
Date: Thu Oct 14 21:38:20 2010
New Revision: 213870
URL: http://svn.freebsd.org/changeset/base/213870

Log:
  MFC of r211517 r212035
  
  r211517:
  '\0' -> 0
  
  Fix silly mistake by being overly zeaolous[sp] of applying the style rules.
  
  r212035:
  For calendars which don't match the solar-based Gregorian calendar,
  be able to specify a year string in an entry.

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

Modified: stable/8/usr.bin/calendar/calendar.1
==============================================================================
--- stable/8/usr.bin/calendar/calendar.1        Thu Oct 14 21:38:06 2010        
(r213869)
+++ stable/8/usr.bin/calendar/calendar.1        Thu Oct 14 21:38:20 2010        
(r213870)
@@ -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: stable/8/usr.bin/calendar/calendar.h
==============================================================================
--- stable/8/usr.bin/calendar/calendar.h        Thu Oct 14 21:38:06 2010        
(r213869)
+++ stable/8/usr.bin/calendar/calendar.h        Thu Oct 14 21:38:20 2010        
(r213870)
@@ -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: stable/8/usr.bin/calendar/calendars/calendar.judaic
==============================================================================
--- stable/8/usr.bin/calendar/calendars/calendar.judaic Thu Oct 14 21:38:06 
2010        (r213869)
+++ stable/8/usr.bin/calendar/calendars/calendar.judaic Thu Oct 14 21:38:20 
2010        (r213870)
@@ -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: stable/8/usr.bin/calendar/parsedata.c
==============================================================================
--- stable/8/usr.bin/calendar/parsedata.c       Thu Oct 14 21:38:06 2010        
(r213869)
+++ stable/8/usr.bin/calendar/parsedata.c       Thu Oct 14 21:38:20 2010        
(r213870)
@@ -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)
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to